Coverage Report

Created: 2026-08-14 06:52

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/PcapPlusPlus/Packet++/src/TpktLayer.cpp
Line
Count
Source
1
#include "TpktLayer.h"
2
#include "EndianPortable.h"
3
#include "CotpLayer.h"
4
#include "PayloadLayer.h"
5
#include <cstring>
6
#include <sstream>
7
8
namespace pcpp
9
{
10
  TpktLayer::TpktLayer(uint8_t version, uint16_t length)
11
0
  {
12
0
    allocData(sizeof(tpkthdr));
13
14
0
    tpkthdr* tpktHdr = getTpktHeader();
15
0
    tpktHdr->version = version;
16
0
    tpktHdr->reserved = 0;
17
0
    tpktHdr->length = htobe16(length);
18
0
    m_Protocol = TPKT;
19
0
  }
20
21
  uint8_t TpktLayer::getReserved() const
22
0
  {
23
0
    return getTpktHeader()->reserved;
24
0
  }
25
26
  uint8_t TpktLayer::getVersion() const
27
3.82k
  {
28
3.82k
    return getTpktHeader()->version;
29
3.82k
  }
30
31
  uint16_t TpktLayer::getLength() const
32
3.82k
  {
33
3.82k
    return htobe16(getTpktHeader()->length);
34
3.82k
  }
35
36
  void TpktLayer::setLength(uint16_t length) const
37
0
  {
38
0
    getTpktHeader()->length = htobe16(length);
39
0
  }
40
41
  void TpktLayer::setVersion(uint8_t version) const
42
0
  {
43
0
    getTpktHeader()->version = version;
44
0
  }
45
46
  std::string TpktLayer::toString() const
47
3.82k
  {
48
3.82k
    std::ostringstream versionStream;
49
3.82k
    versionStream << std::to_string(getVersion());
50
3.82k
    std::ostringstream lengthStream;
51
3.82k
    lengthStream << std::to_string(getLength());
52
53
3.82k
    return "TPKT Layer, version: " + versionStream.str() + ", length: " + lengthStream.str();
54
3.82k
  }
55
56
  void TpktLayer::parseNextLayer()
57
13.3k
  {
58
13.3k
    size_t headerLen = getHeaderLen();
59
13.3k
    if (m_DataLen <= headerLen)
60
120
      return;
61
62
13.1k
    uint8_t* payload = m_Data + headerLen;
63
13.1k
    size_t payloadLen = m_DataLen - headerLen;
64
65
13.1k
    tryConstructNextLayerWithFallback<CotpLayer, PayloadLayer>(payload, payloadLen);
66
13.1k
  }
67
68
}  // namespace pcpp