diff --git a/lib/ipaddr.rb b/lib/ipaddr.rb index 5df798f..7892e5e 100644 --- a/lib/ipaddr.rb +++ b/lib/ipaddr.rb @@ -499,6 +499,7 @@ def set(addr, *family) if addr < 0 || addr > IN4MASK raise InvalidAddressError, "invalid address: #{@addr}" end + @mask_addr &= IN4MASK when Socket::AF_INET6 if addr < 0 || addr > IN6MASK raise InvalidAddressError, "invalid address: #{@addr}" diff --git a/test/test_ipaddr.rb b/test/test_ipaddr.rb index 2afe749..bd16328 100644 --- a/test/test_ipaddr.rb +++ b/test/test_ipaddr.rb @@ -360,6 +360,11 @@ def test_include? 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?)