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;
end
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
#
......@@ -1028,7 +1048,7 @@ module IPAddress;
# Tweaked to remove the #upto(32)
def newprefix(num)
return @prefix + (Math::log2(num).to_i)
return @prefix + (Math::log2(num).ceil )
end
def sum_first_found(arr)
......
......@@ -64,6 +64,11 @@ class IPv4Test < Minitest::Test
"10.1.1.1" => 8,
"150.1.1.1" => 16,
"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
......@@ -551,6 +556,14 @@ class IPv4Test < Minitest::Test
assert_equal x.split(256).length, 256
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment