Class: PacketGen::PcapNG::Block Abstract

Inherits:
Types::Fields show all
Defined in:
lib/packetgen/pcapng/block.rb

Overview

This class is abstract.

Base class for all block types

Author:

  • Sylvain Daubert

Direct Known Subclasses

EPB, IDB, SHB, SPB, UnknownBlock

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Types::Fields

#[], #[]=, #bits_on, #body=, define_bit_fields_on, define_field, define_field_after, define_field_before, delete_field, fields, #fields, #force_binary, inherited, #inspect, #is_optional?, #is_present?, #offset_of, #optional?, #optional_fields, #present?, #read, remove_bit_fields_on, remove_field, #sz, #to_h, #to_s, update_field

Constructor Details

#initialize(options = {}) ⇒ Block



29
30
31
# File 'lib/packetgen/pcapng/block.rb', line 29

def initialize(options={})
  super
end

Instance Attribute Details

#block_lenInteger

32-bit block length



23
# File 'lib/packetgen/pcapng/block.rb', line 23

define_field :block_len, Types::Int32

#endian:little, :big



14
15
16
# File 'lib/packetgen/pcapng/block.rb', line 14

def endian
  @endian
end

#typeInteger

32-bit block type



19
# File 'lib/packetgen/pcapng/block.rb', line 19

define_field :type, Types::Int32

Instance Method Details

#has_options?Boolean

Deprecated.

Use #options? instead.



42
43
44
45
# File 'lib/packetgen/pcapng/block.rb', line 42

def has_options?
  Deprecation.deprecated(self.class, __method__, 'options?')
  options?
end

#options?Boolean

Has this block option?

Since:

  • 2.7.0



36
37
38
# File 'lib/packetgen/pcapng/block.rb', line 36

def options?
  @fields.key?(:options) && @fields[:options].sz > 0
end

#pad_field(*fields) ⇒ void

This method returns an undefined value.

Pad given field to 32 bit boundary, if needed



57
58
59
60
61
62
63
# File 'lib/packetgen/pcapng/block.rb', line 57

def pad_field(*fields)
  fields.each do |field|
    unless (@fields[field].size % 4).zero?
      @fields[field] << "\x00" * (4 - (@fields[field].size % 4))
    end
  end
end

#recalc_block_lenvoid

This method returns an undefined value.

Calculate block length and update :block_len and block_len2 fields



49
50
51
52
# File 'lib/packetgen/pcapng/block.rb', line 49

def recalc_block_len
  len = fields.map { |f| @fields[f].to_s }.join.size
  self.block_len = self.block_len2 = len
end