Class: PacketGen::Header::Dot1x

Inherits:
Base
  • Object
show all
Defined in:
lib/packetgen/header/dot1x.rb

Overview

IEEE 802.1X / EAPOL

A IEEE 802.1X header consists of:

Examples:

Create a Dot1x header

# Create with integer type
pkt1 = PacketGen.gen('Eth').add('Dot1x', type: 1)
# Create with human-readable type
pkt2 = PacketGen.gen('Eth').add('Dot1x', type: 'EAP Packet')

Author:

  • Sylvain Daubert

Since:

  • 1.4.0

Constant Summary collapse

ETHERTYPE =

IEEE 802.1x Ether type

Since:

  • 1.4.0

0x888e
TYPES =

IEEE 802.1X packet types

Since:

  • 1.4.0

{
  'EAP Packet' => 0,
  'Start' => 1,
  'Logoff' => 2,
  'Key' => 3,
  'Encap-ASF-Alert' => 4
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Base

bind, calculate_and_set_length, #header_id, inherited, #initialize, #ip_header, #ll_header

Methods included from PacketGen::Headerable

#added_to_packet, included, #method_name, #packet, #packet=, #parse?, #protocol_name, #read, #to_s

Constructor Details

This class inherits a constructor from PacketGen::Header::Base

Instance Attribute Details

#bodyBinStruct::String, Header::Base

Returns:



49
# File 'lib/packetgen/header/dot1x.rb', line 49

define_attr :body, BinStruct::String, builder: ->(h, t) { t.new(length_from: h[:length]) }

#lengthInteger

Returns 16-bit body length.

Returns:

  • (Integer)

    16-bit body length



46
# File 'lib/packetgen/header/dot1x.rb', line 46

define_attr :length, BinStruct::Int16

#typeInteger

Returns 8-bit Packet Type.

Returns:

  • (Integer)

    8-bit Packet Type



43
# File 'lib/packetgen/header/dot1x.rb', line 43

define_attr :type, BinStruct::Int8Enum, enum: TYPES

#versionInteger

Returns 8-bit Protocol Version.

Returns:

  • (Integer)

    8-bit Protocol Version



40
# File 'lib/packetgen/header/dot1x.rb', line 40

define_attr :version, BinStruct::Int8, default: 1

Instance Method Details

#calc_lengthInteger

Calculate and set body length

Returns:

  • (Integer)

Since:

  • 2.1.4



60
61
62
# File 'lib/packetgen/header/dot1x.rb', line 60

def calc_length
  Base.calculate_and_set_length self, header_in_size: false
end

#human_typeString

Get human readable type

Returns:

  • (String)

Since:

  • 1.4.0



53
54
55
# File 'lib/packetgen/header/dot1x.rb', line 53

def human_type
  self[:type].to_human
end