diff options
-rw-r--r-- | lib/ipaddr.rb | 3 | ||||
-rw-r--r-- | test/test_ipaddr.rb | 5 |
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/ipaddr.rb b/lib/ipaddr.rb index 9cc210c307..51ad081e23 100644 --- a/lib/ipaddr.rb +++ b/lib/ipaddr.rb @@ -510,6 +510,9 @@ class IPAddr @addr = addr if family[0] @family = family[0] + if @family == Socket::AF_INET + @mask_addr &= IN4MASK + end end return self end diff --git a/test/test_ipaddr.rb b/test/test_ipaddr.rb index 2afe749db3..bd163283b2 100644 --- a/test/test_ipaddr.rb +++ b/test/test_ipaddr.rb @@ -360,6 +360,11 @@ class TC_Operator < Test::Unit::TestCase end + def test_native_coerce_mask_addr + assert_equal(IPAddr.new("0.0.0.2/255.255.255.255"), IPAddr.new("::2").native) + assert_equal(IPAddr.new("0.0.0.2/255.255.255.255").to_range, IPAddr.new("::2").native.to_range) + end + def test_loopback? assert_equal(true, IPAddr.new('127.0.0.1').loopback?) assert_equal(true, IPAddr.new('127.127.1.1').loopback?) |