class Lib::DHCP::Option

Constants

ARP_TIMEOUT
ASSOCIATED_IP
BOOT_FILE_NAME
BOOT_FILE_SIZE
BROADCAST_ADDR
CLIENT_IDENTIFIER
CLIENT_LAST_TRANSACTION_TIME
DNS_SERVER
DOMAIN_NAME
DO_MASK_DISCOVER
DO_ROUTE_DISCOVER
DUMP_FILE
END_OPTION
ETHERNET_ENCAPSULATION
EXTENSION_PATH
FINGER_SERVER
HOSTNAME
IMP_SERVER
IP_FORWARD
IP_TTL
IRC_SERVER
LEASE_TIME
LOCAL_SUBNETS
LOG_SERVER
LPR_SERVER
MASK_SUPPLY
MAX_MESSAGE_SIZE
MAX_REASSEMBLE_SIZE
MESSAGE
MESSAGE_TYPE
MOBILE_IP_AGENT
MTU_SIZE
MTU_TABLE
MTU_TIMEOUT
NAME
NAME_SERVER
NBDD
NBNS
NETBIOS_TCP_IP
NETBIOS_TCP_SCOPE
NIS_DOMAIN
NIS_DOMAIN_NAME
NIS_SERVER
NIS_SERVERS
NIS_TIME_SERVER
NNTP_SERVER
OPTION_OVERLOAD
PAD
PARAMETER_REQUEST
POLICY_FILTER
POP3_SERVER
PRIVATE
QUOTE_SERVER
REBIND_TIME
RELAY_AGENT
RENEW_TIME
REQUESTED_ADDRESS
RES_SERVER
ROOT_PATH
ROUTER
ROUTER_SOLICIT
SERVER_IDENTIFIER
SMTP_SERVER
SRC_ROUTE
STATIC_ROUTE
STREET_TALK_DIRECTORY_SERVER
STREET_TALK_SERVER
SUBNET_MASK
SWAP_SERVER
TCP_ALIVE_GARBAGE
TCP_KEEP_ALIVE
TCP_TTL
TFTP_SERVER
TIME_OFFSET
TIME_SERVER
TRAILER_ENCAPSULATION
USER_CLASS
VENDOR_CLASS_IDENTIFIER
VENDOR_SPECIFIC
WWW_SERVER
XDISPLAY_MANAGER
XFONT

Attributes

oid[R]
payload[RW]
value[RW]
value=[RW]

Public Class Methods

new(oid, payload = nil) click to toggle source
# File lib/lib/dhcp/options/option.rb, line 20
def initialize(oid, payload = nil)
  @oid = oid
  @payload = payload
end
unpack(packet) click to toggle source
# File lib/lib/dhcp/options/option.rb, line 48
def self.unpack(packet)
  oid, len = packet.unpack('C2')
  payload = nil
  payload = packet.to_s.unpack("@2a#{len.to_s}").first unless oid.to_i == 0 or oid.to_i  == 255
  len = 0 if oid.to_i == 0 or oid.to_i  == 255
  raise ArgumentError "Wrong OID format for DHCP Option - #{oid}" unless oid.respond_to? :to_i
  raise ArgumentError "Wrong OID for DHCP Option = #{oid}" unless oid.to_i >= 0 and oid.to_i < 256
  begin
  eval("Option#{oid.to_i.to_s}").send(:unpack, oid, len, payload.to_s)
  rescue ArgumentError => e
    raise ArgumentError, "OPTION #{oid} : #{e.message}"
  end
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/lib/dhcp/options/option.rb, line 29
def <=>(other)
  other.is_a?(Lib::DHCP::Option) ? self.value <=> other.value : self.value <=> other
end
len() click to toggle source
# File lib/lib/dhcp/options/option.rb, line 25
def len
  @len.to_i || 0
end
name() click to toggle source
# File lib/lib/dhcp/options/option.rb, line 43
def name
  return 'Unknown Option Name' unless NAME.include? @oid.to_i
  NAME[@oid.to_i]
end
pack() click to toggle source
# File lib/lib/dhcp/options/option.rb, line 33
def pack
  @payload = '' if @value.nil?
  [@oid, @len, @payload.to_s].pack("C2a#{@len.to_i}")
end
to_s() click to toggle source
# File lib/lib/dhcp/options/option.rb, line 39
def to_s
  @payload.to_s.unpack('C*').map{|item| item.to_i.to_s(16).rjust(2, '0') }.join(':')
end