Class: PacketGen::Header::PPI
- Inherits:
-
Base
- Object
- Types::Fields
- Base
- PacketGen::Header::PPI
- Defined in:
- lib/packetgen/header/dot11.rb
Overview
PPI (Per-Packet Information) packet
Instance Attribute Summary collapse
-
#align ⇒ Boolean
Align flag from #flags attribute.
- #body ⇒ Type::String
-
#dlt ⇒ Integer
32-bit PPI data link type.
-
#flags ⇒ Integer
8-bit PPI flags.
-
#length ⇒ Integer
16-bit PPI header length.
-
#ppi_fields ⇒ Type::String
Concatenation of PPI fields.
-
#version ⇒ Integer
8-bit PPI version.
Instance Method Summary collapse
-
#calc_length ⇒ Integer
Calculate header length.
-
#parse? ⇒ Boolean
Check version field.
-
#read(str) ⇒ PPI
Self.
-
#to_w(iface) ⇒ void
send PPI packet on wire.
Methods inherited from Base
bind, calculate_and_set_length, #header_id, inherited, #initialize, #ip_header, known_headers, #ll_header
Methods included from PacketGen::Headerable
#added_to_packet, included, #method_name, #packet, #packet=, #protocol_name
Methods inherited from Types::Fields
#[], #[]=, #bits_on, define_bit_fields_on, define_field, define_field_after, define_field_before, #fields, fields, inherited, #initialize, #inspect, #offset_of, #optional?, #optional_fields, #present?, remove_bit_fields_on, remove_field, #sz, #to_h, #to_s, update_field
Constructor Details
This class inherits a constructor from PacketGen::Header::Base
Instance Attribute Details
#align ⇒ Boolean
37 |
# File 'lib/packetgen/header/dot11.rb', line 37 define_bit_fields_on :flags, :reserved, 7, :align |
#body ⇒ Type::String
34 |
# File 'lib/packetgen/header/dot11.rb', line 34 define_field :body, Types::String |
#flags ⇒ Integer
22 |
# File 'lib/packetgen/header/dot11.rb', line 22 define_field :flags, Types::Int8 |
#length ⇒ Integer
25 |
# File 'lib/packetgen/header/dot11.rb', line 25 define_field :length, Types::Int16le, default: 8 |
Instance Method Details
#calc_length ⇒ Integer
Calculate header length
63 64 65 |
# File 'lib/packetgen/header/dot11.rb', line 63 def calc_length self[:length].value = self.sz - self[:body].sz end |
#parse? ⇒ Boolean
Check version field
56 57 58 |
# File 'lib/packetgen/header/dot11.rb', line 56 def parse? version.zero? && (length >= 8) end |
#read(str) ⇒ PPI
Returns self.
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/packetgen/header/dot11.rb', line 41 def read(str) return self if str.nil? force_binary str self[:version].read str[0, 1] self[:flags].read str[1, 1] self[:length].read str[2, 2] self[:dlt].read str[4, 4] self[:ppi_fields].read str[8, length - 8] self[:body].read str[length, str.size] self end |
#to_w(iface) ⇒ void
This method returns an undefined value.
send PPI packet on wire. Dot11 FCS trailer should be set.
70 71 72 73 74 |
# File 'lib/packetgen/header/dot11.rb', line 70 def to_w(iface) pcap = PCAPRUB::Pcap.open_live(iface, PCAP_SNAPLEN, PCAP_PROMISC, PCAP_TIMEOUT) pcap.inject self.to_s pcap.close end |