PcapPlusPlus  20.08
PPPoELayer.h
Go to the documentation of this file.
1 #ifndef PACKETPP_PPPOE_LAYER
2 #define PACKETPP_PPPOE_LAYER
3 
4 #include "Layer.h"
5 #include <vector>
6 #include <string.h>
7 
9 
14 namespace pcpp
15 {
16 
21 #pragma pack(push, 1)
22  struct pppoe_header {
23 #if (BYTE_ORDER == LITTLE_ENDIAN)
24 
25  uint8_t version:4,
27  type:4;
29  uint8_t code;
30 #else
31 
32  uint16_t version:4,
34  type:4,
36  code:8;
37 #endif
38 
39  uint16_t sessionId;
41  uint16_t payloadLength;
42  };
43 #pragma pack(pop)
44 
45 
51  class PPPoELayer : public Layer
52  {
53  public:
57  enum PPPoECode
58  {
81  };
82 
83  ~PPPoELayer() {}
84 
89  pppoe_header* getPPPoEHeader() const { return (pppoe_header*)m_Data; }
90 
91  // abstract methods implementation
92 
96  virtual void computeCalculateFields();
97 
99 
100  protected:
101 
102  // protected c'tor as this class shouldn't be instantiated
103  PPPoELayer(uint8_t* data, size_t dataLen, Layer* prevLayer, Packet* packet) : Layer(data, dataLen, prevLayer, packet) { }
104 
105  // protected c'tor as this class shouldn't be instantiated
106  PPPoELayer(uint8_t version, uint8_t type, PPPoELayer::PPPoECode code, uint16_t sessionId, size_t additionalBytesToAllocate = 0);
107 
108  };
109 
110 
116  {
117  public:
118 
126  PPPoESessionLayer(uint8_t* data, size_t dataLen, Layer* prevLayer, Packet* packet) : PPPoELayer(data, dataLen, prevLayer, packet) { m_Protocol = PPPoESession; }
127 
135  PPPoESessionLayer(uint8_t version, uint8_t type, uint16_t sessionId, uint16_t pppNextProtocol) : PPPoELayer(version, type, PPPoELayer::PPPOE_CODE_SESSION, sessionId, sizeof(uint16_t)) { setPPPNextProtocol(pppNextProtocol); }
136 
137  virtual ~PPPoESessionLayer() {}
138 
143  uint16_t getPPPNextProtocol() const;
144 
149  void setPPPNextProtocol(uint16_t nextProtocol);
150 
151  // abstract methods implementation
152 
156  virtual void parseNextLayer();
157 
161  virtual size_t getHeaderLen() const { return sizeof(pppoe_header) + sizeof(uint16_t); }
162 
163  virtual std::string toString() const;
164  };
165 
166 
167 
173  {
174  public:
179  {
181  PPPOE_TAG_EOL = 0x0000,
203  PPPOE_TAG_HURL = 0x0111,
205  PPPOE_TAG_MOTM = 0x0112,
216  };
217 
222  struct PPPoETag
223  {
224  public:
225 
227  uint16_t tagType;
229  uint16_t tagDataLength;
231  uint8_t tagData[];
232 
242  template<typename T>
243  T getTagDataAs(int tagDataOffset = 0) const
244  {
245  T result;
246  memcpy(&result, tagData + tagDataOffset, sizeof(T));
247  return result;
248  }
249 
258  template<typename T>
259  void setTagData(T value, int tagDataOffset = 0)
260  {
261  memcpy(tagData+tagDataOffset, &value, sizeof(T));
262  }
263 
267  size_t getTagTotalSize() const;
268 
273  private:
274  // private c'tor which isn't implemented to make this struct impossible to construct
275  PPPoETag();
276  };
277 
285  PPPoEDiscoveryLayer(uint8_t* data, size_t dataLen, Layer* prevLayer, Packet* packet) : PPPoELayer(data, dataLen, prevLayer, packet) { m_Protocol = PPPoEDiscovery; m_TagCount = -1; m_DataLen = getHeaderLen(); }
286 
294  PPPoEDiscoveryLayer(uint8_t version, uint8_t type, PPPoELayer::PPPoECode code, uint16_t sessionId) : PPPoELayer(version, type, code, sessionId) { m_Protocol = PPPoEDiscovery; m_TagCount = -1; }
295 
303  PPPoETag* getTag(PPPoEDiscoveryLayer::PPPoETagTypes tagType) const;
304 
309  PPPoETag* getFirstTag() const;
310 
318  PPPoETag* getNextTag(PPPoETag* tag) const;
319 
323  int getTagCount() const;
324 
333  PPPoETag* addTag(PPPoETagTypes tagType, uint16_t tagLength, const uint8_t* tagData);
334 
344  PPPoETag* addTagAfter(PPPoETagTypes tagType, uint16_t tagLength, const uint8_t* tagData, PPPoETag* prevTag);
345 
353 
358  bool removeAllTags();
359 
360  // abstract methods implementation
361 
365  virtual void parseNextLayer() {}
366 
370  virtual size_t getHeaderLen() const;
371 
372  virtual std::string toString() const { return "PPP-over-Ethernet Discovery (" + codeToString((PPPoELayer::PPPoECode)getPPPoEHeader()->code) + ")"; }
373 
374  private:
375  mutable int m_TagCount;
376 
377  PPPoETag* addTagAt(PPPoETagTypes tagType, uint16_t tagLength, const uint8_t* tagData, int offset);
378 
379  PPPoETag* castPtrToPPPoETag(uint8_t* ptr) const;
380 
381  std::string codeToString(PPPoECode code) const;
382  };
383 
384 
385  // Copied from Wireshark: ppptypes.h
386 
388 #define PCPP_PPP_PADDING 0x1
389 
390 #define PCPP_PPP_ROHC_SCID 0x3
391 
392 #define PCPP_PPP_ROHC_LCID 0x5
393 
394 #define PCPP_PPP_IP 0x21
395 
396 #define PCPP_PPP_OSI 0x23
397 
398 #define PCPP_PPP_XNSIDP 0x25
399 
400 #define PCPP_PPP_DEC4 0x27
401 
402 #define PCPP_PPP_AT 0x29
403 
404 #define PCPP_PPP_IPX 0x2b
405 
406 #define PCPP_PPP_VJC_COMP 0x2d
407 
408 #define PCPP_PPP_VJC_UNCOMP 0x2f
409 
410 #define PCPP_PPP_BCP 0x31
411 
412 #define PCPP_PPP_ST 0x33
413 
414 #define PCPP_PPP_VINES 0x35
415 
416 #define PCPP_PPP_AT_EDDP 0x39
417 
418 #define PCPP_PPP_AT_SB 0x3b
419 
420 #define PCPP_PPP_MP 0x3d
421 
422 #define PCPP_PPP_NB 0x3f
423 
424 #define PCPP_PPP_CISCO 0x41
425 
426 #define PCPP_PPP_ASCOM 0x43
427 
428 #define PCPP_PPP_LBLB 0x45
429 
430 #define PCPP_PPP_RL 0x47
431 
432 #define PCPP_PPP_SDTP 0x49
433 
434 #define PCPP_PPP_LLC 0x4b
435 
436 #define PCPP_PPP_SNA 0x4d
437 
438 #define PCPP_PPP_IPV6HC 0x4f
439 
440 #define PCPP_PPP_KNX 0x51
441 
442 #define PCPP_PPP_ENCRYPT 0x53
443 
444 #define PCPP_PPP_ILE 0x55
445 
446 #define PCPP_PPP_IPV6 0x57
447 
448 #define PCPP_PPP_MUX 0x59
449 
450 #define PCPP_PPP_VSNP 0x5b
451 
452 #define PCPP_PPP_TNP 0x5d
453 
454 #define PCPP_PPP_RTP_FH 0x61
455 
456 #define PCPP_PPP_RTP_CTCP 0x63
457 
458 #define PCPP_PPP_RTP_CNTCP 0x65
459 
460 #define PCPP_PPP_RTP_CUDP8 0x67
461 
462 #define PCPP_PPP_RTP_CRTP8 0x69
463 
464 #define PCPP_PPP_STAMPEDE 0x6f
465 
466 #define PCPP_PPP_MPPLUS 0x73
467 
468 #define PCPP_PPP_NTCITS_IPI 0xc1
469 
470 #define PCPP_PPP_ML_SLCOMP 0xfb
471 
472 #define PCPP_PPP_COMP 0xfd
473 
474 #define PCPP_PPP_STP_HELLO 0x0201
475 
476 #define PCPP_PPP_IBM_SR 0x0203
477 
478 #define PCPP_PPP_DEC_LB 0x0205
479 
480 #define PCPP_PPP_CDP 0x0207
481 
482 #define PCPP_PPP_NETCS 0x0209
483 
484 #define PCPP_PPP_STP 0x020b
485 
486 #define PCPP_PPP_EDP 0x020d
487 
488 #define PCPP_PPP_OSCP 0x0211
489 
490 #define PCPP_PPP_OSCP2 0x0213
491 
492 #define PCPP_PPP_LUXCOM 0x0231
493 
494 #define PCPP_PPP_SIGMA 0x0233
495 
496 #define PCPP_PPP_ACSP 0x0235
497 
498 #define PCPP_PPP_MPLS_UNI 0x0281
499 
500 #define PCPP_PPP_MPLS_MULTI 0x0283
501 
502 #define PCPP_PPP_P12844 0x0285
503 
504 #define PCPP_PPP_TETRA 0x0287
505 
506 #define PCPP_PPP_MFTP 0x0289
507 
508 #define PCPP_PPP_RTP_CTCPND 0x2063
509 
510 #define PCPP_PPP_RTP_CS 0x2065
511 
512 #define PCPP_PPP_RTP_CUDP16 0x2067
513 
514 #define PCPP_PPP_RTP_CRDP16 0x2069
515 
516 #define PCPP_PPP_CCCP 0x4001
517 
518 #define PCPP_PPP_CDPD_MNRP 0x4003
519 
520 #define PCPP_PPP_EXPANDAP 0x4005
521 
522 #define PCPP_PPP_ODSICP 0x4007
523 
524 #define PCPP_PPP_DOCSIS 0x4009
525 
526 #define PCPP_PPP_CETACEANNDP 0x400b
527 
528 #define PCPP_PPP_LZS 0x4021
529 
530 #define PCPP_PPP_REFTEK 0x4023
531 
532 #define PCPP_PPP_FC 0x4025
533 
534 #define PCPP_PPP_EMIT 0x4027
535 
536 #define PCPP_PPP_VSP 0x405b
537 
538 #define PCPP_PPP_TLSP 0x405d
539 
540 #define PCPP_PPP_IPCP 0x8021
541 
542 #define PCPP_PPP_OSINLCP 0x8023
543 
544 #define PCPP_PPP_XNSIDPCP 0x8025
545 
546 #define PCPP_PPP_DECNETCP 0x8027
547 
548 #define PCPP_PPP_ATCP 0x8029
549 
550 #define PCPP_PPP_IPXCP 0x802b
551 
552 #define PCPP_PPP_BRIDGENCP 0x8031
553 
554 #define PCPP_PPP_SPCP 0x8033
555 
556 #define PCPP_PPP_BVCP 0x8035
557 
558 #define PCPP_PPP_MLCP 0x803d
559 
560 #define PCPP_PPP_NBCP 0x803f
561 
562 #define PCPP_PPP_CISCOCP 0x8041
563 
564 #define PCPP_PPP_ASCOMCP 0x8043
565 
566 #define PCPP_PPP_LBLBCP 0x8045
567 
568 #define PCPP_PPP_RLNCP 0x8047
569 
570 #define PCPP_PPP_SDCP 0x8049
571 
572 #define PCPP_PPP_LLCCP 0x804b
573 
574 #define PCPP_PPP_SNACP 0x804d
575 
576 #define PCPP_PPP_IP6HCCP 0x804f
577 
578 #define PCPP_PPP_KNXCP 0x8051
579 
580 #define PCPP_PPP_ECP 0x8053
581 
582 #define PCPP_PPP_ILECP 0x8055
583 
584 #define PCPP_PPP_IPV6CP 0x8057
585 
586 #define PCPP_PPP_MUXCP 0x8059
587 
588 #define PCPP_PPP_VSNCP 0x805b
589 
590 #define PCPP_PPP_TNCP 0x805d
591 
592 #define PCPP_PPP_STAMPEDECP 0x806f
593 
594 #define PCPP_PPP_MPPCP 0x8073
595 
596 #define PCPP_PPP_IPICP 0x80c1
597 
598 #define PCPP_PPP_SLCC 0x80fb
599 
600 #define PCPP_PPP_CCP 0x80fd
601 
602 #define PCPP_PPP_CDPCP 0x8207
603 
604 #define PCPP_PPP_NETCSCP 0x8209
605 
606 #define PCPP_PPP_STPCP 0x820b
607 
608 #define PCPP_PPP_EDPCP 0x820d
609 
610 #define PCPP_PPP_ACSPC 0x8235
611 
612 #define PCPP_PPP_MPLSCP 0x8281
613 
614 #define PCPP_PPP_P12844CP 0x8285
615 
616 #define PCPP_PPP_TETRACP 0x8287
617 
618 #define PCPP_PPP_MFTPCP 0x8289
619 
620 #define PCPP_PPP_LCP 0xc021
621 
622 #define PCPP_PPP_PAP 0xc023
623 
624 #define PCPP_PPP_LQR 0xc025
625 
626 #define PCPP_PPP_SPAP 0xc027
627 
628 #define PCPP_PPP_CBCP 0xc029
629 
630 #define PCPP_PPP_BACP 0xc02b
631 
632 #define PCPP_PPP_BAP 0xc02d
633 
634 #define PCPP_PPP_VSAP 0xc05b
635 
636 #define PCPP_PPP_CONTCP 0xc081
637 
638 #define PCPP_PPP_CHAP 0xc223
639 
640 #define PCPP_PPP_RSAAP 0xc225
641 
642 #define PCPP_PPP_EAP 0xc227
643 
644 #define PCPP_PPP_SIEP 0xc229
645 
646 #define PCPP_PPP_SBAP 0xc26f
647 
648 #define PCPP_PPP_PRPAP 0xc281
649 
650 #define PCPP_PPP_PRPAP2 0xc283
651 
652 #define PCPP_PPP_PRPNIAP 0xc481
653 
654 } // namespace pcpp
655 
656 #endif /* PACKETPP_PPPOE_LAYER */
pcpp::PPPoEDiscovery
const ProtocolType PPPoEDiscovery
Definition: ProtocolType.h:93
pcpp::PPPoELayer::PPPOE_CODE_PADO
@ PPPOE_CODE_PADO
Definition: PPPoELayer.h:62
pcpp::OsiModelLayer
OsiModelLayer
Definition: ProtocolType.h:233
pcpp::PPPoEDiscoveryLayer::getNextTag
PPPoETag * getNextTag(PPPoETag *tag) const
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_SEQ_NUM
@ PPPOE_TAG_SEQ_NUM
Definition: PPPoELayer.h:197
pcpp::Packet
Definition: Packet.h:26
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_AC_COOKIE
@ PPPOE_TAG_AC_COOKIE
Definition: PPPoELayer.h:189
pcpp::PPPoEDiscoveryLayer::removeTag
bool removeTag(PPPoEDiscoveryLayer::PPPoETagTypes tagType)
pcpp::PPPoEDiscoveryLayer::PPPoETag::tagDataLength
uint16_t tagDataLength
Definition: PPPoELayer.h:229
pcpp::OsiModelDataLinkLayer
@ OsiModelDataLinkLayer
Definition: ProtocolType.h:238
pcpp::PPPoELayer
Definition: PPPoELayer.h:51
pcpp::PPPoELayer::PPPOE_CODE_PADS
@ PPPOE_CODE_PADS
Definition: PPPoELayer.h:74
pcpp::PPPoEDiscoveryLayer::PPPoETagTypes
PPPoETagTypes
Definition: PPPoELayer.h:178
Layer.h
pcpp::PPPoELayer::PPPOE_CODE_PADC
@ PPPOE_CODE_PADC
Definition: PPPoELayer.h:68
pcpp::PPPoEDiscoveryLayer
Definition: PPPoELayer.h:172
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_MOTM
@ PPPOE_TAG_MOTM
Definition: PPPoELayer.h:205
pcpp::PPPoEDiscoveryLayer::getTagCount
int getTagCount() const
pcpp::PPPoELayer::PPPOE_CODE_PADR
@ PPPOE_CODE_PADR
Definition: PPPoELayer.h:72
pcpp::PPPoESessionLayer::parseNextLayer
virtual void parseNextLayer()
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_MAX_PAYLD
@ PPPOE_TAG_MAX_PAYLD
Definition: PPPoELayer.h:207
pcpp::PPPoELayer::PPPOE_CODE_PADN
@ PPPOE_CODE_PADN
Definition: PPPoELayer.h:80
pcpp::PPPoEDiscoveryLayer::PPPoETag::tagData
uint8_t tagData[]
Definition: PPPoELayer.h:231
pcpp::PPPoESession
const ProtocolType PPPoESession
Definition: ProtocolType.h:88
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_SVC_NAME
@ PPPOE_TAG_SVC_NAME
Definition: PPPoELayer.h:183
pcpp::PPPoEDiscoveryLayer::getHeaderLen
virtual size_t getHeaderLen() const
pcpp::PPPoEDiscoveryLayer::PPPoETag::getType
PPPoEDiscoveryLayer::PPPoETagTypes getType() const
pcpp::PPPoEDiscoveryLayer::PPPoETag
Definition: PPPoELayer.h:222
pcpp::pppoe_header::type
uint8_t type
Definition: PPPoELayer.h:27
pcpp::PPPoEDiscoveryLayer::getFirstTag
PPPoETag * getFirstTag() const
pcpp::PPPoESessionLayer::PPPoESessionLayer
PPPoESessionLayer(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
Definition: PPPoELayer.h:126
pcpp::PPPoEDiscoveryLayer::PPPoETag::getTagDataAs
T getTagDataAs(int tagDataOffset=0) const
Definition: PPPoELayer.h:243
pcpp::PPPoEDiscoveryLayer::addTagAfter
PPPoETag * addTagAfter(PPPoETagTypes tagType, uint16_t tagLength, const uint8_t *tagData, PPPoETag *prevTag)
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_GENERIC_ERR
@ PPPOE_TAG_GENERIC_ERR
Definition: PPPoELayer.h:215
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_EOL
@ PPPOE_TAG_EOL
Definition: PPPoELayer.h:181
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_VENDOR
@ PPPOE_TAG_VENDOR
Definition: PPPoELayer.h:191
pcpp::PPPoEDiscoveryLayer::parseNextLayer
virtual void parseNextLayer()
Definition: PPPoELayer.h:365
pcpp::PPPoESessionLayer::getHeaderLen
virtual size_t getHeaderLen() const
Definition: PPPoELayer.h:161
pcpp::PPPoEDiscoveryLayer::removeAllTags
bool removeAllTags()
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_SVC_ERR
@ PPPOE_TAG_SVC_ERR
Definition: PPPoELayer.h:211
pcpp::PPPoESessionLayer
Definition: PPPoELayer.h:115
pcpp::PPPoESessionLayer::getPPPNextProtocol
uint16_t getPPPNextProtocol() const
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_CREDITS
@ PPPOE_TAG_CREDITS
Definition: PPPoELayer.h:193
pcpp::PPPoELayer::PPPoECode
PPPoECode
Definition: PPPoELayer.h:57
pcpp::PPPoELayer::PPPOE_CODE_PADQ
@ PPPOE_CODE_PADQ
Definition: PPPoELayer.h:70
pcpp::PPPoEDiscoveryLayer::toString
virtual std::string toString() const
Definition: PPPoELayer.h:372
pcpp::PPPoEDiscoveryLayer::PPPoEDiscoveryLayer
PPPoEDiscoveryLayer(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
Definition: PPPoELayer.h:285
pcpp
The main namespace for the PcapPlusPlus lib.
pcpp::PPPoESessionLayer::toString
virtual std::string toString() const
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_RELAY_ID
@ PPPOE_TAG_RELAY_ID
Definition: PPPoELayer.h:201
pcpp::PPPoELayer::PPPOE_CODE_PADI
@ PPPOE_CODE_PADI
Definition: PPPoELayer.h:64
pcpp::PPPoEDiscoveryLayer::PPPoETag::setTagData
void setTagData(T value, int tagDataOffset=0)
Definition: PPPoELayer.h:259
pcpp::pppoe_header::code
uint8_t code
Definition: PPPoELayer.h:29
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_HURL
@ PPPOE_TAG_HURL
Definition: PPPoELayer.h:203
pcpp::PPPoELayer::PPPOE_CODE_PADG
@ PPPOE_CODE_PADG
Definition: PPPoELayer.h:66
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_AC_NAME
@ PPPOE_TAG_AC_NAME
Definition: PPPoELayer.h:185
pcpp::PPPoELayer::getOsiModelLayer
OsiModelLayer getOsiModelLayer() const
Definition: PPPoELayer.h:98
pcpp::Layer
Definition: Layer.h:70
pcpp::PPPoELayer::computeCalculateFields
virtual void computeCalculateFields()
pcpp::PPPoEDiscoveryLayer::addTag
PPPoETag * addTag(PPPoETagTypes tagType, uint16_t tagLength, const uint8_t *tagData)
pcpp::PPPoESessionLayer::setPPPNextProtocol
void setPPPNextProtocol(uint16_t nextProtocol)
pcpp::pppoe_header::sessionId
uint16_t sessionId
Definition: PPPoELayer.h:39
pcpp::PPPoEDiscoveryLayer::PPPoETag::getTagTotalSize
size_t getTagTotalSize() const
pcpp::PPPoELayer::getPPPoEHeader
pppoe_header * getPPPoEHeader() const
Definition: PPPoELayer.h:89
pcpp::PPPoESessionLayer::PPPoESessionLayer
PPPoESessionLayer(uint8_t version, uint8_t type, uint16_t sessionId, uint16_t pppNextProtocol)
Definition: PPPoELayer.h:135
pcpp::PPPoEDiscoveryLayer::PPPoEDiscoveryLayer
PPPoEDiscoveryLayer(uint8_t version, uint8_t type, PPPoELayer::PPPoECode code, uint16_t sessionId)
Definition: PPPoELayer.h:294
pcpp::PPPoELayer::PPPOE_CODE_PADT
@ PPPOE_CODE_PADT
Definition: PPPoELayer.h:76
pcpp::PPPoEDiscoveryLayer::getTag
PPPoETag * getTag(PPPoEDiscoveryLayer::PPPoETagTypes tagType) const
pcpp::PPPoEDiscoveryLayer::PPPoETag::tagType
uint16_t tagType
Definition: PPPoELayer.h:227
pcpp::pppoe_header
Definition: PPPoELayer.h:22
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_METRICS
@ PPPOE_TAG_METRICS
Definition: PPPoELayer.h:195
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_HOST_UNIQ
@ PPPOE_TAG_HOST_UNIQ
Definition: PPPoELayer.h:187
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_AC_ERR
@ PPPOE_TAG_AC_ERR
Definition: PPPoELayer.h:213
pcpp::PPPoELayer::PPPOE_CODE_SESSION
@ PPPOE_CODE_SESSION
Definition: PPPoELayer.h:60
pcpp::pppoe_header::payloadLength
uint16_t payloadLength
Definition: PPPoELayer.h:41
pcpp::pppoe_header::version
uint8_t version
Definition: PPPoELayer.h:25
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_IP_RT_ADD
@ PPPOE_TAG_IP_RT_ADD
Definition: PPPoELayer.h:209
pcpp::PPPoEDiscoveryLayer::PPPOE_TAG_CRED_SCALE
@ PPPOE_TAG_CRED_SCALE
Definition: PPPoELayer.h:199
pcpp::PPPoELayer::PPPOE_CODE_PADM
@ PPPOE_CODE_PADM
Definition: PPPoELayer.h:78