Class: Lib::DHCP::Option21

Inherits:
Option
  • Object
show all
Defined in:
lib/lib/dhcp/options/option21.rb

Constant Summary

Constants inherited from Option

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

Instance Attribute Summary

Attributes inherited from Option

#oid, #payload

Instance Method Summary collapse

Methods inherited from Option

#<=>, #name, #to_s

Constructor Details

#initialize(*address) ⇒ Option21

Returns a new instance of Option21.



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/lib/dhcp/options/option21.rb', line 19

def initialize(*address)

  address.map! do |ip|
    if ip.is_a? Net::Address::IPv4
      ip
    elsif ip.is_a?Array
      Net::Address::IPv4.new(*ip)
    else
      Net::Address::IPv4.new(ip)
    end
  end

  super POLICY_FILTER, address

end

Instance Method Details

#<<(address) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/lib/dhcp/options/option21.rb', line 56

def <<(address)
  address.map! do |ip|
    if ip.is_a? Net::Address::IPv4
      ip
    elsif ip.is_a?Array
      Net::Address::IPv4.new(*ip)
    else
      Net::Address::IPv4.new(ip)
    end
  end
  @payload << address
end

#lenObject



39
40
41
# File 'lib/lib/dhcp/options/option21.rb', line 39

def len
  @payload.size * 8
end

#packObject



35
36
37
# File 'lib/lib/dhcp/options/option21.rb', line 35

def pack
  [POLICY_FILTER, @payload.size * 8, *@payload.map{|ip| [ip.to_i, ip.mask.to_i]}.flatten].pack('C2N*')
end

#payload=(address) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/lib/dhcp/options/option21.rb', line 43

def payload=(address)
  address.map! do |ip|
    if ip.is_a?Net::Address::IPv4
      ip
    elsif ip.is_a?Array
      Net::Address::IPv4.new(*ip)
    else
      Net::Address::IPv4.new(ip)
    end
  end
  @payload = address
end