module NetAddr

Constants

F128

128 bits worth of '1'

F32

32 bits worth of '1'

Public Class Methods

ipv4_prefix_len(size) click to toggle source

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
parse_ip(ip) click to toggle source

parse_ip parses a string into an IPv4 or IPv6

# File lib/netaddr.rb, line 41
def parse_ip(ip)
        if (ip.include?(":"))
                return IPv6.parse(ip)
        end
        return IPv4.parse(ip)
end
parse_net(net) click to toggle source

parse_net parses a string into an IPv4Net or IPv6Net

# File lib/netaddr.rb, line 50
def parse_net(net)
        if (net.include?(".")) # ipv4
                return IPv4Net.parse(net)
        end
        return IPv6Net.parse(net)
end
sort_IPv4(list) click to toggle source

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(list) click to toggle source

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(list) click to toggle source

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(list) click to toggle source

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(list) click to toggle source

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(list) click to toggle source

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(size) click to toggle source

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
parse_ip(ip) click to toggle source

parse_ip parses a string into an IPv4 or IPv6

# File lib/netaddr.rb, line 41
def parse_ip(ip)
        if (ip.include?(":"))
                return IPv6.parse(ip)
        end
        return IPv4.parse(ip)
end
parse_net(net) click to toggle source

parse_net parses a string into an IPv4Net or IPv6Net

# File lib/netaddr.rb, line 50
def parse_net(net)
        if (net.include?(".")) # ipv4
                return IPv4Net.parse(net)
        end
        return IPv6Net.parse(net)
end
sort_IPv4(list) click to toggle source

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(list) click to toggle source

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(list) click to toggle source

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(list) click to toggle source

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(list) click to toggle source

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(list) click to toggle source

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