Coverage Report

Created: 2026-08-15 08:03

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
    allocData(sizeof(llc_header));
15
0
    m_Protocol = LLC;
16
17
    // Set values
18
0
    llc_header* header = getLlcHeader();
19
0
    header->dsap = dsap;
20
0
    header->ssap = ssap;
21
0
    header->control = control;
22
0
  }
23
24
  void LLCLayer::parseNextLayer()
25
3.98k
  {
26
3.98k
    if (m_DataLen <= sizeof(llc_header))
27
1.27k
      return;
28
29
2.71k
    llc_header* hdr = getLlcHeader();
30
2.71k
    uint8_t* payload = m_Data + sizeof(llc_header);
31
2.71k
    size_t payloadLen = m_DataLen - sizeof(llc_header);
32
33
2.71k
    if (hdr->dsap == 0x42 && hdr->ssap == 0x42 && StpLayer::isDataValid(payload, payloadLen))
34
0
    {
35
0
      constructNextLayerFromFactory(StpLayer::parseStpLayer, payload, payloadLen);
36
0
    }
37
38
2.71k
    if (!hasNextLayer())
39
2.71k
    {
40
2.71k
      constructNextLayer<PayloadLayer>(payload, payloadLen);
41
2.71k
    }
42
2.71k
  }
43
44
  std::string LLCLayer::toString() const
45
2.04k
  {
46
2.04k
    return "Logical Link Control";
47
2.04k
  }
48
49
  bool LLCLayer::isDataValid(const uint8_t* data, size_t dataLen)
50
4.23k
  {
51
4.23k
    return dataLen >= sizeof(llc_header) && !(data[0] == 0xFF && data[1] == 0xFF);
52
4.23k
  }
53
54
}  // namespace pcpp