|
PcapPlusPlus
Next
|
#include <QuicLayer.h>
Classes | |
| struct | ProtectedPayload |
| struct | quic_common_header |
| struct | quic_long_header |
| struct | quic_short_header |
Public Types | |
| 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 } |
Public Member Functions | |
| virtual QuicPacketType | getPacketType () const =0 |
| 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 | |
| Layer * | getNextLayer () const |
| Layer * | getPrevLayer () 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 |
Static Public Member Functions | |
| static QuicV1Layer * | parseQuicLayer (uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet) |
| static bool | isQuicPort (uint16_t port) |
Additional Inherited Members | |
Protected Member Functions inherited from pcpp::Layer | |
| Packet * | getAttachedPacket () |
| 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> | |
| Layer * | constructNextLayer (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> | |
| Layer * | constructNextLayer (uint8_t *data, size_t dataLen, Packet *packet, Args &&... extraArgs) |
| template<typename TFactory , typename... Args> | |
| Layer * | constructNextLayerFromFactory (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> | |
| Layer * | constructNextLayerFromFactory (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> | |
| Layer * | tryConstructNextLayer (uint8_t *data, size_t dataLen, Args &&... extraArgs) |
| template<typename T , typename... Args> | |
| Layer * | tryConstructNextLayer (uint8_t *data, size_t dataLen, Packet *packet, Args &&... extraArgs) |
| template<typename T , typename TFallback , typename... Args> | |
| Layer * | tryConstructNextLayerWithFallback (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> | |
| Layer * | tryConstructNextLayerWithFallback (uint8_t *data, size_t dataLen, Packet *packet, Args &&... extraArgs) |
| template<typename TFallback , typename TFactory , typename... Args> | |
| Layer * | tryConstructNextLayerFromFactoryWithFallback (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> | |
| Layer * | tryConstructNextLayerFromFactoryWithFallback (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... | |
Represents a QUIC v1 (RFC 9000/9001) protocol layer.
|
strong |
Identifies whether a QUIC packet uses the long or short header form (RFC 9000 Section 17.2 vs. 17.3)
|
strong |
Identifies the kind of QUIC v1 packet, as carried by the Long Packet Type field for long-header packets (RFC 9000 Section 17.2), or inferred for short-header (1-RTT) and Version Negotiation packets, which don't carry this field on the wire
| uint8_t pcpp::QuicV1Layer::getFixedBit | ( | ) | const |
| QuicHeaderForm pcpp::QuicV1Layer::getHeaderForm | ( | ) | const |
|
inlineoverridevirtual |
Implements pcpp::Layer.
|
pure virtual |
Implemented in pcpp::QuicV1OneRttLayer, pcpp::QuicV1VersionNegotiationLayer, and pcpp::QuicV1LongHeaderLayer.
|
inlinestatic |
A static method that checks whether the port is considered as QUIC
| [in] | port | The port number to be checked |
|
overridevirtual |
Wraps any bytes remaining after this packet's header/payload as a subsequent QuicV1Layer if getHeaderLen() leaves data unconsumed - QUIC datagrams commonly coalesce multiple packets back to back - falling back to a PayloadLayer if what follows can't be parsed as QUIC
Implements pcpp::Layer.
|
static |
A static method that creates a QUIC v11 layer from packet raw data. Returns nullptr if data is not valid.
| [in] | data | A pointer to the raw data |
| [in] | dataLen | Size of the data in bytes |
| [in] | prevLayer | A pointer to the previous layer |
| [in] | packet | A pointer to the Packet instance where layer will be stored |
|
overridevirtual |
Implements pcpp::Layer.