# \[Feature:1.9\] IPAddr#hash should consider a mask\_addr

**URL:** <https://www.ruby-forum.com/t/feature-1-9-ipaddr-hash-should-consider-a-mask-addr/173180>\
**Category:** Development\
**Created:** [August 4, 2009, 3:27pm UTC](https://www.ruby-forum.com/t/feature-1-9-ipaddr-hash-should-consider-a-mask-addr/173180 "2009-08-04T15:27:00Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nobuhiro\_IMAI](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/9f8e36/32.png) [@Nobuhiro\_IMAI](https://www.ruby-forum.com/u/Nobuhiro_IMAI)\
**Post date:** [August 4, 2009, 3:27pm UTC](https://www.ruby-forum.com/t/feature-1-9-ipaddr-hash-should-consider-a-mask-addr/173180/1 "2009-08-04T15:27:00Z")

</div>

e$B$$$^$$$G$9!#e(B

r24388  
e$B$G$9$,!“%M%C%H%^%9%/$,9MN8$5$l$F$$$J$$$N$G!”%"%I%l%9$,F1$8$G%M%Ce(B  
e$B%H%^%9%/$,0c$&%\*%V%8%'%/%H$bF1$8$b$N$@$H$\_$J$5$l$F$7$^$$$^$9!#e(B

> > a1 = IPAddr.new(“192.168.2.0/24”)  
> > =\> #\<IPAddr: IPv4:192.168.2.0/255.255.255.0\>  
> > a2 = IPAddr.new(“192.168.2.0/25”)  
> > =\> #\<IPAddr: IPv4:192.168.2.0/255.255.255.128\>  
> > {a1 =\> ‘ipv4’, a2 =\> ‘ipv4’}.size  
> > =\> 1

## e$B$3$l$i$OJL$NHO0O$r;X$9%\*%V%8%'%/%H$@$H;W$&$N$G!“%O%C%7%e$N%-!\<$H$7$F$Oe(B e$BJL$N$b$N$G$”$k$H$&$l$7$$$G$9!#$H$j$"$($:%Q%C%A$G$9!#e(B

Nobuhiro IMAI [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Key fingerprint = F39E D552 545D 7C64 D690 F644 5A15 746C BD8E 7106

# Index: lib/ipaddr.rb

— lib/ipaddr.rb (revision 24388)  
+++ lib/ipaddr.rb (working copy)  
@@ -338,7 +338,7 @@

# Returns a hash value used by Hash, Set, and Array classes

def hash

- return (@addr.hash \<\< 1) | (ipv4? ? 0 : 1)

- return ([@addr, @mask\_addr].hash \<\< 1) | (ipv4? ? 0 : 1)  
end

# Creates a Range object for the network address.

@@ -827,17 +827,19 @@  
a4 = IPAddr.new(‘3ffe:505:2::1’)  
a5 = IPAddr.new(‘127.0.0.1’)  
a6 = IPAddr.new(‘::1’)

- a7 = IPAddr.new(‘192.168.2.0/25’)
- a8 = IPAddr.new(‘192.168.2.0/25’)

- h = { a1 =\> ‘ipv4’, a2 =\> ‘ipv4’, a3 =\> ‘ipv6’, a4 =\> ‘ipv6’, a5 =\>  
‘ipv4’, a6 =\> ‘ipv6’ }
- assert\_equal(4, h.size)

- h = { a1 =\> ‘ipv4’, a2 =\> ‘ipv4’, a3 =\> ‘ipv6’, a4 =\> ‘ipv6’, a5 =\>  
‘ipv4’, a6 =\> ‘ipv6’, a7 =\> ‘ipv4’, a8 =\> ‘ipv4’}

- assert\_equal(5, h.size)  
assert\_equal(‘ipv4’, h[a1])  
assert\_equal(‘ipv4’, h[a2])  
assert\_equal(‘ipv6’, h[a3])  
assert\_equal(‘ipv6’, h[a4])

- s = Set[a1, a2, a3, a4, a5, a6]
- assert\_equal(4, s.size)

- s = Set[a1, a2, a3, a4, a5, a6, a7, a8]
- assert\_equal(5, s.size)  
assert\_equal(true, s.include?(a1))  
assert\_equal(true, s.include?(a2))  
assert\_equal(true, s.include?(a3))

---

<div class="post-metadata">

**Author:** ![Nobuhiro\_IMAI](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/9f8e36/32.png) [@Nobuhiro\_IMAI](https://www.ruby-forum.com/u/Nobuhiro_IMAI)\
**Post date:** [August 5, 2009, 5:03am UTC](https://www.ruby-forum.com/t/feature-1-9-ipaddr-hash-should-consider-a-mask-addr/173180/2 "2009-08-05T05:03:39Z")

</div>

At Tue, 4 Aug 2009 22:26:06 +0900,  
Nobuhiro IMAI wrote:

> ã“ã‚Œã‚‰ã¯åˆ¥ã®ç¯„å›²ã‚’æŒ‡ã™ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã ã¨æ€ã†ã®ã§ã€ãƒãƒƒã‚·ãƒ¥ã®ã‚­ãƒ¼ã¨ã—ã¦ã¯  
> åˆ¥ã®ã‚‚ã®ã§ã‚ã‚‹ã¨ã†ã‚Œã—ã„ã§ã™ã€‚ã¨ã‚Šã‚ãˆãšãƒ‘ãƒƒãƒã§ã™ã€‚

ã‚ã€ç¢ºã‹ã«ã€‚ã‚ã¨ã§å–ã‚Šè¾¼ã¿ã¾ã™ã€‚

---

<div class="post-metadata">

**Author:** ![Nobuhiro\_IMAI](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/9f8e36/32.png) [@Nobuhiro\_IMAI](https://www.ruby-forum.com/u/Nobuhiro_IMAI)\
**Post date:** [August 5, 2009, 5:17pm UTC](https://www.ruby-forum.com/t/feature-1-9-ipaddr-hash-should-consider-a-mask-addr/173180/3 "2009-08-05T17:17:40Z")

</div>

e$B%A%1%C%He(B #1877 e$B$,99?7$5$l$^$7$?!#e(B (by Akinori MUSHA)

e$B%9%F!\<%?%9e(B Opene$B$+$ie(BClosede$B$KJQ99e(B  
e$B?JD=e(B % 0e$B$+$ie(B100e$B$KJQ99e(B

## Applied in changeset r24411.

[http://redmine.ruby-lang.org/issues/show/1877](http://redmine.ruby-lang.org/issues/show/1877)
