Coverage Report

Created: 2026-02-14 07:19

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
16.4k
  {
29
16.4k
    if (m_DataLen <= sizeof(llc_header))
30
26
      return;
31
32
16.4k
    llc_header* hdr = getLlcHeader();
33
16.4k
    uint8_t* payload = m_Data + sizeof(llc_header);
34
16.4k
    size_t payloadLen = m_DataLen - sizeof(llc_header);
35
36
16.4k
    if (hdr->dsap == 0x42 && hdr->ssap == 0x42 && StpLayer::isDataValid(payload, payloadLen))
37
7.79k
    {
38
7.79k
      constructNextLayerFromFactory(StpLayer::parseStpLayer, payload, payloadLen);
39
7.79k
    }
40
41
16.4k
    if (!hasNextLayer())
42
9.06k
    {
43
9.06k
      constructNextLayer<PayloadLayer>(payload, payloadLen);
44
9.06k
    }
45
16.4k
  }
46
47
  std::string LLCLayer::toString() const
48
6.46k
  {
49
6.46k
    return "Logical Link Control";
50
6.46k
  }
51
52
  bool LLCLayer::isDataValid(const uint8_t* data, size_t dataLen)
53
16.5k
  {
54
16.5k
    return dataLen >= sizeof(llc_header) && !(data[0] == 0xFF && data[1] == 0xFF);
55
16.5k
  }
56
57
}  // namespace pcpp