module NetAddr
Constants
- F128
128 bits worth of '1'
- F32
32 bits worth of '1'
Public Class Methods
ipv4_prefix_len
returns the prefix length needed to hold the number of IP addresses specified by “size”.
# File lib/netaddr.rb, line 26 def ipv4_prefix_len(size) prefix_len = 32 32.downto(0) do |i| hostbits = 32 - prefix_len max = 1 << hostbits if (size <= max) break end prefix_len -= 1 end return prefix_len end
sort_IPv4
sorts a list of IPv4
objects in ascending order. It will return a new list with any non IPv4
objects removed.
# File lib/netaddr.rb, line 60 def sort_IPv4(list) if ( !list.kind_of?(Array) ) raise ArgumentError, "Expected an Array for 'list' but got a #{list.class}." end filtered = Util.filter_IPv4(list) return Util.quick_sort(filtered) end
sort_IPv4Net
sorts a list of IPv4Net
objects in ascending order. It will return a new list with any non IPv4Net
objects removed.
# File lib/netaddr.rb, line 82 def sort_IPv4Net(list) if ( !list.kind_of?(Array) ) raise ArgumentError, "Expected an Array for 'list' but got a #{list.class}." end filtered = Util.filter_IPv4Net(list) return Util.quick_sort(filtered) end
sort_IPv6
sorts a list of IPv6
objects in ascending order. It will return a new list with any non IPv6
objects removed.
# File lib/netaddr.rb, line 71 def sort_IPv6(list) if ( !list.kind_of?(Array) ) raise ArgumentError, "Expected an Array for 'list' but got a #{list.class}." end filtered = Util.filter_IPv6(list) return Util.quick_sort(filtered) end
sort_IPv6Net
sorts a list of IPv6Net
objects in ascending order. It will return a new list with any non IPv6Net
objects removed.
# File lib/netaddr.rb, line 93 def sort_IPv6Net(list) if ( !list.kind_of?(Array) ) raise ArgumentError, "Expected an Array for 'list' but got a #{list.class}." end filtered = Util.filter_IPv6Net(list) return Util.quick_sort(filtered) end
summ_IPv4Net
summarizes a list of IPv4Net
objects as much as possible. It will return a new list with any non IPv4Net
objects removed.
# File lib/netaddr.rb, line 104 def summ_IPv4Net(list) list = Util.filter_IPv4Net(list) if (list.length>1) list = Util.discard_subnets(list) return Util.summ_peers(list) end return [].concat(list) end
summ_IPv6Net
summarizes a list of IPv6Net
objects as much as possible. It will return a new list with any non IPv6Net
objects removed.
# File lib/netaddr.rb, line 116 def summ_IPv6Net(list) list = Util.filter_IPv6Net(list) if (list.length>1) list = Util.discard_subnets(list) return Util.summ_peers(list) end return [].concat(list) end
Private Instance Methods
ipv4_prefix_len
returns the prefix length needed to hold the number of IP addresses specified by “size”.
# File lib/netaddr.rb, line 26 def ipv4_prefix_len(size) prefix_len = 32 32.downto(0) do |i| hostbits = 32 - prefix_len max = 1 << hostbits if (size <= max) break end prefix_len -= 1 end return prefix_len end
sort_IPv4
sorts a list of IPv4
objects in ascending order. It will return a new list with any non IPv4
objects removed.
# File lib/netaddr.rb, line 60 def sort_IPv4(list) if ( !list.kind_of?(Array) ) raise ArgumentError, "Expected an Array for 'list' but got a #{list.class}." end filtered = Util.filter_IPv4(list) return Util.quick_sort(filtered) end
sort_IPv4Net
sorts a list of IPv4Net
objects in ascending order. It will return a new list with any non IPv4Net
objects removed.
# File lib/netaddr.rb, line 82 def sort_IPv4Net(list) if ( !list.kind_of?(Array) ) raise ArgumentError, "Expected an Array for 'list' but got a #{list.class}." end filtered = Util.filter_IPv4Net(list) return Util.quick_sort(filtered) end
sort_IPv6
sorts a list of IPv6
objects in ascending order. It will return a new list with any non IPv6
objects removed.
# File lib/netaddr.rb, line 71 def sort_IPv6(list) if ( !list.kind_of?(Array) ) raise ArgumentError, "Expected an Array for 'list' but got a #{list.class}." end filtered = Util.filter_IPv6(list) return Util.quick_sort(filtered) end
sort_IPv6Net
sorts a list of IPv6Net
objects in ascending order. It will return a new list with any non IPv6Net
objects removed.
# File lib/netaddr.rb, line 93 def sort_IPv6Net(list) if ( !list.kind_of?(Array) ) raise ArgumentError, "Expected an Array for 'list' but got a #{list.class}." end filtered = Util.filter_IPv6Net(list) return Util.quick_sort(filtered) end
summ_IPv4Net
summarizes a list of IPv4Net
objects as much as possible. It will return a new list with any non IPv4Net
objects removed.
# File lib/netaddr.rb, line 104 def summ_IPv4Net(list) list = Util.filter_IPv4Net(list) if (list.length>1) list = Util.discard_subnets(list) return Util.summ_peers(list) end return [].concat(list) end
summ_IPv6Net
summarizes a list of IPv6Net
objects as much as possible. It will return a new list with any non IPv6Net
objects removed.
# File lib/netaddr.rb, line 116 def summ_IPv6Net(list) list = Util.filter_IPv6Net(list) if (list.length>1) list = Util.discard_subnets(list) return Util.summ_peers(list) end return [].concat(list) end