29 size_t m_MaxPacketLen;
31 bool m_CanReallocateData;
112 destructPacketData();
184 return insertLayer(m_LastLayer, newLayer, ownInPacket);
273 template <
class TLayer> TLayer*
getLayerOfType(
bool reverseOrder =
false)
const;
312 std::string
toString(
bool timeAsLocalTime =
true)
const;
318 void toStringList(std::vector<std::string>& result,
bool timeAsLocalTime =
true)
const;
321 void copyDataFrom(
const Packet& other);
323 void destructPacketData();
325 bool extendLayer(
Layer* layer,
int offsetInLayer,
size_t numOfBytesToExtend);
326 bool shortenLayer(
Layer* layer,
int offsetInLayer,
size_t numOfBytesToShorten);
328 void reallocateRawData(
size_t newSize);
332 std::string printPacketInfo(
bool timeAsLocalTime)
const;
358 if (curLayer ==
nullptr)
362 while ((curLayer !=
nullptr) && (
dynamic_cast<TLayer*
>(curLayer) ==
nullptr))
367 return dynamic_cast<TLayer*
>(curLayer);
372 if (curLayer ==
nullptr)
376 while (curLayer !=
nullptr &&
dynamic_cast<TLayer*
>(curLayer) ==
nullptr)
381 return dynamic_cast<TLayer*
>(curLayer);
384 inline std::ostream& operator<<(std::ostream& os,
const pcpp::Packet& packet)
Layer * getNextLayer() const
Definition: Layer.h:69
Layer * getPrevLayer() const
Definition: Layer.h:75
bool isPacketOfType(ProtocolType protocolType) const
bool insertLayer(Layer *prevLayer, Layer *newLayer, bool ownInPacket=false)
Packet(const Packet &other)
Definition: Packet.h:118
const RawPacket * getRawPacketReadOnly() const
Definition: Packet.h:155
Packet & operator=(const Packet &other)
bool removeLayer(ProtocolType layerType, int index=0)
virtual ~Packet()
Definition: Packet.h:110
Layer * detachLayer(ProtocolType layerType, int index=0)
RawPacket * getRawPacket() const
Definition: Packet.h:133
bool isPacketOfType(ProtocolTypeFamily protocolTypeFamily) const
Packet(uint8_t *buffer, size_t bufferSize, LinkLayerType linkType=LINKTYPE_ETHERNET)
bool removeAllLayersAfter(Layer *layer)
void setRawPacket(RawPacket *rawPacket, bool freeRawPacket, ProtocolTypeFamily parseUntil=UnknownProtocol, OsiModelLayer parseUntilLayer=OsiModelLayerUnknown)
Layer * getLayerOfType(ProtocolType layerType, int index=0) const
TLayer * getPrevLayerOfType(Layer *startLayer) const
Definition: Packet.h:370
Packet(RawPacket *rawPacket, OsiModelLayer parseUntilLayer)
Layer * getLastLayer() const
Definition: Packet.h:169
std::string toString(bool timeAsLocalTime=true) const
TLayer * getNextLayerOfType(Layer *startLayer) const
Definition: Packet.h:356
Packet(RawPacket *rawPacket, ProtocolType parseUntil)
Packet(RawPacket *rawPacket, bool freeRawPacket=false, ProtocolType parseUntil=UnknownProtocol, OsiModelLayer parseUntilLayer=OsiModelLayerUnknown)
void computeCalculateFields()
void toStringList(std::vector< std::string > &result, bool timeAsLocalTime=true) const
Packet(size_t maxPacketLen=1, LinkLayerType linkType=LINKTYPE_ETHERNET)
bool addLayer(Layer *newLayer, bool ownInPacket=false)
Definition: Packet.h:182
bool detachLayer(Layer *layer)
Definition: Packet.h:255
Packet(RawPacket *rawPacket, ProtocolTypeFamily parseUntilFamily)
Layer * getFirstLayer() const
Definition: Packet.h:162
Definition: RawPacket.h:259
The main namespace for the PcapPlusPlus lib.
uint8_t ProtocolType
Definition: ProtocolType.h:13
OsiModelLayer
An enum representing OSI model layers.
Definition: ProtocolType.h:225
@ OsiModelLayerUnknown
Unknown / null layer.
Definition: ProtocolType.h:241
uint32_t ProtocolTypeFamily
Definition: ProtocolType.h:17
LinkLayerType
An enum describing all known link layer type. Taken from: http://www.tcpdump.org/linktypes....
Definition: RawPacket.h:20
@ LINKTYPE_ETHERNET
IEEE 802.3 Ethernet.
Definition: RawPacket.h:24
const ProtocolType UnknownProtocol
Unknown protocol (or unsupported by PcapPlusPlus)
Definition: ProtocolType.h:20