PcapPlusPlus  21.05
pcpp::PacketTrailerLayer Class Reference

#include <PacketTrailerLayer.h>

Inheritance diagram for pcpp::PacketTrailerLayer:
pcpp::Layer pcpp::IDataContainer

Public Member Functions

 PacketTrailerLayer (uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
uint8_t * getTrailerData () const
std::string getTrailerDataAsHexString () const
size_t getTrailerLen () const
void parseNextLayer ()
size_t getHeaderLen () const
void computeCalculateFields ()
std::string toString () const
OsiModelLayer getOsiModelLayer () const
- Public Member Functions inherited from pcpp::Layer
virtual ~Layer ()
LayergetNextLayer () const
LayergetPrevLayer () const
ProtocolType getProtocol () const
uint8_t * getData () const
size_t getDataLen () const
uint8_t * getLayerPayload () const
size_t getLayerPayloadSize () const
bool isAllocatedToPacket () const
void copyData (uint8_t *toArr) const
uint8_t * getDataPtr (size_t offset=0) const

Detailed Description

A class for representing packet tailer (a.k.a footer or padding) which refers to supplemental data placed at the end of a block of data being stored or transmitted, which may contain information for the handling of the data block, or just mark its end (taken from Wikipedia: https://en.wikipedia.org/wiki/Trailer_(computing) )

There are various reasons for adding a packet trailer, one of the most famous is FCS (Frame check sequence) which refers to the extra error-detecting code added to a frame. Another usage is padding which means adding data to reach a minimum required packet length.

Although this layer inherits from the Layer class, it is not a standard layer in the sense that it can't be constructed by the user. This layer may be only be constructed in the Packet class, in the process of parsing the packet and creating the layers; if at the end of the parsing process there is data left that is not allocated to any layer, it's assumed to be the packet trailer and an instance of this class is created. This means this layer can only exist as the last layer in a packet, if a packet trailer indeed exists.

No layer can be added by the user after this layer (trying to do that will result with an error).

This layer can be removed by the user or extended/shortened, as any layer.

It also contains method to extract the trailer data

Constructor & Destructor Documentation

◆ PacketTrailerLayer()

pcpp::PacketTrailerLayer::PacketTrailerLayer ( uint8_t *  data,
size_t  dataLen,
Layer prevLayer,
Packet packet 

A constructor that creates the layer from an existing packet raw data

[in]dataA pointer to the raw data
[in]dataLenSize of the data in bytes
[in]prevLayerA pointer to the previous layer
[in]packetA pointer to the Packet instance where layer will be stored in

Member Function Documentation

◆ computeCalculateFields()

void pcpp::PacketTrailerLayer::computeCalculateFields ( )

Does nothing for this layer

Implements pcpp::Layer.

◆ getHeaderLen()

size_t pcpp::PacketTrailerLayer::getHeaderLen ( ) const
trailer data length in bytes

Implements pcpp::Layer.

◆ getOsiModelLayer()

OsiModelLayer pcpp::PacketTrailerLayer::getOsiModelLayer ( ) const
The OSI Model layer this protocol belongs to

Implements pcpp::Layer.

◆ getTrailerData()

uint8_t* pcpp::PacketTrailerLayer::getTrailerData ( ) const

Get a pointer to the trailer data

A pointer to the trailer data

◆ getTrailerDataAsHexString()

std::string pcpp::PacketTrailerLayer::getTrailerDataAsHexString ( ) const
Trailer data as hex string

◆ getTrailerLen()

size_t pcpp::PacketTrailerLayer::getTrailerLen ( ) const

Get the trailer data length

The trailer data length in bytes

◆ parseNextLayer()

void pcpp::PacketTrailerLayer::parseNextLayer ( )

Does nothing for this layer (PacketTrailerLayer is always last)

Implements pcpp::Layer.

◆ toString()

std::string pcpp::PacketTrailerLayer::toString ( ) const
A string representation of the layer most important data (should look like the layer description in Wireshark)

Implements pcpp::Layer.