diff --git a/ChangeLog b/ChangeLog index 0d8eb949d7..2df65ea262 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Apr 23 14:05:40 2003 Dave Thomas + + * lib/ipaddr.rb (include?): Support non-IPAddr parameters. + [ruby-core:00980] + Wed Apr 23 13:31:10 2003 Yukihiro Matsumoto * lib/cgi.rb (CGI::QueryExtension::[]): always return Value diff --git a/lib/ipaddr.rb b/lib/ipaddr.rb index 2a7419aa46..b8befe8499 100644 --- a/lib/ipaddr.rb +++ b/lib/ipaddr.rb @@ -131,9 +131,13 @@ class IPAddr other_addr = other.to_i other_family = other.family end - if family != other_family - return false - end + else # Not IPAddr - assume integer in same family as us + other_addr = other.to_i + other_family = family + end + + if family != other_family + return false end return ((addr & mask_addr) == (other_addr & mask_addr)) end @@ -685,6 +689,12 @@ class TC_Operator < Test::Unit::TestCase assert_equal(true, net1.include?(IPAddr.new("192.168.2.0"))) assert_equal(true, net1.include?(IPAddr.new("192.168.2.255"))) assert_equal(false, net1.include?(IPAddr.new("192.168.3.0"))) + # test with integer parameter + int = (192 << 24) + (168 << 16) + (2 << 8) + 13 + + assert_equal(true, net1.include?(int)) + assert_equal(false, net1.include?(int+255)) + end end