Coverage Report

Created: 2026-10-17 07:09

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/PcapPlusPlus/Tests/Fuzzers/ReadParsedPacket.h
Line
Count
Source
1
#pragma once
2
3
#include <Packet.h>
4
#include <IPv4Layer.h>
5
#include <TelnetLayer.h>
6
#include <BgpLayer.h>
7
#include <DhcpLayer.h>
8
#include <DhcpV6Layer.h>
9
#include <DnsLayer.h>
10
#include <IcmpLayer.h>
11
#include <NtpLayer.h>
12
#include <SSLLayer.h>
13
#include <SSLHandshake.h>
14
#include <TcpLayer.h>
15
#include <SdpLayer.h>
16
#include <VrrpLayer.h>
17
#include <Sll2Layer.h>
18
#include <FtpLayer.h>
19
#include <GreLayer.h>
20
#include <GtpLayer.h>
21
#include <SomeIpSdLayer.h>
22
23
// Call some pcpp::Packet methods that are not invoked from general virtual methods
24
// as `pcpp::Packet::toString` or `pcpp::Packet::computeCalculateFields` to trigger possible crashes.
25
// The general rule is the functions do not modify the `parsedPacket`.
26
// If you made changes to PcapPlusPlus and the code doesn't compile - fix the method call as any other unit test
27
static void readParsedPacket(pcpp::Packet parsedPacket, pcpp::Layer* layer)
28
1.56M
{
29
1.56M
  if (parsedPacket.isPacketOfType(pcpp::Telnet))
30
52.5k
  {
31
52.5k
    if (auto telnetLayer = dynamic_cast<pcpp::TelnetLayer*>(layer))
32
10.7k
    {
33
10.7k
      telnetLayer->getFirstCommand();
34
10.7k
      telnetLayer->getTotalNumberOfCommands();
35
36
10.7k
      pcpp::TelnetLayer::TelnetCommand commandVal;
37
10.7k
      do
38
66.9k
      {
39
66.9k
        commandVal = telnetLayer->getNextCommand();
40
66.9k
        std::cout << "Telnet command is '" << telnetLayer->getTelnetCommandAsString(commandVal) << "'"
41
66.9k
                  << std::endl;
42
66.9k
        pcpp::TelnetLayer::TelnetOption option = telnetLayer->getOption();
43
66.9k
        std::cout << "Telnet option is '" << telnetLayer->getTelnetOptionAsString(option) << "'" << std::endl;
44
45
66.9k
        telnetLayer->getDataAsString(true);
46
66.9k
        telnetLayer->getNumberOfCommands(commandVal);
47
66.9k
        telnetLayer->getOption(commandVal);
48
66.9k
        size_t length = 0;
49
66.9k
        telnetLayer->getOptionData(length);
50
66.9k
        telnetLayer->getOptionData(commandVal, length);
51
66.9k
      } while (commandVal != pcpp::TelnetLayer::TelnetCommand::TelnetCommandEndOfPacket);
52
10.7k
    }
53
52.5k
  }
54
1.56M
  if (parsedPacket.isPacketOfType(pcpp::ARP))
55
16.8k
  {
56
16.8k
    if (auto arpLayer = dynamic_cast<pcpp::ArpLayer*>(layer))
57
5.76k
    {
58
5.76k
      arpLayer->isReply();
59
5.76k
      arpLayer->isRequest();
60
5.76k
    }
61
16.8k
  }
62
1.56M
  if (parsedPacket.isPacketOfType(pcpp::SomeIP))
63
66.3k
  {
64
66.3k
    if (auto someipLayer = dynamic_cast<pcpp::SomeIpSdLayer*>(layer))
65
10.2k
    {
66
10.2k
      auto entries = someipLayer->getEntries();
67
10.2k
      if (!entries.empty())
68
10.1k
      {
69
10.1k
        auto opts = someipLayer->getOptionsFromEntry(0);
70
10.1k
        for (auto opt : opts)
71
5.44k
          delete opt;
72
10.1k
      }
73
74
10.2k
      for (auto entry : entries)
75
10.6k
      {
76
10.6k
        entry->getNumOptions();
77
10.6k
        entry->getServiceId();
78
10.6k
        entry->getInstanceId();
79
10.6k
        entry->getMajorVersion();
80
10.6k
        entry->getMinorVersion();
81
10.6k
        entry->getCounter();
82
10.6k
        entry->getEventgroupId();
83
10.6k
        delete entry;
84
10.6k
      }
85
86
10.2k
      someipLayer->getFlags();
87
10.2k
      auto opts = someipLayer->getOptions();
88
10.2k
      for (auto opt : opts)
89
6.57k
      {
90
6.57k
        opt->getType();
91
6.57k
        if (auto v4opt = dynamic_cast<pcpp::SomeIpSdIPv4Option*>(opt))
92
5.28k
        {
93
5.28k
          v4opt->getIpAddress();
94
5.28k
          v4opt->getPort();
95
5.28k
          v4opt->getProtocol();
96
5.28k
        }
97
1.29k
        else if (auto v6opt = dynamic_cast<pcpp::SomeIpSdIPv6Option*>(opt))
98
501
        {
99
501
          v6opt->getIpAddress();
100
501
          v6opt->getPort();
101
501
          v6opt->getProtocol();
102
501
        }
103
6.57k
        delete opt;
104
6.57k
      }
105
10.2k
    }
106
66.3k
  }
107
1.56M
  if (parsedPacket.isPacketOfType(pcpp::GTP))
108
58.9k
  {
109
58.9k
    if (auto gtpLayer = dynamic_cast<pcpp::GtpV1Layer*>(layer))
110
8.79k
    {
111
8.79k
      uint16_t value16 = 0;
112
8.79k
      gtpLayer->getSequenceNumber(value16);
113
8.79k
      uint8_t value8;
114
8.79k
      gtpLayer->getNpduNumber(value8);
115
8.79k
      gtpLayer->getMessageType();
116
8.79k
      gtpLayer->getMessageTypeAsString();
117
8.79k
      gtpLayer->isGTPUMessage();
118
8.79k
      gtpLayer->isGTPCMessage();
119
8.79k
      auto ext = gtpLayer->getNextExtension();
120
8.79k
      ext.getExtensionType();
121
8.79k
      ext.getContent();
122
8.79k
      ext.getContentLength();
123
8.79k
      ext.getNextExtension();
124
8.79k
    }
125
58.9k
  }
126
1.56M
  if (parsedPacket.isPacketOfType(pcpp::GRE))
127
115k
  {
128
115k
    if (auto greLayer = dynamic_cast<pcpp::GreLayer*>(layer))
129
16.9k
    {
130
16.9k
      uint32_t value32 = 0;
131
16.9k
      greLayer->getSequenceNumber(value32);
132
16.9k
    }
133
115k
  }
134
1.56M
  if (parsedPacket.isPacketOfType(pcpp::GREv0))
135
18.7k
  {
136
18.7k
    if (auto greLayer = dynamic_cast<pcpp::GREv0Layer*>(layer))
137
4.60k
    {
138
4.60k
      uint16_t value16 = 0;
139
4.60k
      greLayer->getChecksum(value16);
140
4.60k
      greLayer->getOffset(value16);
141
4.60k
      uint32_t value32 = 0;
142
4.60k
      greLayer->getKey(value32);
143
4.60k
    }
144
18.7k
  }
145
1.56M
  if (parsedPacket.isPacketOfType(pcpp::GREv1))
146
96.8k
  {
147
96.8k
    if (auto greLayer = dynamic_cast<pcpp::GREv1Layer*>(layer))
148
12.3k
    {
149
12.3k
      uint32_t value32 = 0;
150
12.3k
      greLayer->getAcknowledgmentNum(value32);
151
12.3k
    }
152
96.8k
  }
153
1.56M
  if (parsedPacket.isPacketOfType(pcpp::FTP))
154
27.2k
  {
155
27.2k
    if (auto ftpLayer = dynamic_cast<pcpp::FtpRequestLayer*>(layer))
156
1.38k
    {
157
1.38k
      ftpLayer->getCommandOption(false);
158
1.38k
      ftpLayer->getCommandOption(true);
159
1.38k
    }
160
25.8k
    else if (auto ftpLayer = dynamic_cast<pcpp::FtpResponseLayer*>(layer))
161
4.13k
    {
162
4.13k
      ftpLayer->getStatusCode();
163
4.13k
      ftpLayer->getStatusOption(false);
164
4.13k
      ftpLayer->getStatusOption(true);
165
4.13k
    }
166
27.2k
  }
167
1.56M
  if (parsedPacket.isPacketOfType(pcpp::SLL2))
168
5.84k
  {
169
5.84k
    if (auto sllLayer = dynamic_cast<pcpp::Sll2Layer*>(layer))
170
2.12k
    {
171
2.12k
      sllLayer->getLinkLayerAsMacAddress();
172
2.12k
      sllLayer->getProtocolType();
173
2.12k
      sllLayer->getInterfaceIndex();
174
2.12k
      sllLayer->getArphrdType();
175
2.12k
      sllLayer->getPacketType();
176
2.12k
    }
177
5.84k
  }
178
1.56M
  if (parsedPacket.isPacketOfType(pcpp::VRRP))
179
17.8k
  {
180
17.8k
    if (auto vrrpLayer = dynamic_cast<pcpp::VrrpLayer*>(layer))
181
5.18k
    {
182
5.18k
      vrrpLayer->getIPAddresses();
183
5.18k
      vrrpLayer->isChecksumCorrect();
184
5.18k
      vrrpLayer->getChecksum();
185
5.18k
      vrrpLayer->getPriorityAsEnum();
186
5.18k
      vrrpLayer->getPriority();
187
5.18k
      vrrpLayer->getType();
188
5.18k
    }
189
17.8k
  }
190
1.56M
  if (parsedPacket.isPacketOfType(pcpp::VRRPv2))
191
7.21k
  {
192
7.21k
    if (auto vrrpLayer = dynamic_cast<pcpp::VrrpV2Layer*>(layer))
193
2.04k
    {
194
2.04k
      vrrpLayer->getAuthTypeAsEnum();
195
2.04k
      vrrpLayer->getAdvInt();
196
2.04k
    }
197
7.21k
  }
198
1.56M
  if (parsedPacket.isPacketOfType(pcpp::VRRPv3))
199
10.6k
  {
200
10.6k
    if (auto vrrpLayer = dynamic_cast<pcpp::VrrpV3Layer*>(layer))
201
3.13k
    {
202
3.13k
      vrrpLayer->getMaxAdvInt();
203
3.13k
    }
204
10.6k
  }
205
1.56M
  if (parsedPacket.isPacketOfType(pcpp::TCP))
206
854k
  {
207
854k
    if (auto tcpLayer = dynamic_cast<pcpp::TcpLayer*>(layer))
208
197k
    {
209
197k
      auto tcpLayer2(*tcpLayer);
210
197k
      tcpLayer2.insertTcpOptionAfter(pcpp::TcpOptionBuilder(pcpp::TcpOptionBuilder::NopEolOptionEnumType::Nop),
211
197k
                                     pcpp::TcpOptionEnumType::Nop);
212
197k
    }
213
854k
  }
214
1.56M
  if (parsedPacket.isPacketOfType(pcpp::SDP))
215
58.6k
  {
216
58.6k
    if (auto sdpLayer = dynamic_cast<pcpp::SdpLayer*>(layer))
217
6.55k
    {
218
6.55k
      sdpLayer->getOwnerIPv4Address();
219
6.55k
      sdpLayer->getMediaPort("audio");
220
6.55k
      sdpLayer->getFieldCount();
221
222
6.55k
      auto sdpLayer2 = *sdpLayer;
223
6.55k
      std::vector<std::string> audioAttributes;
224
6.55k
      audioAttributes.push_back("rtpmap:8 PCMA/8000");
225
6.55k
      sdpLayer2.addMediaDescription("audio", 6010, "RTP/AVP", "8 96", audioAttributes);
226
6.55k
      sdpLayer2.addField(PCPP_SDP_PROTOCOL_VERSION_FIELD, "0");
227
6.55k
      sdpLayer2.removeField(PCPP_SDP_PROTOCOL_VERSION_FIELD);
228
6.55k
    }
229
58.6k
  }
230
1.56M
  if (parsedPacket.isPacketOfType(pcpp::SSL))
231
251k
  {
232
251k
    if (auto handshakeLayer = dynamic_cast<pcpp::SSLHandshakeLayer*>(layer))
233
36.7k
    {
234
36.7k
      if (auto clientHelloMessage = handshakeLayer->getHandshakeMessageOfType<pcpp::SSLClientHelloMessage>())
235
14.3k
      {
236
14.3k
        clientHelloMessage->getCompressionMethodsValue();
237
14.3k
        clientHelloMessage->getSessionID();
238
14.3k
        clientHelloMessage->getHandshakeType();
239
14.3k
        clientHelloMessage->getHandshakeVersion();
240
241
14.3k
        pcpp::SSLCipherSuite::getCipherSuiteByName("TLS_RSA_WITH_NULL_MD5");
242
11.3M
        for (int i = 0; i < clientHelloMessage->getCipherSuiteCount(); i++)
243
11.3M
        {
244
11.3M
          clientHelloMessage->getCipherSuite(i);
245
11.3M
          bool valid;
246
11.3M
          clientHelloMessage->getCipherSuiteID(i, valid);
247
11.3M
        }
248
14.3k
        if (auto ext = clientHelloMessage->getExtensionOfType<pcpp::SSLServerNameIndicationExtension>())
249
8.56k
          ext->getHostName();
250
14.3k
        if (auto ext = clientHelloMessage->getExtensionOfType<pcpp::SSLSupportedVersionsExtension>())
251
2.33k
          ext->getSupportedVersions();
252
253
14.3k
        clientHelloMessage->getExtensionOfType(pcpp::SSL_EXT_SERVER_NAME);
254
14.3k
        clientHelloMessage->getExtensionOfType((uint16_t)0);
255
256
14.3k
        auto fingerprint = clientHelloMessage->generateTLSFingerprint();
257
14.3k
        fingerprint.toMD5();
258
14.3k
      }
259
36.7k
      if (auto serverHelloMessage = handshakeLayer->getHandshakeMessageOfType<pcpp::SSLServerHelloMessage>())
260
9.14k
      {
261
9.14k
        serverHelloMessage->getCompressionMethodsValue();
262
9.14k
        serverHelloMessage->getSessionID();
263
9.14k
        serverHelloMessage->getCipherSuite();
264
265
9.14k
        serverHelloMessage->getExtensionOfType<pcpp::SSLServerNameIndicationExtension>();
266
9.14k
        serverHelloMessage->getExtensionOfType(pcpp::SSL_EXT_SERVER_NAME);
267
9.14k
        serverHelloMessage->getExtensionOfType((uint16_t)0);
268
269
9.14k
        serverHelloMessage->getHandshakeVersion();
270
9.14k
        auto fingerprint = serverHelloMessage->generateTLSFingerprint();
271
9.14k
        fingerprint.toMD5();
272
9.14k
      }
273
36.7k
      if (auto handshakeMessage = handshakeLayer->getHandshakeMessageOfType<pcpp::SSLHandshakeMessage>())
274
31.7k
      {
275
31.7k
        handshakeMessage->isMessageComplete();
276
31.7k
      }
277
36.7k
    }
278
251k
  }
279
1.56M
  if (parsedPacket.isPacketOfType(pcpp::NTP))
280
14.9k
  {
281
14.9k
    if (auto ntpLayer = dynamic_cast<pcpp::NtpLayer*>(layer))
282
3.41k
    {
283
3.41k
      ntpLayer->getLeapIndicator();
284
3.41k
      ntpLayer->getMode();
285
3.41k
      ntpLayer->getModeString();
286
3.41k
      ntpLayer->getStratum();
287
3.41k
      ntpLayer->getPollInterval();
288
3.41k
      ntpLayer->getPrecision();
289
3.41k
      ntpLayer->getRootDelay();
290
3.41k
      ntpLayer->getRootDispersion();
291
3.41k
      ntpLayer->getReferenceIdentifier();
292
3.41k
      ntpLayer->getReferenceIdentifierString();
293
3.41k
      ntpLayer->getReferenceTimestamp();
294
3.41k
      ntpLayer->getOriginTimestamp();
295
3.41k
      ntpLayer->getReceiveTimestamp();
296
3.41k
      ntpLayer->getTransmitTimestamp();
297
298
3.41k
      ntpLayer->getDigest();
299
3.41k
      ntpLayer->getKeyID();
300
301
3.41k
      ntpLayer->getPollIntervalInSecs();
302
3.41k
      ntpLayer->getPrecisionInSecs();
303
3.41k
      ntpLayer->getRootDelayInSecs();
304
3.41k
      ntpLayer->getRootDispersionInSecs();
305
3.41k
      ntpLayer->getReferenceTimestampInSecs();
306
3.41k
      ntpLayer->getOriginTimestampInSecs();
307
3.41k
      ntpLayer->getReceiveTimestampInSecs();
308
3.41k
      ntpLayer->getTransmitTimestampInSecs();
309
310
3.41k
      ntpLayer->getReferenceTimestampAsString();
311
3.41k
      ntpLayer->getOriginTimestampAsString();
312
3.41k
      ntpLayer->getReceiveTimestampAsString();
313
3.41k
      ntpLayer->getTransmitTimestampAsString();
314
315
3.41k
      auto ntpLayer2(*ntpLayer);
316
3.41k
      ntpLayer2.setRootDelayInSecs(0.1);
317
3.41k
      ntpLayer2.setReferenceTimestampInSecs(0.1);
318
3.41k
    }
319
14.9k
  }
320
1.56M
  if (parsedPacket.isPacketOfType(pcpp::ICMP))
321
49.8k
  {
322
49.8k
    if (auto icmpLayer = dynamic_cast<pcpp::IcmpLayer*>(layer))
323
11.4k
    {
324
11.4k
      auto icmpLayer2(*icmpLayer);
325
326
11.4k
      if (icmpLayer->isMessageOfType(pcpp::ICMP_TIMESTAMP_REPLY))
327
1.23k
      {
328
1.23k
        icmpLayer->getTimestampReplyData();
329
1.23k
        timeval orig = { 16131, 171000 };
330
1.23k
        timeval recv = { 16133, 474000 };
331
1.23k
        timeval tran = { 16133, 474000 };
332
1.23k
        icmpLayer2.setTimestampReplyData(14640, 0, orig, recv, tran);
333
1.23k
      }
334
10.1k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_ADDRESS_MASK_REQUEST))
335
826
      {
336
826
        icmpLayer->getAddressMaskRequestData();
337
826
        icmpLayer2.setAddressMaskRequestData(45068, 1536, pcpp::IPv4Address::Zero);
338
826
      }
339
9.34k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_ADDRESS_MASK_REPLY))
340
1.37k
      {
341
1.37k
        icmpLayer->getAddressMaskReplyData();
342
1.37k
        icmpLayer2.setAddressMaskReplyData(45068, 1536, pcpp::IPv4Address::Zero);
343
1.37k
      }
