Handling Packets

Class Packet

Gives you access to fieds within (the captured part of) a packet.  You will normally work on Packets returned from  Trace.read_packet()  or a Trace iterator  (see Trace Handling), but you can create a new packet instance with  packet()  (see below).

Note that the Layer and Decode methods return None if their requested object was not present in the packet, or was not completely captured.

Class Methods
Packet() -> aPacket

Makes a new Python Packet.  A python-libtrace packet maintains a set of pointers into a libtrace packet or a python-libtrace data object.  In a newly-created Packet, all such pointers are NULL.

Instance Methods
layer2 pkt.layer2 -> aLayer2

Gets a Layer2 object from the packet; see Layers page
layer3 pkt.layer3 -> aLayer3

Gets a Layer3 object from the packet; see Layers page
transport pkt.transport -> aTransport

Gets a Transport object from the packet; see Layers page
ip pkt.ip -> anIP

Gets an IPv4 header from the packet
ip6 pkt.ip6 -> anIP6

Gets an IPv6 header from the packet
tcp pkt.tcp-> aTCP

Gets a TCP header from the packet
tcp_payload pkt.tcp_payload -> aData

Gets a TCP payload  from the packet, or None if it wasn't TCP.
tcp_payload.data returns a ByteArray of the data
udp pkt.udp -> aUDP

Gets a UDP header from the packet
udp_payload pkt.udp_payload -> aData

Gets a UDP payload  from the packet, or None if it wasn't UDP.
udp_payload.data returns a ByteArray of the data
icmp pkt.icmp -> anICMP

Gets an ICMP header from the packet
icmp6 pkt.icmp -> anICMP

Gets an ICMP v6header from the packet

apply_filter() pkt.apply_filter(aFilter) -> result

Tests whether the current contents of the packet match aFilter.
Result is True if the filter matches, False if it doesn't, or None if the filter was invalid

Instance Variables
data pkt.data -> aByteArray

Byte array containing object's header and its following bytes.
May be used for any python-libtrace object
timepkt.time -> aTimeval

Packet Arrival Time as a Python Time
seconds pkt.seconds -> aFloat

Packet Arrival Time in Unix seconds (double)
pkt.ts_sec -> anInteger

Packet Arrival Time in Unix seconds (integer)
erf_time pkt.erf_time -> anInteger

Packet Arrival Time as a DAG ERF time (64-bit)
wire_len pkt.wire_len -> anInteger

Original size of packet on the wire
capture_len pkt.capture_len -> anInteger

Number of bytes captured; may be less than wire_len
ethertype internet.ethertype -> anInteger

Ethertype for the packet that contained this object
pkt.linktype -> anInteger

Packet's link type; see Layer2 on Layers page for linktype values
pkt.vlan_id -> anInteger

VLAN ID for packets with an 802.1Q VLAN tag, zero otherwise
pkt.direction -> anInteger

'Direction' of packet, for traces from interfaces that support this,
e.g. ERF traces.  Direction values are:

Class Set  Method
data= Packet.data = aByteArray

Overwrites the data bytes in a Data object with bytes from a byte array.  The byte array  may not be longer than the original data from the packet.

Nevil Brownlee
Mon,  13 Apr 15 (NZST)