PcapPlusPlus  Next
pcpp::PostgresLayer Class Reference

#include <PostgresLayer.h>

Inheritance diagram for pcpp::PostgresLayer:
pcpp::Layer pcpp::IDataContainer

Public Member Functions

 ~PostgresLayer () override=default
 A d'tor for this layer.
 
PostgresMessageOrigin getPostgresOrigin () const
 
const PointerVector< PostgresMessage > & getPostgresMessages () const
 
const PostgresMessagegetPostgresMessage (const PostgresMessageType &messageType) const
 Get a PostgreSQL message by its type. More...
 
template<class TMessage , std::enable_if_t< std::is_base_of< PostgresMessage, TMessage >::value, bool > = nullptr>
const TMessage * getPostgresMessage () const
 Get a PostgreSQL message by its type (template version) More...
 
size_t getHeaderLen () const override
 
void parseNextLayer () override
 Does nothing for this layer, Postgres is always last.
 
void computeCalculateFields () override
 Does nothing for this layer.
 
OsiModelLayer getOsiModelLayer () const override
 
std::string toString () const override
 
- Public Member Functions inherited from pcpp::Layer
 ~Layer () override
 
LayergetNextLayer () const
 
LayergetPrevLayer () const
 
ProtocolType getProtocol () const
 
bool isMemberOfProtocolFamily (ProtocolTypeFamily protocolTypeFamily) 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 override
 

Static Public Member Functions

static bool isPostgresPort (uint16_t port)
 
static PostgresLayerparsePostgresBackendMessages (uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
 
static PostgresLayerparsePostgresFrontendMessages (uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
 

Additional Inherited Members

- Protected Member Functions inherited from pcpp::Layer
PacketgetAttachedPacket ()
 Get a pointer to the Packet this layer is attached to (if any). More...
 
Packet const * getAttachedPacket () const
 Get a pointer to the Packet this layer is attached to (if any). More...
 
template<typename T , typename... Args>
LayerconstructNextLayer (uint8_t *data, size_t dataLen, Args &&... extraArgs)
 Construct the next layer in the protocol stack. No validation is performed on the data. More...
 
template<typename T , typename... Args>
LayerconstructNextLayer (uint8_t *data, size_t dataLen, Packet *packet, Args &&... extraArgs)
 
template<typename TFactory , typename... Args>
LayerconstructNextLayerFromFactory (TFactory factoryFn, uint8_t *data, size_t dataLen, Args &&... extraArgs)
 Construct the next layer in the protocol stack using a factory functor. More...
 
template<typename TFactory , typename... Args>
LayerconstructNextLayerFromFactory (TFactory factoryFn, uint8_t *data, size_t dataLen, Packet *packet, Args &&... extraArgs)
 Construct the next layer in the protocol stack using a factory functor. More...
 
template<typename T , typename... Args>
LayertryConstructNextLayer (uint8_t *data, size_t dataLen, Args &&... extraArgs)
 
template<typename T , typename... Args>
LayertryConstructNextLayer (uint8_t *data, size_t dataLen, Packet *packet, Args &&... extraArgs)
 
template<typename T , typename TFallback , typename... Args>
LayertryConstructNextLayerWithFallback (uint8_t *data, size_t dataLen, Args &&... extraArgs)
 Try to construct the next layer in the protocol stack with a fallback option. More...
 
template<typename T , typename TFallback , typename... Args>
LayertryConstructNextLayerWithFallback (uint8_t *data, size_t dataLen, Packet *packet, Args &&... extraArgs)
 
template<typename TFallback , typename TFactory , typename... Args>
LayertryConstructNextLayerFromFactoryWithFallback (TFactory factoryFn, uint8_t *data, size_t dataLen, Args &&... extraArgs)
 Try to construct the next layer in the protocol stack using a factory functor with a fallback option. More...
 
template<typename TFallback , typename TFactory , typename... Args>
LayertryConstructNextLayerFromFactoryWithFallback (TFactory factoryFn, uint8_t *data, size_t dataLen, Packet *packet, Args &&... extraArgs)
 Try to construct the next layer in the protocol stack using a factory functor with a fallback option. More...
 
- Static Protected Member Functions inherited from pcpp::Layer
template<typename T >
static bool canReinterpretAs (const uint8_t *data, size_t dataLen)
 Check if the data is large enough to reinterpret as a type. More...
 

Detailed Description

Represents a PostgreSQL protocol layer

Member Function Documentation

◆ getHeaderLen()

size_t pcpp::PostgresLayer::getHeaderLen ( ) const
inlineoverridevirtual
Returns
The size of the Postgres layer header

Implements pcpp::Layer.

◆ getOsiModelLayer()

OsiModelLayer pcpp::PostgresLayer::getOsiModelLayer ( ) const
inlineoverridevirtual
Returns
The OSI layer level of Postgres (Application Layer).

Implements pcpp::Layer.

◆ getPostgresMessage() [1/2]

template<class TMessage , std::enable_if_t< std::is_base_of< PostgresMessage, TMessage >::value, bool > = nullptr>
const TMessage* pcpp::PostgresLayer::getPostgresMessage ( ) const
inline

Get a PostgreSQL message by its type (template version)

Template Parameters
TMessageThe message type to retrieve (must derive from PostgresMessage)
Returns
A pointer to the message of the specified type, or nullptr if not found

◆ getPostgresMessage() [2/2]

const PostgresMessage* pcpp::PostgresLayer::getPostgresMessage ( const PostgresMessageType messageType) const

Get a PostgreSQL message by its type.

Parameters
[in]messageTypeThe type of message to retrieve
Returns
A pointer to the message, or nullptr if not found

◆ getPostgresMessages()

const PointerVector<PostgresMessage>& pcpp::PostgresLayer::getPostgresMessages ( ) const
Returns
A vector of all PostgreSQL messages in this layer

◆ getPostgresOrigin()

PostgresMessageOrigin pcpp::PostgresLayer::getPostgresOrigin ( ) const
inline
Returns
The message origin (frontend or backend)

◆ isPostgresPort()

static bool pcpp::PostgresLayer::isPostgresPort ( uint16_t  port)
inlinestatic

A static method that checks whether the port is considered as PostgreSQL

Parameters
[in]portThe port number to be checked

◆ parsePostgresBackendMessages()

static PostgresLayer* pcpp::PostgresLayer::parsePostgresBackendMessages ( uint8_t *  data,
size_t  dataLen,
Layer prevLayer,
Packet packet 
)
static

Parse a PostgreSQL backend message from raw data

Parameters
[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
Returns
A pointer to the parsed PostgresLayer, or nullptr if parsing fails

◆ parsePostgresFrontendMessages()

static PostgresLayer* pcpp::PostgresLayer::parsePostgresFrontendMessages ( uint8_t *  data,
size_t  dataLen,
Layer prevLayer,
Packet packet 
)
static

Parse a PostgreSQL frontend message from raw data

Parameters
[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
Returns
A pointer to the parsed PostgresLayer, or nullptr if parsing fails

◆ toString()

std::string pcpp::PostgresLayer::toString ( ) const
overridevirtual
Returns
Returns the protocol info as readable string

Implements pcpp::Layer.