344
7.96k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_DEST_UNREACHABLE))
345
973
      {
346
973
        icmpLayer->getDestUnreachableData();
347
973
        icmpLayer2.setDestUnreachableData(pcpp::IcmpHostUnreachable, 0, nullptr, nullptr);
348
973
      }
349
6.99k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_INFO_REPLY))
350
1.52k
      {
351
1.52k
        auto layerData = icmpLayer->getInfoReplyData();
352
1.52k
        icmpLayer2.setInfoReplyData(layerData->id, layerData->sequence);
353
1.52k
      }
354
5.46k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_INFO_REQUEST))
355
436
      {
356
436
        auto layerData = icmpLayer->getInfoRequestData();
357
436
        icmpLayer2.setInfoRequestData(layerData->id, layerData->sequence);
358
436
      }
359
5.03k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_PARAM_PROBLEM))
360
597
      {
361
597
        auto layerData = icmpLayer->getParamProblemData();
362
597
        icmpLayer2.setParamProblemData(layerData->code, layerData->pointer, nullptr, nullptr);
363
597
      }
364
4.43k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_TIME_EXCEEDED))
365
572
      {
366
572
        icmpLayer->getTimeExceededData();
367
572
        icmpLayer2.setTimeExceededData(1, nullptr, nullptr);
368
572
      }
