PcapPlusPlus  Next
NullLoopbackLayer.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Layer.h"
4 
6 
9 namespace pcpp
10 {
11 
13 #define PCPP_BSD_AF_INET 2
15 #define PCPP_BSD_AF_NS 6
17 #define PCPP_BSD_AF_ISO 7
19 #define PCPP_BSD_AF_APPLETALK 16
21 #define PCPP_BSD_AF_IPX 23
23 #define PCPP_BSD_AF_INET6_BSD 24
25 #define PCPP_BSD_AF_INET6_FREEBSD 28
27 #define PCPP_BSD_AF_INET6_DARWIN 30
28 
31  class NullLoopbackLayer : public Layer
32  {
33  public:
38  NullLoopbackLayer(uint8_t* data, size_t dataLen, Packet* packet)
39  : Layer(data, dataLen, nullptr, packet, NULL_LOOPBACK)
40  {}
41 
44  explicit NullLoopbackLayer(uint32_t family);
45 
47  ~NullLoopbackLayer() override = default;
48 
50  uint32_t getFamily() const;
51 
54  void setFamily(uint32_t family);
55 
56  // implement abstract methods
57 
63  void parseNextLayer() override;
64 
66  size_t getHeaderLen() const override
67  {
68  return sizeof(uint32_t);
69  }
70 
72  void computeCalculateFields() override
73  {}
74 
75  std::string toString() const override;
76 
78  {
79  return OsiModelDataLinkLayer;
80  }
81 
86  bool static isDataValid(const uint8_t* data, size_t dataLen)
87  {
88  return data != nullptr && dataLen >= sizeof(uint32_t);
89  }
90 
95  {
97  static std::vector<FieldDescriptor> all()
98  {
99  auto result = Layer::SerializedFields::all();
100  std::initializer_list<FieldDescriptor> extra{ Family };
101  std::copy(extra.begin(), extra.end(), std::back_inserter(result));
102  return result;
103  }
104 
106  static const FieldDescriptor Family;
107  };
108 
109  protected:
110  void serializeLayer(ObjectScope& serializer) const override;
111  };
112 } // namespace pcpp
Definition: Layer.h:117
Definition: NullLoopbackLayer.h:32
uint32_t getFamily() const
void computeCalculateFields() override
Does nothing for this layer.
Definition: NullLoopbackLayer.h:72
NullLoopbackLayer(uint8_t *data, size_t dataLen, Packet *packet)
Definition: NullLoopbackLayer.h:38
std::string toString() const override
void serializeLayer(ObjectScope &serializer) const override
NullLoopbackLayer(uint32_t family)
void setFamily(uint32_t family)
size_t getHeaderLen() const override
Definition: NullLoopbackLayer.h:66
~NullLoopbackLayer() override=default
A destructor for this layer (does nothing)
OsiModelLayer getOsiModelLayer() const override
Definition: NullLoopbackLayer.h:77
void parseNextLayer() override
static bool isDataValid(const uint8_t *data, size_t dataLen)
Check if the data passes minimal validity checks for Null/Loopback layer.
Definition: NullLoopbackLayer.h:86
Definition: Serializers.h:230
Definition: Packet.h:49
const ProtocolType NULL_LOOPBACK
Null/Loopback protocol.
Definition: ProtocolType.h:120
The main namespace for the PcapPlusPlus lib.
Definition: AssertionUtils.h:19
OsiModelLayer
An enum representing OSI model layers.
Definition: ProtocolType.h:420
@ OsiModelDataLinkLayer
Data link layer (layer 2)
Definition: ProtocolType.h:424
Definition: Serializers.h:18
Definition: Layer.h:212
static std::vector< FieldDescriptor > all()
Definition: Layer.h:214
Definition: NullLoopbackLayer.h:95
static const FieldDescriptor Family
Protocol family (AF_* value) of the payload.
Definition: NullLoopbackLayer.h:106
static std::vector< FieldDescriptor > all()
Definition: NullLoopbackLayer.h:97