PcapPlusPlus  Next
PacketUtils.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Packet.h"
4 #include "IpAddress.h"
5 #include "PointerVector.h"
6 
8 
11 namespace pcpp
12 {
14  template <typename T> struct ScalarBuffer
15  {
17  T* buffer;
18 
20  size_t len;
21  };
22 
27  uint16_t computeChecksum(ScalarBuffer<uint16_t> vec[], size_t vecSize);
28 
37  uint16_t computePseudoHdrChecksum(uint8_t* dataPtr, size_t dataLen, IPAddress::AddressType ipAddrType,
38  uint8_t protocolType, IPAddress srcIPAddress, IPAddress dstIPAddress);
39 
45  uint32_t fnvHash(ScalarBuffer<uint8_t> vec[], size_t vecSize);
46 
51  uint32_t fnvHash(uint8_t* buffer, size_t bufSize);
52 
59  uint32_t hash5Tuple(Packet* packet, bool const& directionUnique = false);
60 
65  uint32_t hash2Tuple(Packet* packet);
66 
74  {
75  public:
78  explicit PacketSerializer(ISerializer& serializer) : m_Packets(serializer.writeArray(Packets))
79  {}
80 
81  PacketSerializer(const PacketSerializer&) = delete;
82  PacketSerializer& operator=(const PacketSerializer&) = delete;
83 
86  void addPacket(const Packet& packet);
87 
90  void addPacket(const Packet* packet);
91 
95  void addPackets(const PointerVector<Packet>& packets);
96 
100  void addPackets(const std::vector<Packet>& packets);
101 
102  private:
103  static const FieldDescriptor Packets;
104 
105  ArrayScope m_Packets;
106  };
107 } // namespace pcpp
Definition: Serializers.h:214
Definition: IpAddress.h:318
AddressType
An enum representing the address type: IPv4 or IPv6.
Definition: IpAddress.h:322
Definition: Serializers.h:78
Definition: Packet.h:49
Definition: PacketUtils.h:74
void addPackets(const PointerVector< Packet > &packets)
void addPacket(const Packet *packet)
void addPackets(const std::vector< Packet > &packets)
PacketSerializer(ISerializer &serializer)
Definition: PacketUtils.h:78
void addPacket(const Packet &packet)
Definition: PointerVector.h:50
The main namespace for the PcapPlusPlus lib.
Definition: AssertionUtils.h:19
uint32_t hash2Tuple(Packet *packet)
uint32_t hash5Tuple(Packet *packet, bool const &directionUnique=false)
uint16_t computePseudoHdrChecksum(uint8_t *dataPtr, size_t dataLen, IPAddress::AddressType ipAddrType, uint8_t protocolType, IPAddress srcIPAddress, IPAddress dstIPAddress)
uint16_t computeChecksum(ScalarBuffer< uint16_t > vec[], size_t vecSize)
uint32_t fnvHash(ScalarBuffer< uint8_t > vec[], size_t vecSize)
Definition: Serializers.h:18
A struct that represent a single buffer.
Definition: PacketUtils.h:15
T * buffer
The pointer to the buffer.
Definition: PacketUtils.h:17
size_t len
Buffer length.
Definition: PacketUtils.h:20