369
3.86k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_ROUTER_ADV))
370
748
      {
371
748
        icmpLayer->getRouterAdvertisementData();
372
748
        pcpp::icmp_router_address_structure addr1;
373
748
        addr1.setRouterAddress(pcpp::IPv4Address("192.168.144.2"), (uint32_t)0x08000000);
374
748
        std::vector<pcpp::icmp_router_address_structure> routerAddresses;
375
748
        routerAddresses.push_back(addr1);
376
748
        icmpLayer2.setRouterAdvertisementData(16, 200, routerAddresses);
377
748
      }
378
11.4k
    }
379
49.8k
  }
380
1.56M
  if (parsedPacket.isPacketOfType(pcpp::DHCPv6))
381
17.6k
  {
382
17.6k
    if (auto dhcpLayer = dynamic_cast<pcpp::DhcpV6Layer*>(layer))
383
4.20k
    {
384
4.20k
      dhcpLayer->getTransactionID();
385
4.20k
      if (dhcpLayer->getOptionCount() > 0)
386
3.69k
      {
387
3.69k
        pcpp::DhcpV6Option opt = dhcpLayer->getFirstOptionData();
388
3.69k
        opt.getType();
389
3.69k
        opt.getTotalSize();
390
3.69k
        opt.getValueAsHexString();
391
14.4k
        for (size_t i = 0; i < dhcpLayer->getOptionCount(); i++)
392
10.7k
        {
393
10.7k
          opt = dhcpLayer->getNextOptionData(opt);
394
10.7k
        }
395
3.69k
        dhcpLayer->getOptionData(pcpp::DHCPV6_OPT_CLIENTID);
396
3.69k
      }
397
4.20k
    }
398
17.6k
  }
399
1.56M
  if (parsedPacket.isPacketOfType(pcpp::DHCP))
400
27.6k
  {
401
27.6k
    if (auto dhcpLayer = dynamic_cast<pcpp::DhcpLayer*>(layer))
402
6.38k
    {
403
6.38k
      dhcpLayer->getOpCode();
404
6.38k
      dhcpLayer->getDhcpHeader();
405
6.38k
      dhcpLayer->getClientIpAddress();
406
6.38k
      dhcpLayer->getYourIpAddress();
407
6.38k
      dhcpLayer->getServerIpAddress();
408
6.38k
      dhcpLayer->getGatewayIpAddress();
409
6.38k
      dhcpLayer->getClientHardwareAddress();
410
6.38k
      if (dhcpLayer->getOptionsCount() > 0)
411
6.28k
      {
412
6.28k
        pcpp::DhcpOption opt = dhcpLayer->getFirstOptionData();
413
6.28k
        opt.getValueAsIpAddr();
414
6.28k
        opt.getValueAsString();
415
261k
        for (size_t i = 0; i < dhcpLayer->getOptionsCount(); i++)
416
255k
        {
417
255k
          opt = dhcpLayer->getNextOptionData(opt);
418
255k
        }
419
6.28k
      }
420
6.38k
      dhcpLayer->getOptionData(pcpp::DHCPOPT_SUBNET_MASK);
421
6.38k
    }
422
27.6k
  }
