class Lib::DHCP::Option
Constants
- ARP_TIMEOUT
- ASSOCIATED_IP
- BOOT_FILE_NAME
- BOOT_FILE_SIZE
- BROADCAST_ADDR
- CLIENT_IDENTIFIER
- CLIENT_LAST_TRANSACTION_TIME
- COOKIE_SERVER
- 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