Coverage Report

Created: 2024-02-25 06:29

/src/PcapPlusPlus/Packet++/header/NullLoopbackLayer.h
Line
Count
Source (jump to first uncovered line)
1
#pragma once
2
3
/// @file
4
5
#include "Layer.h"
6
7
namespace pcpp
8
{
9
10
  /** IPv4 protocol **/
11
3.70k
  #define PCPP_BSD_AF_INET          2
12
  /** XEROX NS protocols */
13
  #define PCPP_BSD_AF_NS            6
14
  /** ISO */
15
  #define PCPP_BSD_AF_ISO           7
16
  /** AppleTalk */
17
  #define PCPP_BSD_AF_APPLETALK     16
18
  /** IPX */
19
  #define PCPP_BSD_AF_IPX           23
20
  /** OpenBSD (and probably NetBSD), BSD/OS IPv6 */
21
0
  #define PCPP_BSD_AF_INET6_BSD     24
22
  /** FreeBSD IPv6 */
23
449
  #define PCPP_BSD_AF_INET6_FREEBSD 28
24
  /** Darwin IPv6 */
25
617
  #define PCPP_BSD_AF_INET6_DARWIN  30
26
27
  /**
28
   * @class NullLoopbackLayer
29
   * Represents a NULL/Loopback layer
30
   */
31
  class NullLoopbackLayer : public Layer
32
  {
33
  public:
34
     /** A constructor that creates the layer from an existing packet raw data
35
     * @param[in] data A pointer to the raw data
36
     * @param[in] dataLen Size of the data in bytes
37
     * @param[in] packet A pointer to the Packet instance where layer will be stored in
38
     */
39
10.6k
    NullLoopbackLayer(uint8_t* data, size_t dataLen, Packet* packet) : Layer(data, dataLen, NULL, packet) { m_Protocol = NULL_LOOPBACK; }
40
41
    /**
42
     * A constructor that allocates a new Null/Loopback header
43
     * @param[in] family The family protocol to set
44
     */
45
    explicit NullLoopbackLayer(uint32_t family);
46
47
    /**
48
     * A destructor for this layer (does nothing)
49
     */
50
0
    ~NullLoopbackLayer() {}
51
52
    /**
53
     * @return The protocol family in this layer
54
     */
55
    uint32_t getFamily() const;
56
57
    /**
58
     * Set a protocol family
59
     * @param[in] family The family protocol to set
60
     */
61
    void setFamily(uint32_t family);
62
63
64
    // implement abstract methods
65
66
    /**
67
     * Identifies the next layers by family:
68
     * - for ::PCPP_BSD_AF_INET the next layer is IPv4Layer
69
     * - for ::PCPP_BSD_AF_INET6_BSD, ::PCPP_BSD_AF_INET6_FREEBSD, ::PCPP_BSD_AF_INET6_DARWIN the next layer is IPv6Layer
70
     * - for other values the next layer in PayloadLayer (unknown protocol)
71
     */
72
    void parseNextLayer();
73
74
    /**
75
     * @return Size of Null/Loopback header = 4B
76
     */
77
2.65k
    size_t getHeaderLen() const { return sizeof(uint32_t); }
78
79
    /**
80
     * Does nothing for this layer
81
     */
82
2.63k
    void computeCalculateFields() {}
83
84
    std::string toString() const;
85
86
2.63k
    OsiModelLayer getOsiModelLayer() const { return OsiModelDataLinkLayer; }
87
  };
88
89
} // namespace pcpp