423
1.56M
  if (parsedPacket.isPacketOfType(pcpp::BGP))
424
59.4k
  {
425
59.4k
    if (auto bgpLayer = dynamic_cast<pcpp::BgpLayer*>(layer))
426
23.4k
    {
427
23.4k
      bgpLayer->getMessageTypeAsString();
428
23.4k
      if (auto bgpOpenMsgLayer = dynamic_cast<pcpp::BgpOpenMessageLayer*>(bgpLayer))
429
4.83k
      {
430
4.83k
        std::vector<pcpp::BgpOpenMessageLayer::optional_parameter> optionalParams;
431
4.83k
        bgpOpenMsgLayer->getOptionalParameters(optionalParams);
432
4.83k
        std::vector<pcpp::BgpOpenMessageLayer::optional_parameter> optionalParams2(optionalParams);
433
4.83k
        optionalParams2.push_back(pcpp::BgpOpenMessageLayer::optional_parameter(2, "010400010001"));
434
4.83k
        optionalParams2.push_back(pcpp::BgpOpenMessageLayer::optional_parameter(2, "8000"));
435
4.83k
        optionalParams2.push_back(pcpp::BgpOpenMessageLayer::optional_parameter(2, "0200"));
436
4.83k
        optionalParams2.push_back(pcpp::BgpOpenMessageLayer::optional_parameter(2, "4600"));
437
4.83k
        optionalParams2.push_back(pcpp::BgpOpenMessageLayer::optional_parameter(2, "410400000001"));
438
4.83k
        bgpOpenMsgLayer->setOptionalParameters(optionalParams2);
439
4.83k
        bgpOpenMsgLayer->clearOptionalParameters();
440
4.83k
        bgpOpenMsgLayer->setOptionalParameters(optionalParams);
441
4.83k
      }
442
18.5k
      else if (auto bgpUpdateMsgLayer = dynamic_cast<pcpp::BgpUpdateMessageLayer*>(bgpLayer))
443
15.8k
      {
444
15.8k
        std::vector<pcpp::BgpUpdateMessageLayer::prefix_and_ip> withdrawnRoutes;
445
15.8k
        bgpUpdateMsgLayer->getWithdrawnRoutes(withdrawnRoutes);
446
15.8k
        std::vector<pcpp::BgpUpdateMessageLayer::prefix_and_ip> withdrawnRoutes2(withdrawnRoutes);
447
15.8k
        withdrawnRoutes2.push_back(pcpp::BgpUpdateMessageLayer::prefix_and_ip(24, "40.1.1.0"));
448
15.8k
        withdrawnRoutes2.push_back(pcpp::BgpUpdateMessageLayer::prefix_and_ip(24, "40.40.40.0"));
449
15.8k
        withdrawnRoutes2.push_back(pcpp::BgpUpdateMessageLayer::prefix_and_ip(16, "103.103.0.0"));
450
15.8k
        withdrawnRoutes2.push_back(pcpp::BgpUpdateMessageLayer::prefix_and_ip(24, "103.103.40.0"));
451
15.8k
        bgpUpdateMsgLayer->setWithdrawnRoutes(withdrawnRoutes2);
452
15.8k
        bgpUpdateMsgLayer->clearWithdrawnRoutes();
453
15.8k
        bgpUpdateMsgLayer->setWithdrawnRoutes(withdrawnRoutes);
454
455
15.8k
        std::vector<pcpp::BgpUpdateMessageLayer::prefix_and_ip> nlriVec;
456
15.8k
        bgpUpdateMsgLayer->getNetworkLayerReachabilityInfo(nlriVec);
457
15.8k
        std::vector<pcpp::BgpUpdateMessageLayer::prefix_and_ip> nlriVec2(nlriVec);
458
15.8k
        nlriVec2.push_back(pcpp::BgpUpdateMessageLayer::prefix_and_ip(24, "40.1.1.0"));
459
15.8k
        bgpUpdateMsgLayer->setNetworkLayerReachabilityInfo(nlriVec2);
460
15.8k
        bgpUpdateMsgLayer->clearNetworkLayerReachabilityInfo();
461
15.8k
        bgpUpdateMsgLayer->setNetworkLayerReachabilityInfo(nlriVec);
462
463
15.8k
        std::vector<pcpp::BgpUpdateMessageLayer::path_attribute> pathAttributes;
464
15.8k
        bgpUpdateMsgLayer->getPathAttributes(pathAttributes);
465
15.8k
        std::vector<pcpp::BgpUpdateMessageLayer::path_attribute> pathAttributes2(pathAttributes);
466
15.8k
        pathAttributes2.push_back(pcpp::BgpUpdateMessageLayer::path_attribute(0x40, 1, "02"));
467
15.8k
        pathAttributes2.push_back(
468
15.8k
            pcpp::BgpUpdateMessageLayer::path_attribute(0x40, 2, "02030000000a0000001400000028"));
469
15.8k
        pathAttributes2.push_back(pcpp::BgpUpdateMessageLayer::path_attribute(0x40, 3, "1e031e03"));
470
15.8k
        bgpUpdateMsgLayer->setPathAttributes(pathAttributes2);
471
15.8k
        bgpUpdateMsgLayer->clearPathAttributes();
472
15.8k
        bgpUpdateMsgLayer->setPathAttributes(pathAttributes);
473
15.8k
      }
474
2.70k
      else if (auto bgpNotificationMsgLayer = dynamic_cast<pcpp::BgpNotificationMessageLayer*>(bgpLayer))
475
796
      {
476
796
        bgpNotificationMsgLayer->getNotificationDataAsHexString();
477
796
      }
478
23.4k
    }
479
59.4k
  }
480
1.56M
  if (parsedPacket.isPacketOfType(pcpp::DNS))
481
83.1k
  {
482
83.1k
    if (auto dnsLayer = dynamic_cast<pcpp::DnsLayer*>(layer))
483
19.8k
    {
484
19.8k
      dnsLayer->addQuery("mail-attachment.googleusercontent.com", pcpp::DNS_TYPE_A, pcpp::DNS_CLASS_IN);
485
19.8k
      dnsLayer->removeQuery("a", true);
486
19.8k
      dnsLayer->removeQuery("mail-attachment.googleusercontent.com", false);
487
19.8k
      pcpp::IPv4DnsResourceData ipv4DnsData(std::string("151.249.90.217"));
488
19.8k
      dnsLayer->addAnswer("assets.pinterest.com.cdngc.net", pcpp::DNS_TYPE_A, pcpp::DNS_CLASS_IN, 3,
489
19.8k
                          &ipv4DnsData);
490
19.8k
      dnsLayer->removeAnswer("a", true);
491
19.8k
      dnsLayer->removeAnswer("assets.pinterest.com.cdngc.net", false);
492
19.8k
      dnsLayer->addAuthority("Yaels-iPhone.local", pcpp::DNS_TYPE_A, pcpp::DNS_CLASS_IN, 120, &ipv4DnsData);
493
19.8k
      dnsLayer->removeAuthority("a", true);
494
19.8k
      dnsLayer->removeAuthority("Yaels-iPhone.local", false);
495
19.8k
      pcpp::GenericDnsResourceData genericData("0004000800df581faa4f3f9d");
496
19.8k
      dnsLayer->addAdditionalRecord("abc", pcpp::DNS_TYPE_OPT, 0xa005, 0x1194, &genericData);
497
19.8k
      dnsLayer->removeAdditionalRecord("a", true);
498
19.8k
      dnsLayer->removeAdditionalRecord("abc", false);
499
500
19.8k
      auto add = dnsLayer->getFirstAdditionalRecord();
501
22.3k
      while (add != nullptr)
502
2.52k
      {
503
2.52k
        add = dnsLayer->getNextAdditionalRecord(add);
504
2.52k
      }
505
506
19.8k
      auto answer = dnsLayer->getFirstAnswer();
507
24.9k
      while (answer != nullptr)
508
5.13k
      {
509
5.13k
        answer = dnsLayer->getNextAnswer(answer);
510
5.13k
      }
511
512
19.8k
      auto auth = dnsLayer->getFirstAuthority();
513
22.0k
      while (auth != nullptr)
514
2.19k
      {
515
2.19k
        auth = dnsLayer->getNextAuthority(auth);
516
2.19k
      }
517
518
19.8k
      pcpp::DnsLayer other(*dnsLayer);
519
19.8k
      other = *dnsLayer;
520
19.8k
    }
521
83.1k
  }
