Class: PacketGen::Header::Dot11::SubMngt Abstract

Inherits:
Base show all
Defined in:
lib/packetgen/header/dot11/sub_mngt.rb

Overview

This class is abstract.

Base class for all subtype management frames

Subclasses of this class are used to specialize Management. A SubMngt class set subtype field in Dot11 header and may add some fields.

All SubMngt subclasses have ability to have Element. These elements may be accessed through #elements.

Since:

  • 1.4.0

Direct Known Subclasses

ATIM, AssoReq, AssoResp, Auth, Beacon, DeAuth, Disas, ProbeReq, ProbeResp

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Base

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

Methods included from PacketGen::Headerable

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

Methods inherited from Types::Fields

#[], #[]=, #bits_on, define_bit_fields_on, define_field, define_field_after, define_field_before, #fields, fields, inherited, #offset_of, #optional?, #optional_fields, #present?, remove_bit_fields_on, remove_field, #sz, #to_h, update_field

Constructor Details

#initialize(options = {}) ⇒ SubMngt

Returns a new instance of SubMngt.

Parameters:

  • options (Hash) (defaults to: {})

See Also:

Since:

  • 1.4.0



26
27
28
29
# File 'lib/packetgen/header/dot11/sub_mngt.rb', line 26

def initialize(options={})
  super
  @elements = []
end

Instance Attribute Details

#elementsArray<Element>

Returns:

Since:

  • 1.4.0



22
23
24
# File 'lib/packetgen/header/dot11/sub_mngt.rb', line 22

def elements
  @elements
end

Instance Method Details

#add_element(type:, value:) ⇒ self

Add an Element to header

Parameters:

  • type (Integer, String)

    element type

  • value (Object)

    element value

Returns:

  • (self)

Since:

  • 2.1.3



60
61
62
63
64
# File 'lib/packetgen/header/dot11/sub_mngt.rb', line 60

def add_element(type:, value:)
  element = Element.new(type: type, value: value)
  @elements << element
  self
end

#inspectString

Returns:

  • (String)

Since:

  • 1.4.0



46
47
48
49
50
51
52
53
# File 'lib/packetgen/header/dot11/sub_mngt.rb', line 46

def inspect
  str = super
  str << Inspect.dashed_line('Dot11 Elements', 2)
  @elements.each do |el|
    str << Inspect.shift_level(2) << el.to_human << "\n"
  end
  str
end

#read(str) ⇒ SubMngt

Populate object from binary string

Parameters:

  • str (String)

Returns:

Since:

  • 1.4.0



34
35
36
37
38
# File 'lib/packetgen/header/dot11/sub_mngt.rb', line 34

def read(str)
  super
  read_elements str[sz, str.size] || ''
  self
end

#to_sString

Returns:

  • (String)

Since:

  • 1.4.0



41
42
43
# File 'lib/packetgen/header/dot11/sub_mngt.rb', line 41

def to_s
  super + @elements.map(&:to_s).join
end