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

Direct Known Subclasses

EPB, IDB, SHB, SPB, UnknownBlock

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Types::Fields

#[], #[]=, #body=, define_bit_fields_on, define_field, define_field_after, define_field_before, delete_field, #fields, #force_binary, inherited, #inspect, #is_optional?, #is_present?, #optional_fields, #read, #sz, #to_h, #to_s

Constructor Details

#initialize(options = {}) ⇒ Block

Returns a new instance of 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

Returns:

  • (Integer)


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

define_field :block_len, Types::Int32

#endian:little, :big

Returns:

  • (:little, :big)


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

def endian
  @endian
end

#typeInteger

32-bit block type

Returns:

  • (Integer)


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

define_field :type, Types::Int32

Instance Method Details

#has_options?Boolean

Deprecated.

Use #options? instead.

Returns:

  • (Boolean)


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?

Returns:

  • (Boolean)

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

Parameters:

  • fields (Array<Symbol>)

    block fields to pad



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