522
1.56M
}
Unexecuted instantiation: FuzzTarget.cpp:readParsedPacket(pcpp::Packet, pcpp::Layer*)
FuzzTarget.cpp:readParsedPacket(pcpp::Packet, pcpp::Layer*)
Line
Count
Source
28
1.56M
{
29
1.56M
  if (parsedPacket.isPacketOfType(pcpp::Telnet))
30
52.5k
  {
31
52.5k
    if (auto telnetLayer = dynamic_cast<pcpp::TelnetLayer*>(layer))
32
10.7k
    {
33
10.7k
      telnetLayer->getFirstCommand();
34
10.7k
      telnetLayer->getTotalNumberOfCommands();
35
36
10.7k
      pcpp::TelnetLayer::TelnetCommand commandVal;
37
10.7k
      do
38
66.9k
      {
39
66.9k
        commandVal = telnetLayer->getNextCommand();
40
66.9k
        std::cout << "Telnet command is '" << telnetLayer->getTelnetCommandAsString(commandVal) << "'"
41
66.9k
                  << std::endl;
42
66.9k
        pcpp::TelnetLayer::TelnetOption option = telnetLayer->getOption();
43
66.9k
        std::cout << "Telnet option is '" << telnetLayer->getTelnetOptionAsString(option) << "'" << std::endl;
44
45
66.9k
        telnetLayer->getDataAsString(true);
46
66.9k
        telnetLayer->getNumberOfCommands(commandVal);
47
66.9k
        telnetLayer->getOption(commandVal);
48
66.9k
        size_t length = 0;
49
66.9k
        telnetLayer->getOptionData(length);
50
66.9k
        telnetLayer->getOptionData(commandVal, length);
51
66.9k
      } while (commandVal != pcpp::TelnetLayer::TelnetCommand::TelnetCommandEndOfPacket);
52
10.7k
    }
53
52.5k
  }
54
1.56M
  if (parsedPacket.isPacketOfType(pcpp::ARP))
55
16.8k
  {
56
16.8k
    if (auto arpLayer = dynamic_cast<pcpp::ArpLayer*>(layer))
57
5.76k
    {
58
5.76k
      arpLayer->isReply();
59
5.76k
      arpLayer->isRequest();
60
5.76k
    }
61
16.8k
  }
62
1.56M
  if (parsedPacket.isPacketOfType(pcpp::SomeIP))
63
66.3k
  {
64
66.3k
    if (auto someipLayer = dynamic_cast<pcpp::SomeIpSdLayer*>(layer))
65
10.2k
    {
66
10.2k
      auto entries = someipLayer->getEntries();
67
10.2k
      if (!entries.empty())
68
10.1k
      {
69
10.1k
        auto opts = someipLayer->getOptionsFromEntry(0);
70
10.1k
        for (auto opt : opts)
71
5.44k
          delete opt;
72
10.1k
      }
73
74
10.2k
      for (auto entry : entries)
75
10.6k
      {
76
10.6k
        entry->getNumOptions();
77
10.6k
        entry->getServiceId();
78
10.6k
        entry->getInstanceId();
79
10.6k
        entry->getMajorVersion();
80
10.6k
        entry->getMinorVersion();
81
10.6k
        entry->getCounter();
82
10.6k
        entry->getEventgroupId();
83
10.6k
        delete entry;
84
10.6k
      }
85
86
10.2k
      someipLayer->getFlags();
87
10.2k
      auto opts = someipLayer->getOptions();
88
10.2k
      for (auto opt : opts)
89
6.57k
      {
90
6.57k
        opt->getType();
91
6.57k
        if (auto v4opt = dynamic_cast<pcpp::SomeIpSdIPv4Option*>(opt))
92
5.28k
        {
93
5.28k
          v4opt->getIpAddress();
94
5.28k
          v4opt->getPort();
95
5.28k
          v4opt->getProtocol();
96
5.28k
        }
97
1.29k
        else if (auto v6opt = dynamic_cast<pcpp::SomeIpSdIPv6Option*>(opt))
98
501
        {
99
501
          v6opt->getIpAddress();
100
501
          v6opt->getPort();
101
501
          v6opt->getProtocol();
102
501
        }
103
6.57k
        delete opt;
104
6.57k
      }
105
10.2k
    }
106
66.3k
  }
107
1.56M
  if (parsedPacket.isPacketOfType(pcpp::GTP))
108
58.9k
  {
109
58.9k
    if (auto gtpLayer = dynamic_cast<pcpp::GtpV1Layer*>(layer))
110
8.79k
    {
111
8.79k
      uint16_t value16 = 0;
112
8.79k
      gtpLayer->getSequenceNumber(value16);
113
8.79k
      uint8_t value8;
114
8.79k
      gtpLayer->getNpduNumber(value8);
115
8.79k
      gtpLayer->getMessageType();
116
8.79k
      gtpLayer->getMessageTypeAsString();
117
8.79k
      gtpLayer->isGTPUMessage();
118
8.79k
      gtpLayer->isGTPCMessage();
119
8.79k
      auto ext = gtpLayer->getNextExtension();
120
8.79k
      ext.getExtensionType();
121
8.79k
      ext.getContent();
122
8.79k
      ext.getContentLength();
123
8.79k
      ext.getNextExtension();
124
8.79k
    }
125
58.9k
  }
126
1.56M
  if (parsedPacket.isPacketOfType(pcpp::GRE))
127
115k
  {
128
115k
    if (auto greLayer = dynamic_cast<pcpp::GreLayer*>(layer))
129
16.9k
    {
130
16.9k
      uint32_t value32 = 0;
131
16.9k
      greLayer->getSequenceNumber(value32);
132
16.9k
    }
133
115k
  }
134
1.56M
  if (parsedPacket.isPacketOfType(pcpp::GREv0))
135
18.7k
  {
136
18.7k
    if (auto greLayer = dynamic_cast<pcpp::GREv0Layer*>(layer))
137
4.60k
    {
138
4.60k
      uint16_t value16 = 0;
139
4.60k
      greLayer->getChecksum(value16);
140
4.60k
      greLayer->getOffset(value16);
141
4.60k
      uint32_t value32 = 0;
142
4.60k
      greLayer->getKey(value32);
143
4.60k
    }
144
18.7k
  }
145
1.56M
  if (parsedPacket.isPacketOfType(pcpp::GREv1))
146
96.8k
  {
147
96.8k
    if (auto greLayer = dynamic_cast<pcpp::GREv1Layer*>(layer))
148
12.3k
    {
149
12.3k
      uint32_t value32 = 0;
150
12.3k
      greLayer->getAcknowledgmentNum(value32);
151
12.3k
    }
152
96.8k
  }
153
1.56M
  if (parsedPacket.isPacketOfType(pcpp::FTP))
154
27.2k
  {
155
27.2k
    if (auto ftpLayer = dynamic_cast<pcpp::FtpRequestLayer*>(layer))
156
1.38k
    {
157
1.38k
      ftpLayer->getCommandOption(false);
158
1.38k
      ftpLayer->getCommandOption(true);
159
1.38k
    }
160
25.8k
    else if (auto ftpLayer = dynamic_cast<pcpp::FtpResponseLayer*>(layer))
161
4.13k
    {
162
4.13k
      ftpLayer->getStatusCode();
163
4.13k
      ftpLayer->getStatusOption(false);
164
4.13k
      ftpLayer->getStatusOption(true);
165
4.13k
    }
166
27.2k
  }
167
1.56M
  if (parsedPacket.isPacketOfType(pcpp::SLL2))
168
5.84k
  {
169
5.84k
    if (auto sllLayer = dynamic_cast<pcpp::Sll2Layer*>(layer))
170
2.12k
    {
171
2.12k
      sllLayer->getLinkLayerAsMacAddress();
172
2.12k
      sllLayer->getProtocolType();
173
2.12k
      sllLayer->getInterfaceIndex();
174
2.12k
      sllLayer->getArphrdType();
175
2.12k
      sllLayer->getPacketType();
176
2.12k
    }
177
5.84k
  }
178
1.56M
  if (parsedPacket.isPacketOfType(pcpp::VRRP))
179
17.8k
  {
180
17.8k
    if (auto vrrpLayer = dynamic_cast<pcpp::VrrpLayer*>(layer))
181
5.18k
    {
182
5.18k
      vrrpLayer->getIPAddresses();
183
5.18k
      vrrpLayer->isChecksumCorrect();
184
5.18k
      vrrpLayer->getChecksum();
185
5.18k
      vrrpLayer->getPriorityAsEnum();
186
5.18k
      vrrpLayer->getPriority();
187
5.18k
      vrrpLayer->getType();
188
5.18k
    }
189
17.8k
  }
190
1.56M
  if (parsedPacket.isPacketOfType(pcpp::VRRPv2))
191
7.21k
  {
192
7.21k
    if (auto vrrpLayer = dynamic_cast<pcpp::VrrpV2Layer*>(layer))
193
2.04k
    {
194
2.04k
      vrrpLayer->getAuthTypeAsEnum();
195
2.04k
      vrrpLayer->getAdvInt();
196
2.04k
    }
197
7.21k
  }
198
1.56M
  if (parsedPacket.isPacketOfType(pcpp::VRRPv3))
199
10.6k
  {
200
10.6k
    if (auto vrrpLayer = dynamic_cast<pcpp::VrrpV3Layer*>(layer))
201
3.13k
    {
202
3.13k
      vrrpLayer->getMaxAdvInt();
203
3.13k
    }
204
10.6k
  }
205
1.56M
  if (parsedPacket.isPacketOfType(pcpp::TCP))
206
854k
  {
207
854k
    if (auto tcpLayer = dynamic_cast<pcpp::TcpLayer*>(layer))
208
197k
    {
209
197k
      auto tcpLayer2(*tcpLayer);
210
197k
      tcpLayer2.insertTcpOptionAfter(pcpp::TcpOptionBuilder(pcpp::TcpOptionBuilder::NopEolOptionEnumType::Nop),
211
197k
                                     pcpp::TcpOptionEnumType::Nop);
212
197k
    }
213
854k
  }
214
1.56M
  if (parsedPacket.isPacketOfType(pcpp::SDP))
215
58.6k
  {
216
58.6k
    if (auto sdpLayer = dynamic_cast<pcpp::SdpLayer*>(layer))
217
6.55k
    {
218
6.55k
      sdpLayer->getOwnerIPv4Address();
219
6.55k
      sdpLayer->getMediaPort("audio");
220
6.55k
      sdpLayer->getFieldCount();
221
222
6.55k
      auto sdpLayer2 = *sdpLayer;
223
6.55k
      std::vector<std::string> audioAttributes;
224
6.55k
      audioAttributes.push_back("rtpmap:8 PCMA/8000");
225
6.55k
      sdpLayer2.addMediaDescription("audio", 6010, "RTP/AVP", "8 96", audioAttributes);
226
6.55k
      sdpLayer2.addField(PCPP_SDP_PROTOCOL_VERSION_FIELD, "0");
227
6.55k
      sdpLayer2.removeField(PCPP_SDP_PROTOCOL_VERSION_FIELD);
228
6.55k
    }
229
58.6k
  }
230
1.56M
  if (parsedPacket.isPacketOfType(pcpp::SSL))
231
251k
  {
232
251k
    if (auto handshakeLayer = dynamic_cast<pcpp::SSLHandshakeLayer*>(layer))
233
36.7k
    {
234
36.7k
      if (auto clientHelloMessage = handshakeLayer->getHandshakeMessageOfType<pcpp::SSLClientHelloMessage>())
235
14.3k
      {
236
14.3k
        clientHelloMessage->getCompressionMethodsValue();
237
14.3k
        clientHelloMessage->getSessionID();
238
14.3k
        clientHelloMessage->getHandshakeType();
239
14.3k
        clientHelloMessage->getHandshakeVersion();
240
241
14.3k
        pcpp::SSLCipherSuite::getCipherSuiteByName("TLS_RSA_WITH_NULL_MD5");
242
11.3M
        for (int i = 0; i < clientHelloMessage->getCipherSuiteCount(); i++)
243
11.3M
        {
244
11.3M
          clientHelloMessage->getCipherSuite(i);
245
11.3M
          bool valid;
246
11.3M
          clientHelloMessage->getCipherSuiteID(i, valid);
247
11.3M
        }
248
14.3k
        if (auto ext = clientHelloMessage->getExtensionOfType<pcpp::SSLServerNameIndicationExtension>())
249
8.56k
          ext->getHostName();
250
14.3k
        if (auto ext = clientHelloMessage->getExtensionOfType<pcpp::SSLSupportedVersionsExtension>())
251
2.33k
          ext->getSupportedVersions();
252
253
14.3k
        clientHelloMessage->getExtensionOfType(pcpp::SSL_EXT_SERVER_NAME);
254
14.3k
        clientHelloMessage->getExtensionOfType((uint16_t)0);
255
256
14.3k
        auto fingerprint = clientHelloMessage->generateTLSFingerprint();
257
14.3k
        fingerprint.toMD5();
258
14.3k
      }
259
36.7k
      if (auto serverHelloMessage = handshakeLayer->getHandshakeMessageOfType<pcpp::SSLServerHelloMessage>())
260
9.14k
      {
261
9.14k
        serverHelloMessage->getCompressionMethodsValue();
262
9.14k
        serverHelloMessage->getSessionID();
263
9.14k
        serverHelloMessage->getCipherSuite();
264
265
9.14k
        serverHelloMessage->getExtensionOfType<pcpp::SSLServerNameIndicationExtension>();
266
9.14k
        serverHelloMessage->getExtensionOfType(pcpp::SSL_EXT_SERVER_NAME);
267
9.14k
        serverHelloMessage->getExtensionOfType((uint16_t)0);
268
269
9.14k
        serverHelloMessage->getHandshakeVersion();
270
9.14k
        auto fingerprint = serverHelloMessage->generateTLSFingerprint();
271
9.14k
        fingerprint.toMD5();
272
9.14k
      }
273
36.7k
      if (auto handshakeMessage = handshakeLayer->getHandshakeMessageOfType<pcpp::SSLHandshakeMessage>())
274
31.7k
      {
275
31.7k
        handshakeMessage->isMessageComplete();
276
31.7k
      }
277
36.7k
    }
278
251k
  }
279
1.56M
  if (parsedPacket.isPacketOfType(pcpp::NTP))
280
14.9k
  {
281
14.9k
    if (auto ntpLayer = dynamic_cast<pcpp::NtpLayer*>(layer))
282
3.41k
    {
283
3.41k
      ntpLayer->getLeapIndicator();
284
3.41k
      ntpLayer->getMode();
285
3.41k
      ntpLayer->getModeString();
286
3.41k
      ntpLayer->getStratum();
287
3.41k
      ntpLayer->getPollInterval();
288
3.41k
      ntpLayer->getPrecision();
289
3.41k
      ntpLayer->getRootDelay();
290
3.41k
      ntpLayer->getRootDispersion();
291
3.41k
      ntpLayer->getReferenceIdentifier();
292
3.41k
      ntpLayer->getReferenceIdentifierString();
293
3.41k
      ntpLayer->getReferenceTimestamp();
294
3.41k
      ntpLayer->getOriginTimestamp();
295
3.41k
      ntpLayer->getReceiveTimestamp();
296
3.41k
      ntpLayer->getTransmitTimestamp();
297
298
3.41k
      ntpLayer->getDigest();
299
3.41k
      ntpLayer->getKeyID();
300
301
3.41k
      ntpLayer->getPollIntervalInSecs();
302
3.41k
      ntpLayer->getPrecisionInSecs();
303
3.41k
      ntpLayer->getRootDelayInSecs();
304
3.41k
      ntpLayer->getRootDispersionInSecs();
305
3.41k
      ntpLayer->getReferenceTimestampInSecs();
306
3.41k
      ntpLayer->getOriginTimestampInSecs();
307
3.41k
      ntpLayer->getReceiveTimestampInSecs();
308
3.41k
      ntpLayer->getTransmitTimestampInSecs();
309
310
3.41k
      ntpLayer->getReferenceTimestampAsString();
311
3.41k
      ntpLayer->getOriginTimestampAsString();
312
3.41k
      ntpLayer->getReceiveTimestampAsString();
313
3.41k
      ntpLayer->getTransmitTimestampAsString();
314
315
3.41k
      auto ntpLayer2(*ntpLayer);
316
3.41k
      ntpLayer2.setRootDelayInSecs(0.1);
317
3.41k
      ntpLayer2.setReferenceTimestampInSecs(0.1);
318
3.41k
    }
319
14.9k
  }
320
1.56M
  if (parsedPacket.isPacketOfType(pcpp::ICMP))
321
49.8k
  {
322
49.8k
    if (auto icmpLayer = dynamic_cast<pcpp::IcmpLayer*>(layer))
323
11.4k
    {
324
11.4k
      auto icmpLayer2(*icmpLayer);
325
326
11.4k
      if (icmpLayer->isMessageOfType(pcpp::ICMP_TIMESTAMP_REPLY))
327
1.23k
      {
328
1.23k
        icmpLayer->getTimestampReplyData();
329
1.23k
        timeval orig = { 16131, 171000 };
330
1.23k
        timeval recv = { 16133, 474000 };
331
1.23k
        timeval tran = { 16133, 474000 };
332
1.23k
        icmpLayer2.setTimestampReplyData(14640, 0, orig, recv, tran);
333
1.23k
      }
334
10.1k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_ADDRESS_MASK_REQUEST))
335
826
      {
336
826
        icmpLayer->getAddressMaskRequestData();
337
826
        icmpLayer2.setAddressMaskRequestData(45068, 1536, pcpp::IPv4Address::Zero);
338
826
      }
339
9.34k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_ADDRESS_MASK_REPLY))
340
1.37k
      {
341
1.37k
        icmpLayer->getAddressMaskReplyData();
342
1.37k
        icmpLayer2.setAddressMaskReplyData(45068, 1536, pcpp::IPv4Address::Zero);
343
1.37k
      }
