aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/ipaddr.rb3
-rw-r--r--test/test_ipaddr.rb5
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?)