PcapPlusPlus  Next
pcpp::QuicV1LongHeaderLayer Class Reference

#include <QuicLayer.h>

Inheritance diagram for pcpp::QuicV1LongHeaderLayer:
pcpp::QuicV1Layer pcpp::Layer pcpp::IDataContainer pcpp::QuicV1EstablishmentLayer pcpp::QuicV1RetryLayer pcpp::QuicV1VersionNegotiationLayer pcpp::QuicV1HandshakeLayer pcpp::QuicV1InitialLayer pcpp::QuicV1ZeroRttLayer

Classes

struct  OffsetAndLength
 

Public Member Functions

QuicPacketType getPacketType () const override
 
uint32_t getVersion () const
 
std::vector< uint8_t > getDestinationConnectionId () const
 
std::string getDestinationConnectionIdAsString () const
 
std::vector< uint8_t > getSourceConnectionId () const
 
std::string getSourceConnectionIdAsString () const
 
- Public Member Functions inherited from pcpp::QuicV1Layer
QuicHeaderForm getHeaderForm () const
 
uint8_t getFixedBit () const
 
void parseNextLayer () override
 
void computeCalculateFields () override
 Does nothing for this layer.
 
std::string toString () const override
 
OsiModelLayer getOsiModelLayer () 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
 Copy the raw data of this layer to another array. More...
 
size_t copyData (uint8_t *dest, size_t destSize) const
 Copy the raw data of this layer to another array, with a specified maximum size. More...
 
uint8_t * getDataPtr (size_t offset=0) const override
 
virtual size_t getHeaderLen () const =0
 

Additional Inherited Members

- Public Types inherited from pcpp::QuicV1Layer
enum class  QuicPacketType : uint8_t {
  Initial = 0 , ZeroRTT = 1 , Handshake = 2 , Retry = 3 ,
  VersionNegotiation = 253 , OneRtt = 254
}
 
enum class  QuicHeaderForm : uint8_t { ShortHeader = 0 , LongHeader = 1 }
 
- Static Public Member Functions inherited from pcpp::QuicV1Layer
static QuicV1LayerparseQuicLayer (uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
 
static bool isQuicPort (uint16_t port)
 
- 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...
 
void allocData (size_t dataLen, bool zeroInit=true)
 Requests the layer to allocate a new data buffer of the specified length. 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

Base class for all QUIC v1 packet forms that use the long header (Initial, 0-RTT, Handshake, Retry and Version Negotiation). Provides parsing shared by all of them: the QUIC version and the Destination/Source Connection IDs, which sit at a fixed offset (Destination) or immediately after it (Source) in every long-header packet

Member Function Documentation

◆ getDestinationConnectionId()

std::vector<uint8_t> pcpp::QuicV1LongHeaderLayer::getDestinationConnectionId ( ) const
Returns
The Destination Connection ID, or an empty vector if the packet doesn't contain enough data to read it

◆ getDestinationConnectionIdAsString()

std::string pcpp::QuicV1LongHeaderLayer::getDestinationConnectionIdAsString ( ) const
Returns
The Destination Connection ID as hex string, or an empty string if the packet doesn't contain enough data to read it

◆ getPacketType()

QuicPacketType pcpp::QuicV1LongHeaderLayer::getPacketType ( ) const
overridevirtual
Returns
The packet type, read from the Long Packet Type field of the long header

Implements pcpp::QuicV1Layer.

Reimplemented in pcpp::QuicV1VersionNegotiationLayer.

◆ getSourceConnectionId()

std::vector<uint8_t> pcpp::QuicV1LongHeaderLayer::getSourceConnectionId ( ) const
Returns
The Source Connection ID, or an empty vector if the packet doesn't contain enough data to read it

◆ getSourceConnectionIdAsString()

std::string pcpp::QuicV1LongHeaderLayer::getSourceConnectionIdAsString ( ) const
Returns
The Source Connection ID as hex string, or an empty string if the packet doesn't contain enough data to read it

◆ getVersion()

uint32_t pcpp::QuicV1LongHeaderLayer::getVersion ( ) const
Returns
The QUIC version