module Lib::DHCP::Option::Type::IPAddress

Public Class Methods

included(base) click to toggle source
# File lib/lib/dhcp/options/type/ip_address.rb, line 13
def self.included(base)
  base.extend ClassMethods
end
new(*address) click to toggle source
Calls superclass method
# File lib/lib/dhcp/options/type/ip_address.rb, line 17
def initialize(*address)
  raise ArgumentError, 'To few argument - nil' if address.nil?
  oid = self.class.name.split('::').last.sub(/Option/, '').to_i
  if address.size == 1
    address = address.first.split(',') if address.first.is_a? ::String
  end
  case address.size
    when 0
      raise ArgumentError, 'To few argument - 0'
    when 1
      address = address.first
      super oid, (address.is_a? Net::Address::IPv4) ? address : Net::Address::IPv4.new(address)
    else
      super oid, address.map {|ip| (ip.is_a? Net::Address::IPv4) ? ip : Net::Address::IPv4.new(ip)}
  end
end

Public Instance Methods

len() click to toggle source
# File lib/lib/dhcp/options/type/ip_address.rb, line 48
def len
  if @payload.is_a? Array
    @payload.size * 4
  else
    4
  end
end
pack() click to toggle source
# File lib/lib/dhcp/options/type/ip_address.rb, line 38
def pack
  if @payload.is_a? Array
    #len = @payload.size * 4
    [@oid, len, @payload.map(&:to_i)].flatten.pack('C2N*')
  else
    raise ArgumentError, 'Argument must be a IP ' unless @payload.is_a? Net::Address::IPv4
    [@oid, 4, @payload.to_i].pack('C2N')
  end
end
payload=(address) click to toggle source
# File lib/lib/dhcp/options/type/ip_address.rb, line 56
def payload=(address)
  (address.is_a? Net::Address::IPv4) ? @payload = address : @payload = Net::Address::IPv4.new(address)
end
to_s() click to toggle source
# File lib/lib/dhcp/options/type/ip_address.rb, line 34
def to_s
  @payload.to_s
end