344
7.96k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_DEST_UNREACHABLE))
345
973
      {
346
973
        icmpLayer->getDestUnreachableData();
347
973
        icmpLayer2.setDestUnreachableData(pcpp::IcmpHostUnreachable, 0, nullptr, nullptr);
348
973
      }
349
6.99k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_INFO_REPLY))
350
1.52k
      {
351
1.52k
        auto layerData = icmpLayer->getInfoReplyData();
352
1.52k
        icmpLayer2.setInfoReplyData(layerData->id, layerData->sequence);
353
1.52k
      }
354
5.46k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_INFO_REQUEST))
355
436
      {
356
436
        auto layerData = icmpLayer->getInfoRequestData();
357
436
        icmpLayer2.setInfoRequestData(layerData->id, layerData->sequence);
358
436
      }
359
5.03k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_PARAM_PROBLEM))
360
597
      {
361
597
        auto layerData = icmpLayer->getParamProblemData();
362
597
        icmpLayer2.setParamProblemData(layerData->code, layerData->pointer, nullptr, nullptr);
363
597
      }
364
4.43k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_TIME_EXCEEDED))
365
572
      {
366
572
        icmpLayer->getTimeExceededData();
367
572
        icmpLayer2.setTimeExceededData(1, nullptr, nullptr);
368
572
      }
