Skip to content
Snippets Groups Projects
Commit 6bf73cfc authored by Mike Mackintosh's avatar Mike Mackintosh
Browse files

added #to range and fixed #40

parent 09bde2a5
No related branches found
No related tags found
No related merge requests found
...@@ -640,6 +640,26 @@ module IPAddress; ...@@ -640,6 +640,26 @@ module IPAddress;
end end
alias_method :arpa, :reverse alias_method :arpa, :reverse
#
# Return a list of IP's between @address
# and the supplied IP
#
# ip = IPAddress("172.16.100.51/32")
#
# ip.to("172.16.100.100")
# #=> ["172.16.100.51",
# "172.16.100.52",
# ...
# "172.16.100.99",
# "172.16.100.100"]
#
def to(e)
unless e.is_a? IPAddress::IPv4
e = IPv4.new(e)
end
Range.new(@u32, e.to_u32).map{|i| IPAddress.ntoa(i) }
end
# #
# Splits a network into different subnets # Splits a network into different subnets
# #
...@@ -1028,7 +1048,7 @@ module IPAddress; ...@@ -1028,7 +1048,7 @@ module IPAddress;
# Tweaked to remove the #upto(32) # Tweaked to remove the #upto(32)
def newprefix(num) def newprefix(num)
return @prefix + (Math::log2(num).to_i) return @prefix + (Math::log2(num).ceil )
end end
def sum_first_found(arr) def sum_first_found(arr)
......
...@@ -64,6 +64,11 @@ class IPv4Test < Minitest::Test ...@@ -64,6 +64,11 @@ class IPv4Test < Minitest::Test
"10.1.1.1" => 8, "10.1.1.1" => 8,
"150.1.1.1" => 16, "150.1.1.1" => 16,
"200.1.1.1" => 24 } "200.1.1.1" => 24 }
@in_range = {
"10.32.0.1" => ["10.32.0.253", 253],
"192.0.0.0" => ["192.1.255.255", 131072]
}
end end
...@@ -551,6 +556,14 @@ class IPv4Test < Minitest::Test ...@@ -551,6 +556,14 @@ class IPv4Test < Minitest::Test
assert_equal x.split(256).length, 256 assert_equal x.split(256).length, 256
end end
end end
def test_in_range
@in_range.each do |s,d|
ip = @klass.new(s)
assert_equal ip.to(d[0]).length, d[1]
end
end
end # class IPv4Test end # class IPv4Test
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment