Coverage Report

Created: 2026-02-26 06:41

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/PcapPlusPlus/Packet++/src/LLCLayer.cpp
Line
Count
Source
1
#define LOG_MODULE PacketLogModuleLLCLayer
2
3
#include "LLCLayer.h"
4
#include "PayloadLayer.h"
5
#include "StpLayer.h"
6
7
#include <cstring>
8
9
namespace pcpp
10
{
11
12
  LLCLayer::LLCLayer(uint8_t dsap, uint8_t ssap, uint8_t control)
13
0
  {
14
0
    m_DataLen = sizeof(llc_header);
15
0
    m_Data = new uint8_t[sizeof(llc_header)];
16
0
    memset(m_Data, 0, sizeof(llc_header));
17
18
0
    m_Protocol = LLC;
19
20
    // Set values
21
0
    llc_header* header = getLlcHeader();
22
0
    header->dsap = dsap;
23
0
    header->ssap = ssap;
24
0
    header->control = control;
25
0
  }
26
27
  void LLCLayer::parseNextLayer()
28
22.2k
  {
29
22.2k
    if (m_DataLen <= sizeof(llc_header))
30
1.09k
      return;
31
32
21.1k
    llc_header* hdr = getLlcHeader();
33
21.1k
    uint8_t* payload = m_Data + sizeof(llc_header);
34
21.1k
    size_t payloadLen = m_DataLen - sizeof(llc_header);
35
36
21.1k
    if (hdr->dsap == 0x42 && hdr->ssap == 0x42 && StpLayer::isDataValid(payload, payloadLen))
37
7.87k
    {
38
7.87k
      constructNextLayerFromFactory(StpLayer::parseStpLayer, payload, payloadLen);
39
7.87k
    }
40
41
21.1k
    if (!hasNextLayer())
42
13.7k
    {
43
13.7k
      constructNextLayer<PayloadLayer>(payload, payloadLen);
44
13.7k
    }
45
21.1k
  }
46
47
  std::string LLCLayer::toString() const
48
9.25k
  {
49
9.25k
    return "Logical Link Control";
50
9.25k
  }
51
52
  bool LLCLayer::isDataValid(const uint8_t* data, size_t dataLen)
53
22.7k
  {
54
22.7k
    return dataLen >= sizeof(llc_header) && !(data[0] == 0xFF && data[1] == 0xFF);
55
22.7k
  }
56
57
}  // namespace pcpp