Sha256: acaa6ce62903d212dc4f831b38d9e66917367651457b83399dd3f193a0b206e4

Contents?: true

Size: 1.16 KB

Versions: 38

Compression:

Stored size: 1.16 KB

Contents

# Packet parser and generator library.
module Pio
  # Dhcp parser and generator.
  class Dhcp
    MESSAGE_TYPE_TLV = 53
    SERVER_IDENTIFIER_TLV = 54
    CLIENT_IDENTIFIER_TLV = 61
    RENEWAL_TIME_VALUE_TLV = 58
    REBINDING_TIME_VALUE_TLV = 59
    REQUESTED_IP_ADDRESS_TLV = 50
    PARAMETERS_LIST_TLV = 55
    IP_ADDRESS_LEASE_TIME_TLV = 51
    SUBNET_MASK_TLV = 1
    ROUTER_TLV = 3
    NTP_SERVERS_TLV = 42
    DNS_TLV = 6
    END_OF_TLV = 255

    PARAMETER_REQUEST_LIST =
      [
        SUBNET_MASK_TLV,
        ROUTER_TLV,
        DNS_TLV,
        NTP_SERVERS_TLV
      ]
  end
  DHCP = Dhcp
end

require 'bindata'
require 'pio/dhcp/discover'
require 'pio/dhcp/offer'
require 'pio/dhcp/request'
require 'pio/dhcp/ack'

module Pio
  # Dhcp parser and generator.
  class Dhcp
    MESSAGE_TYPE = {
      Discover::TYPE => Discover,
      Offer::TYPE => Offer,
      Request::TYPE => Request,
      Ack::TYPE => Ack
    }

    def self.read(raw_data)
      begin
        frame = const_get('Frame').read(raw_data)
      rescue
        raise Pio::ParseError, $ERROR_INFO.message
      end

      const_get('MESSAGE_TYPE')[frame.message_type].create_from(frame)
    end
  end
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
pio-0.30.0 lib/pio/dhcp.rb
pio-0.29.0 lib/pio/dhcp.rb
pio-0.28.1 lib/pio/dhcp.rb
pio-0.28.0 lib/pio/dhcp.rb
pio-0.27.2 lib/pio/dhcp.rb
pio-0.27.1 lib/pio/dhcp.rb
pio-0.27.0 lib/pio/dhcp.rb
pio-0.26.0 lib/pio/dhcp.rb
pio-0.25.0 lib/pio/dhcp.rb
pio-0.24.2 lib/pio/dhcp.rb
pio-0.24.1 lib/pio/dhcp.rb
pio-0.24.0 lib/pio/dhcp.rb
pio-0.23.1 lib/pio/dhcp.rb
pio-0.23.0 lib/pio/dhcp.rb
pio-0.22.0 lib/pio/dhcp.rb
pio-0.21.1 lib/pio/dhcp.rb
pio-0.21.0 lib/pio/dhcp.rb
pio-0.20.1 lib/pio/dhcp.rb
pio-0.20.0 lib/pio/dhcp.rb
pio-0.19.0 lib/pio/dhcp.rb