369
3.86k
      else if (icmpLayer->isMessageOfType(pcpp::ICMP_ROUTER_ADV))
370
748
      {
371
748
        icmpLayer->getRouterAdvertisementData();
372
748
        pcpp::icmp_router_address_structure addr1;
373
748
        addr1.setRouterAddress(pcpp::IPv4Address("192.168.144.2"), (uint32_t)0x08000000);
374
748
        std::vector<pcpp::icmp_router_address_structure> routerAddresses;
375
748
        routerAddresses.push_back(addr1);
376
748
        icmpLayer2.setRouterAdvertisementData(16, 200, routerAddresses);
377
748
      }
378
11.4k
    }
379
49.8k
  }
380
1.56M
  if (parsedPacket.isPacketOfType(pcpp::DHCPv6))
381
17.6k
  {
382
17.6k
    if (auto dhcpLayer = dynamic_cast<pcpp::DhcpV6Layer*>(layer))
383
4.20k
    {
384
4.20k
      dhcpLayer->getTransactionID();
385
4.20k
      if (dhcpLayer->getOptionCount() > 0)
386
3.69k
      {
387
3.69k
        pcpp::DhcpV6Option opt = dhcpLayer->getFirstOptionData();
388
3.69k
        opt.getType();
389
3.69k
        opt.getTotalSize();
390
3.69k
        opt.getValueAsHexString();
391
14.4k
        for (size_t i = 0; i < dhcpLayer->getOptionCount(); i++)
392
10.7k
        {
393
10.7k
          opt = dhcpLayer->getNextOptionData(opt);
394
10.7k
        }
395
3.69k
        dhcpLayer->getOptionData(pcpp::DHCPV6_OPT_CLIENTID);
396
3.69k
      }
397
4.20k
    }
398
17.6k
  }
399
1.56M
  if (parsedPacket.isPacketOfType(pcpp::DHCP))
400
27.6k
  {
401
27.6k
    if (auto dhcpLayer = dynamic_cast<pcpp::DhcpLayer*>(layer))
402
6.38k
    {
403
6.38k
      dhcpLayer->getOpCode();
404
6.38k
      dhcpLayer->getDhcpHeader();
405
6.38k
      dhcpLayer->getClientIpAddress();
406
6.38k
      dhcpLayer->getYourIpAddress();
407
6.38k
      dhcpLayer->getServerIpAddress();
408
6.38k
      dhcpLayer->getGatewayIpAddress();
409
6.38k
      dhcpLayer->getClientHardwareAddress();
410
6.38k
      if (dhcpLayer->getOptionsCount() > 0)
411
6.28k
      {
412
6.28k
        pcpp::DhcpOption opt = dhcpLayer->getFirstOptionData();
413
6.28k
        opt.getValueAsIpAddr();
414
6.28k
        opt.getValueAsString();
415
261k
        for (size_t i = 0; i < dhcpLayer->getOptionsCount(); i++)
416
255k
        {
417
255k
          opt = dhcpLayer->getNextOptionData(opt);
418
255k
        }
419
6.28k
      }
420
6.38k
      dhcpLayer->getOptionData(pcpp::DHCPOPT_SUBNET_MASK);
421
6.38k
    }
422
27.6k
  }
423
1.56M
  if (parsedPacket.isPacketOfType(pcpp::BGP))
