class Pio::Dhcp::BootRequestOptions

Options for creating a DHCP message.

Public Class Methods

new(options) click to toggle source
# File lib/pio/dhcp/boot_request_options.rb, line 21
def initialize(options)
  validate options
  @options = options
end

Public Instance Methods

to_hash() click to toggle source
# File lib/pio/dhcp/boot_request_options.rb, line 26
def to_hash
  {
    destination_mac: destination_mac,
    source_mac: source_mac,
    source_ip_address: QUAD_ZERO_IP_ADDRESS,
    destination_ip_address: BROADCAST_IP_ADDRESS,
    udp_source_port: BOOTPC,
    udp_destination_port: BOOTPS,
    dhcp: dhcp_data
  }
end

Private Instance Methods

dhcp_field_values() click to toggle source
# File lib/pio/dhcp/boot_request_options.rb, line 40
def dhcp_field_values
  {
    message_type: BootRequest::MESSAGE_TYPE,
    transaction_id: transaction_id,
    client_ip_address: QUAD_ZERO_IP_ADDRESS,
    your_ip_address: QUAD_ZERO_IP_ADDRESS,
    next_server_ip_address: QUAD_ZERO_IP_ADDRESS,
    relay_agent_ip_address: QUAD_ZERO_IP_ADDRESS,
    client_mac_address: source_mac,
    optional_tlvs: options_for_optional_tlv
  }
end
options_for_optional_tlv() click to toggle source
# File lib/pio/dhcp/boot_request_options.rb, line 53
def options_for_optional_tlv
  [
    message_type_hash,
    client_identifier_hash,
    requested_ip_address_hash,
    parameters_list_hash,
    dhcp_server_identifier_hash
  ].compact
end
server_identifier() click to toggle source
# File lib/pio/dhcp/boot_request_options.rb, line 63
def server_identifier
  server_id = @options[:server_identifier]
  IPv4Address.new(server_id) if server_id
end