Header Structure Decodes
Looking into each layer of a packet
libtrace's structure decodes (IP, IP6, UDP, TCP, ICMP, ICMP6) are all
retrieved from a Packet by methods belonging to Packet, e.g. TCP =
packet.tcp. However, a libtrace_packet struct doesn't
have
a way to tell you how many bytes of the structure were actually
captured. Because of that, python-libtrace can't simply return
the data bytes that belong to a structure but are in a part of
it following the fixed-length part, e.g. IP and TCP options, and
IP6 header
extensions.
Instead, python-libtrace uses libtrace's 'get_layer' routines, so that it can
return objects that know how many header bytes were actually captured.
Note that objects may be truncated because on-the-wire they
extended past the SNAPLEN used when the trace was captured.
Class Layer2
Instance
Variables |
linktype |
Link Type for the
trace, see below for values |
Class Method |
layer2 |
Packet.layer2
->
aNewLayer2 |
|
Returns a Layer2 object,
containing it's link type and header bytes for this packet. |
Global
Constants |
trace types |
See the libtrace
documentation for more details |
|
TRACE_TYPE_ETH |
802.3-style
Ethernet |
|
TRACE_TYPE_ATM |
ATM frames |
|
TRACE_TYPE_80211 |
802.11 frames |
|
TRACE_TYPE_NONE |
Raw IP frames |
|
TRACE_TYPE_LINUX_SLL |
Linux "null" framing |
|
TRACE_TYPE_PFLOG |
FreeBSD's PFlog |
|
TRACE_TYPE_DUCK |
Pseudo link layer for DUCK
packets |
|
TRACE_TYPE_80211_RADIO |
Radiotap + 802.11 |
|
TRACE_TYPE_LLCSNAP |
Raw LLC/SNAP |
|
TRACE_TYPE_PPP |
PPP frames |
|
TRACE_TYPE_METADATA |
WDCAP-style meta-data |
Class Layer3
Instance
Variables |
ethertype |
Ethernet Type for
the packet, e.g. 0x0800 = IPv4, 0x08dd = IPv6, 0x080b = ARP, etc. |
Class Method |
layer3 |
Packet.layer3
->
aNewLayer3 |
|
Returns a Layer3 object,
containing it's link type and header bytes for this packet. |
Class set Method |
set_checksums() |
Layer3.set_checksums
-> True or False |
|
Computes and sets TCP, UDP and ICMP
checksums for IPv4 and IPv6 packets, and IP checksum for IPv4 packets.
This can be useful when using a Layer3 object to anonymise a
packet.
Returns true if the checksums were set; they are set only if the Layer3 object came from a complete packet, i.e. one with capture_len == wire_len. |
Class Transport
stringInstance
Variables |
proto |
IP protocol
number, (provided this was an IP or IP6 packet), e.g. 6 = TCP, 17 =
UDP, 1 = ICMP, 58 = ICMP6
|
Class Method |
transport |
Packet.transport->
aNewTransport |
|
Returns a Transport object,
containing the protocol number and header bytes for this packet. |
Nevil Brownlee
Mon, 13 Apr 15 (NZST)