File tree 2 files changed +8
-25
lines changed
2 files changed +8
-25
lines changed Original file line number Diff line number Diff line change @@ -168,34 +168,15 @@ def mask(prefixlen)
168
168
# net1 = IPAddr.new("192.168.2.0/24")
169
169
# net2 = IPAddr.new("192.168.2.100")
170
170
# net3 = IPAddr.new("192.168.3.0")
171
+ # net4 = IPAddr.new("192.168.2.0/16")
171
172
# p net1.include?(net2) #=> true
172
173
# p net1.include?(net3) #=> false
174
+ # p net1.include?(net4) #=> false
175
+ # p net4.include?(net1) #=> true
173
176
def include? ( other )
174
- other = coerce_other ( other )
175
- if ipv4_mapped?
176
- if ( @mask_addr >> 32 ) != 0xffffffffffffffffffffffff
177
- return false
178
- end
179
- mask_addr = ( @mask_addr & IN4MASK )
180
- addr = ( @addr & IN4MASK )
181
- family = Socket ::AF_INET
182
- else
183
- mask_addr = @mask_addr
184
- addr = @addr
185
- family = @family
186
- end
187
- if other . ipv4_mapped?
188
- other_addr = ( other . to_i & IN4MASK )
189
- other_family = Socket ::AF_INET
190
- else
191
- other_addr = other . to_i
192
- other_family = other . family
193
- end
194
-
195
- if family != other_family
196
- return false
197
- end
198
- return ( ( addr & mask_addr ) == ( other_addr & mask_addr ) )
177
+ range = to_range
178
+ other = coerce_other ( other ) . to_range
179
+ range . begin <= other . begin && range . end >= other . end
199
180
end
200
181
alias === include?
201
182
Original file line number Diff line number Diff line change @@ -292,6 +292,8 @@ def test_include?
292
292
assert_equal ( true , net1 . include? ( IPAddr . new ( "192.168.2.0" ) ) )
293
293
assert_equal ( true , net1 . include? ( IPAddr . new ( "192.168.2.255" ) ) )
294
294
assert_equal ( false , net1 . include? ( IPAddr . new ( "192.168.3.0" ) ) )
295
+ assert_equal ( true , net1 . include? ( IPAddr . new ( "192.168.2.0/28" ) ) )
296
+ assert_equal ( false , net1 . include? ( IPAddr . new ( "192.168.2.0/16" ) ) )
295
297
# test with integer parameter
296
298
int = ( 192 << 24 ) + ( 168 << 16 ) + ( 2 << 8 ) + 13
297
299
You can’t perform that action at this time.
0 commit comments