Module: PacketGen::Header
- Defined in:
- lib/packetgen/header.rb,
lib/packetgen/header/ip.rb,
lib/packetgen/header/arp.rb,
lib/packetgen/header/dns.rb,
lib/packetgen/header/dns.rb,
lib/packetgen/header/esp.rb,
lib/packetgen/header/eth.rb,
lib/packetgen/header/llc.rb,
lib/packetgen/header/tcp.rb,
lib/packetgen/header/tcp.rb,
lib/packetgen/header/udp.rb,
lib/packetgen/header/base.rb,
lib/packetgen/header/icmp.rb,
lib/packetgen/header/ipv6.rb,
lib/packetgen/header/dot11.rb,
lib/packetgen/header/dot1q.rb,
lib/packetgen/header/dot1x.rb,
lib/packetgen/header/dns/rr.rb,
lib/packetgen/header/icmpv6.rb,
lib/packetgen/header/dns/opt.rb,
lib/packetgen/header/dns/name.rb,
lib/packetgen/header/dns/option.rb,
lib/packetgen/header/dot11/data.rb,
lib/packetgen/header/tcp/option.rb,
lib/packetgen/header/tcp/options.rb,
lib/packetgen/header/dns/question.rb,
lib/packetgen/header/dns/qdsection.rb,
lib/packetgen/header/dns/rrsection.rb,
lib/packetgen/header/dot11/control.rb,
lib/packetgen/header/dot11/element.rb,
lib/packetgen/header/dot11/sub_mngt.rb,
lib/packetgen/header/dot11/management.rb
Overview
Namespace for protocol header classes
Add a foreign header class
Since v1.1.0, 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
end
end
Then, class must be declared to PacketGen:
PacketGen::Header.add_class MyModule::MyHeader
Finally, bindings must be declared:
# bind MyHeader as IP protocol number 254 (needed by Packet#parse and Packet#add)
PacketGen::Header::IP.bind_header MyModule::MyHeader, protocol: 254
And use it:
pkt = Packet.gen('IP').add('MyHeader', field1: 0x12345678)
pkt.myheader.field2.read 0x01
Defined Under Namespace
Classes: ARP, Base, CipherError, DNS, Dot11, Dot1q, Dot1x, ESP, Eth, ICMP, ICMPv6, IP, IPv6, LLC, PPI, RadioTap, SNAP, TCP, UDP
Constant Summary collapse
- PCAP_SNAPLEN =
0xffff- PCAP_PROMISC =
false- PCAP_TIMEOUT =
1
Class Method Summary collapse
-
.add_class(klass) ⇒ void
Add a foreign header class to known header classes.
-
.all ⇒ Array<Class>
Get known header classes.
-
.get_header_class_by_name(name) ⇒ Class?
Get header class from its name.
-
.remove_class(klass) ⇒ void
Remove a foreign header (previously added by add_header_class from known header classes..
Class Method Details
.add_class(klass) ⇒ void
This method returns an undefined value.
Add a foreign header class to known header classes. This is needed by Packet.gen and Packet#add.
50 51 52 53 54 |
# File 'lib/packetgen/header.rb', line 50 def self.add_class(klass) protocol_name = klass.to_s.sub(/.*::/, '') @added_header_classes[protocol_name] = klass @header_classes = nil end |
.all ⇒ Array<Class>
Get known header classes
40 41 42 43 |
# File 'lib/packetgen/header.rb', line 40 def self.all return @header_classes if @header_classes @header_classes = @added_header_classes.values end |
.get_header_class_by_name(name) ⇒ Class?
Get header class from its name
71 72 73 74 75 76 77 |
# File 'lib/packetgen/header.rb', line 71 def self.get_header_class_by_name(name) if Header.const_defined? name Header.const_get name else @added_header_classes[name] end end |
.remove_class(klass) ⇒ void
This method returns an undefined value.
Remove a foreign header (previously added by add_header_class from known header classes.
61 62 63 64 65 |
# File 'lib/packetgen/header.rb', line 61 def self.remove_class(klass) protocol_name = klass.to_s.sub(/.*::/, '') @added_header_classes.delete protocol_name @header_classes = nil end |