Class: Lib::DHCP::Option122::SubOption::Option3
- Inherits:
-
Option
- Object
- Lib::DHCP::Option
- Option
- Lib::DHCP::Option122::SubOption::Option3
- Defined in:
- lib/lib/dhcp/options/option122.rb
Constant Summary
Constants inherited from Lib::DHCP::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 collapse
-
#type ⇒ Object
readonly
Returns the value of attribute type.
Attributes inherited from Lib::DHCP::Option
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(tsp_server_address) ⇒ Option3
constructor
A new instance of Option3.
- #len ⇒ Object
- #name ⇒ Object
- #pack ⇒ Object
Methods inherited from Lib::DHCP::Option
#<=>, from_json, #to_h, #to_json, #to_s
Constructor Details
#initialize(tsp_server_address) ⇒ Option3
Returns a new instance of Option3.
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/lib/dhcp/options/option122.rb', line 113 def initialize(tsp_server_address) @oid = 3 case tsp_server_address when Net::Address::IPv4 @type = 1 @payload = tsp_server_address when String begin @payload = Net::Address::IPv4.new(tsp_server_address) @type = 1 rescue ArgumentError @type = 0 @payload = tsp_server_address end else raise ArgumentError, 'Unknown TSP Provisioning Server Address type' end end |
Instance Attribute Details
#type ⇒ Object (readonly)
Returns the value of attribute type.
111 112 113 |
# File 'lib/lib/dhcp/options/option122.rb', line 111 def type @type end |
Class Method Details
.unpack(oid, len, payload) ⇒ Object
157 158 159 160 161 162 163 164 165 166 167 168 |
# File 'lib/lib/dhcp/options/option122.rb', line 157 def self.unpack(oid, len, payload) raise ArgumentError, "OID mismatch, require 3, #{oid} given" unless oid == 3 type = payload.unpack('C').first.to_i if type == 1 raise ArgumentError, "Wrong TSP's Provisioning Server Address Sub-Option length for type 1. Should by 5 but #{len} given" unless len == 5 self.new Net::Address::IPv4.new(payload.unpack('@N').first) elsif type == 0 self.new payload.unpack('@a*').first else raise ArgumentError, "Unknown TSP's Provisioning Server Address Sub-Option type #{type}" end end |
Instance Method Details
#len ⇒ Object
137 138 139 140 141 142 143 144 |
# File 'lib/lib/dhcp/options/option122.rb', line 137 def len if type == 1 5 else @payload.to_s.split('.').map{|label| [label.length, label.unpack('C*')]}.flatten.size + 2 #@payload.size + 1 end end |
#name ⇒ Object
133 134 135 |
# File 'lib/lib/dhcp/options/option122.rb', line 133 def name "TSP's Provisioning Server Address Sub-Option" end |
#pack ⇒ Object
146 147 148 149 150 151 152 153 154 155 |
# File 'lib/lib/dhcp/options/option122.rb', line 146 def pack if @type == 1 [@oid.to_i, self.len.to_i, 1, @payload.to_i].pack('C3N') elsif @type == 0 fqdn_encode = @payload.to_s.split('.').map{|label| [label.length, label.unpack('C*')]}.flatten [@oid.to_i, fqdn_encode.size + 2, 0, *fqdn_encode,0].pack('C*') else raise ArgumentError, 'Unknown TSP Provisioning Server Address type' end end |