Coverage Report

Created: 2026-02-26 06:41

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
    m_DataLen = sizeof(tpkthdr);
13
0
    m_Data = new uint8_t[m_DataLen];
14
0
    memset(m_Data, 0, m_DataLen);
15
0
    tpkthdr* tpktHdr = getTpktHeader();
16
0
    tpktHdr->version = version;
17
0
    tpktHdr->reserved = 0;
18
0
    tpktHdr->length = htobe16(length);
19
0
    m_Protocol = TPKT;
20
0
  }
21
22
  uint8_t TpktLayer::getReserved() const
23
0
  {
24
0
    return getTpktHeader()->reserved;
25
0
  }
26
27
  uint8_t TpktLayer::getVersion() const
28
4.42k
  {
29
4.42k
    return getTpktHeader()->version;
30
4.42k
  }
31
32
  uint16_t TpktLayer::getLength() const
33
4.42k
  {
34
4.42k
    return htobe16(getTpktHeader()->length);
35
4.42k
  }
36
37
  void TpktLayer::setLength(uint16_t length) const
38
0
  {
39
0
    getTpktHeader()->length = htobe16(length);
40
0
  }
41
42
  void TpktLayer::setVersion(uint8_t version) const
43
0
  {
44
0
    getTpktHeader()->version = version;
45
0
  }
46
47
  std::string TpktLayer::toString() const
48
4.42k
  {
49
4.42k
    std::ostringstream versionStream;
50
4.42k
    versionStream << std::to_string(getVersion());
51
4.42k
    std::ostringstream lengthStream;
52
4.42k
    lengthStream << std::to_string(getLength());
53
54
4.42k
    return "TPKT Layer, version: " + versionStream.str() + ", length: " + lengthStream.str();
55
4.42k
  }
56
57
  void TpktLayer::parseNextLayer()
58
15.6k
  {
59
15.6k
    size_t headerLen = getHeaderLen();
60
15.6k
    if (m_DataLen <= headerLen)
61
13
      return;
62
63
15.6k
    uint8_t* payload = m_Data + headerLen;
64
15.6k
    size_t payloadLen = m_DataLen - headerLen;
65
66
15.6k
    tryConstructNextLayerWithFallback<CotpLayer, PayloadLayer>(payload, payloadLen);
67
15.6k
  }
68
69
}  // namespace pcpp