class Iface::IpAddress

Represents an IP address including prefix length

Public Class Methods

create(str) click to toggle source
# File lib/iface/ip_address.rb, line 8
def self.create(str)
  ipaddr = IPAddr.new(str)
  (ipaddr.ipv4? ? IpV4Address : IpV6Address).new(ipaddr)
end
new(ip_address) click to toggle source
# File lib/iface/ip_address.rb, line 13
def initialize(ip_address)
  @ipaddr = ip_address.is_a?(IPAddr) ? ip_address : IPAddr.new(ip_address)
  @mask_addr = @ipaddr.instance_eval { @mask_addr }
  @_bitmask = @mask_addr.to_s(2)
  @inverse_mask_addr = @_bitmask.tr('01', '10').to_i(2)
end

Public Instance Methods

==(other) click to toggle source
# File lib/iface/ip_address.rb, line 47
def ==(other)
  self.class == other.class && __state__ == other.__state__
end
cidr_mask() click to toggle source
# File lib/iface/ip_address.rb, line 20
def cidr_mask
  case diff = full_mask - @mask_addr
  when 0
    full_cidr_mask
  when 1
    full_cidr_mask - 1
  else
    full_cidr_mask - Math.log2(diff).ceil
  end
end
full_cidr_mask() click to toggle source
# File lib/iface/ip_address.rb, line 43
def full_cidr_mask
  raise NotImplementedError
end
full_mask() click to toggle source
# File lib/iface/ip_address.rb, line 39
def full_mask
  raise NotImplementedError
end
to_i() click to toggle source
# File lib/iface/ip_address.rb, line 31
def to_i
  @ipaddr.to_i
end
to_s() click to toggle source
# File lib/iface/ip_address.rb, line 35
def to_s
  @ipaddr.to_s
end

Protected Instance Methods

__state__() click to toggle source
# File lib/iface/ip_address.rb, line 53
def __state__
  @ipaddr
end