lib/packetgen/header.rb in packetgen-2.8.7 vs lib/packetgen/header.rb in packetgen-3.0.0
- old
+ new
@@ -5,13 +5,16 @@
# This program is published under MIT license.
# frozen_string_literal: true
module PacketGen
- # Namespace for protocol header classes
+ # Namespace for protocol header classes.
+ #
+ # This namespace handles all buitlin headers, such as {IP} or {TCP}.
+ #
# == Add a foreign header class
- # Since v1.1.0, PacketGen permits adding you own header classes.
+ # PacketGen permits adding you own header classes.
# First, define the new header class. By example:
# module MyModule
# class MyHeader < PacketGen::Header::Base
# define_field :field1, PacketGen::Types::Int32
# define_field :field2, PacketGen::Types::Int32
@@ -38,33 +41,34 @@
class << self
# List all available headers.
# @return [Array<Class>]
def all
- return @header_classes if @header_classes
+ return @header_classes if defined?(@header_classes) && @header_classes
+
@header_classes = @added_header_classes.values
end
alias list all
# Add a foreign header class to known header classes. This is
# needed by {Packet.gen} and {Packet#add}.
# @param [Class] klass a header class
# @return [void]
# @since 1.1.0
def add_class(klass)
- protocol_name = klass.new.protocol_name
+ protocol_name = klass.protocol_name
@added_header_classes[protocol_name] = klass
@header_classes = nil
end
# Remove a foreign header (previously added by {.add_header_class}
# from known header classes.
# @param [Class] klass
# @return [void]
# @since 1.1.0
def remove_class(klass)
- protocol_name = klass.new.protocol_name
+ protocol_name = klass.protocol_name
@added_header_classes.delete protocol_name
@header_classes = nil
end
# Get header class from its name
@@ -80,11 +84,10 @@
end
end
end
end
-require_relative 'header/crypto'
require_relative 'header/base'
require_relative 'header/eth'
require_relative 'header/dot11'
require_relative 'header/llc'
require_relative 'header/dot1q'
@@ -96,12 +99,10 @@
require_relative 'header/icmpv6'
require_relative 'header/gre'
require_relative 'header/udp'
require_relative 'header/tcp'
require_relative 'header/eap'
-require_relative 'header/esp'
-require_relative 'header/ike'
require_relative 'header/dns'
require_relative 'header/asn1_base'
require_relative 'header/snmp'
require_relative 'header/bootp'
require_relative 'header/dhcp'
@@ -112,7 +113,6 @@
require_relative 'header/igmpv3'
require_relative 'header/mld'
require_relative 'header/mldv2'
require_relative 'header/ospfv2'
require_relative 'header/ospfv3'
-require_relative 'header/netbios'
require_relative 'header/mdns'