424
59.4k
  {
425
59.4k
    if (auto bgpLayer = dynamic_cast<pcpp::BgpLayer*>(layer))
426
23.4k
    {
427
23.4k
      bgpLayer->getMessageTypeAsString();
428
23.4k
      if (auto bgpOpenMsgLayer = dynamic_cast<pcpp::BgpOpenMessageLayer*>(bgpLayer))
429
4.83k
      {
430
4.83k
        std::vector<pcpp::BgpOpenMessageLayer::optional_parameter> optionalParams;
431
4.83k
        bgpOpenMsgLayer->getOptionalParameters(optionalParams);
432
4.83k
        std::vector<pcpp::BgpOpenMessageLayer::optional_parameter> optionalParams2(optionalParams);
433
4.83k
        optionalParams2.push_back(pcpp::BgpOpenMessageLayer::optional_parameter(2, "010400010001"));
434
4.83k
        optionalParams2.push_back(pcpp::BgpOpenMessageLayer::optional_parameter(2, "8000"));
435
4.83k
        optionalParams2.push_back(pcpp::BgpOpenMessageLayer::optional_parameter(2, "0200"));
436
4.83k
        optionalParams2.push_back(pcpp::BgpOpenMessageLayer::optional_parameter(2, "4600"));
437
4.83k
        optionalParams2.push_back(pcpp::BgpOpenMessageLayer::optional_parameter(2, "410400000001"));
438
4.83k
        bgpOpenMsgLayer->setOptionalParameters(optionalParams2);
439
4.83k
        bgpOpenMsgLayer->clearOptionalParameters();
440
4.83k
        bgpOpenMsgLayer->setOptionalParameters(optionalParams);
441
4.83k
      }
442
18.5k
      else if (auto bgpUpdateMsgLayer = dynamic_cast<pcpp::BgpUpdateMessageLayer*>(bgpLayer))
443
15.8k
      {
444
15.8k
        std::vector<pcpp::BgpUpdateMessageLayer::prefix_and_ip> withdrawnRoutes;
445
15.8k
        bgpUpdateMsgLayer->getWithdrawnRoutes(withdrawnRoutes);
446
15.8k
        std::vector<pcpp::BgpUpdateMessageLayer::prefix_and_ip> withdrawnRoutes2(withdrawnRoutes);
447
15.8k
        withdrawnRoutes2.push_back(pcpp::BgpUpdateMessageLayer::prefix_and_ip(24, "40.1.1.0"));
448
15.8k
        withdrawnRoutes2.push_back(pcpp::BgpUpdateMessageLayer::prefix_and_ip(24, "40.40.40.0"));
449
15.8k
        withdrawnRoutes2.push_back(pcpp::BgpUpdateMessageLayer::prefix_and_ip(16, "103.103.0.0"));
450
15.8k
        withdrawnRoutes2.push_back(pcpp::BgpUpdateMessageLayer::prefix_and_ip(24, "103.103.40.0"));
451
15.8k
        bgpUpdateMsgLayer->setWithdrawnRoutes(withdrawnRoutes2);
452
15.8k
        bgpUpdateMsgLayer->clearWithdrawnRoutes();
453
15.8k
        bgpUpdateMsgLayer->setWithdrawnRoutes(withdrawnRoutes);
454
455
15.8k
        std::vector<pcpp::BgpUpdateMessageLayer::prefix_and_ip> nlriVec;
456
15.8k
        bgpUpdateMsgLayer->getNetworkLayerReachabilityInfo(nlriVec);
457
15.8k
        std::vector<pcpp::BgpUpdateMessageLayer::prefix_and_ip> nlriVec2(nlriVec);
458
15.8k
        nlriVec2.push_back(pcpp::BgpUpdateMessageLayer::prefix_and_ip(24, "40.1.1.0"));
459
15.8k
        bgpUpdateMsgLayer->setNetworkLayerReachabilityInfo(nlriVec2);
460
15.8k
        bgpUpdateMsgLayer->clearNetworkLayerReachabilityInfo();
461
15.8k
        bgpUpdateMsgLayer->setNetworkLayerReachabilityInfo(nlriVec);
462
463
15.8k
        std::vector<pcpp::BgpUpdateMessageLayer::path_attribute> pathAttributes;
464
15.8k
        bgpUpdateMsgLayer->getPathAttributes(pathAttributes);
465
15.8k
        std::vector<pcpp::BgpUpdateMessageLayer::path_attribute> pathAttributes2(pathAttributes);
466
15.8k
        pathAttributes2.push_back(pcpp::BgpUpdateMessageLayer::path_attribute(0x40, 1, "02"));
467
15.8k
        pathAttributes2.push_back(
468
15.8k
            pcpp::BgpUpdateMessageLayer::path_attribute(0x40, 2, "02030000000a0000001400000028"));
469
15.8k
        pathAttributes2.push_back(pcpp::BgpUpdateMessageLayer::path_attribute(0x40, 3, "1e031e03"));
470
15.8k
        bgpUpdateMsgLayer->setPathAttributes(pathAttributes2);
471
15.8k
        bgpUpdateMsgLayer->clearPathAttributes();
472
15.8k
        bgpUpdateMsgLayer->setPathAttributes(pathAttributes);
473
15.8k
      }
474
2.70k
      else if (auto bgpNotificationMsgLayer = dynamic_cast<pcpp::BgpNotificationMessageLayer*>(bgpLayer))
475
796
      {
476
796
        bgpNotificationMsgLayer->getNotificationDataAsHexString();
477
796
      }
478
23.4k
    }
479
59.4k
  }
480
1.56M
  if (parsedPacket.isPacketOfType(pcpp::DNS))
481
83.1k
  {
482
83.1k
    if (auto dnsLayer = dynamic_cast<pcpp::DnsLayer*>(layer))
483
19.8k
    {
484
19.8k
      dnsLayer->addQuery("mail-attachment.googleusercontent.com", pcpp::DNS_TYPE_A, pcpp::DNS_CLASS_IN);
485
19.8k
      dnsLayer->removeQuery("a", true);
486
19.8k
      dnsLayer->removeQuery("mail-attachment.googleusercontent.com", false);
487
19.8k
      pcpp::IPv4DnsResourceData ipv4DnsData(std::string("151.249.90.217"));
488
19.8k
      dnsLayer->addAnswer("assets.pinterest.com.cdngc.net", pcpp::DNS_TYPE_A, pcpp::DNS_CLASS_IN, 3,
489
19.8k
                          &ipv4DnsData);
490
19.8k
      dnsLayer->removeAnswer("a", true);
491
19.8k
      dnsLayer->removeAnswer("assets.pinterest.com.cdngc.net", false);
492
19.8k
      dnsLayer->addAuthority("Yaels-iPhone.local", pcpp::DNS_TYPE_A, pcpp::DNS_CLASS_IN, 120, &ipv4DnsData);
493
19.8k
      dnsLayer->removeAuthority("a", true);
494
19.8k
      dnsLayer->removeAuthority("Yaels-iPhone.local", false);
495
19.8k
      pcpp::GenericDnsResourceData genericData("0004000800df581faa4f3f9d");
496
19.8k
      dnsLayer->addAdditionalRecord("abc", pcpp::DNS_TYPE_OPT, 0xa005, 0x1194, &genericData);
497
19.8k
      dnsLayer->removeAdditionalRecord("a", true);
498
19.8k
      dnsLayer->removeAdditionalRecord("abc", false);
499
500
19.8k
      auto add = dnsLayer->getFirstAdditionalRecord();
501
22.3k
      while (add != nullptr)
502
2.52k
      {
503
2.52k
        add = dnsLayer->getNextAdditionalRecord(add);
504
2.52k
      }
505
506
19.8k
      auto answer = dnsLayer->getFirstAnswer();
507
24.9k
      while (answer != nullptr)
508
5.13k
      {
509
5.13k
        answer = dnsLayer->getNextAnswer(answer);
510
5.13k
      }
511
512
19.8k
      auto auth = dnsLayer->getFirstAuthority();
513
22.0k
      while (auth != nullptr)
514
2.19k
      {
515
2.19k
        auth = dnsLayer->getNextAuthority(auth);
516
2.19k
      }
517
518
19.8k
      pcpp::DnsLayer other(*dnsLayer);
519
19.8k
      other = *dnsLayer;
520
19.8k
    }
521
83.1k
  }
522
1.56M
}