42 return 8 * (getBaseHeader()->headerLen + 1);
61 struct ipv6_ext_base_header
68 IPv6Extension(IDataContainer* dataContainer,
size_t offset)
69 : m_NextHeader(nullptr), m_ExtType(
IPv6ExtensionUnknown), m_DataContainer(dataContainer), m_Offset(offset),
80 IPv6Extension& operator=(
const IPv6Extension& other);
82 uint8_t* getDataPtr()
const;
84 void initShadowPtr(
size_t size);
86 ipv6_ext_base_header* getBaseHeader()
const
88 return (ipv6_ext_base_header*)getDataPtr();
91 void setNextHeader(IPv6Extension* nextHeader)
93 m_NextHeader = nextHeader;
96 IPv6Extension* m_NextHeader;
100 IDataContainer* m_DataContainer;
102 uint8_t* m_ShadowData;
176 static const uint8_t Pad0OptionType = 0;
177 static const uint8_t PadNOptionType = 1;
192 static bool canAssign(
const uint8_t* recordRawData,
size_t tlvDataLen)
194 auto data = (TLVRawData*)recordRawData;
198 if (tlvDataLen <
sizeof(TLVRawData::recordType))
201 if (data->recordType == Pad0OptionType)
211 if (m_Data ==
nullptr)
214 if (m_Data->recordType == Pad0OptionType)
215 return sizeof(uint8_t);
217 return (
size_t)(m_Data->recordLen +
sizeof(uint16_t));
222 if (m_Data ==
nullptr || m_Data->recordType == Pad0OptionType)
225 return (
size_t)m_Data->recordLen;
269 TLVRecordBuilder::operator=(other);
384 IPv6RoutingHeader(uint8_t routingType, uint8_t segmentsLeft,
const uint8_t* additionalRoutingData,
385 size_t additionalRoutingDataLen);
458 const uint8_t* integrityCheckValue,
size_t integrityCheckValueLen);
482 return 4 * (getBaseHeader()->headerLen + 2);
Definition: IpAddress.h:156
Definition: IPv6Extensions.h:18
IPv6ExtensionType
An enum representing all supported IPv6 extension types.
Definition: IPv6Extensions.h:24
@ IPv6HopByHop
Hop-By-Hop extension type.
Definition: IPv6Extensions.h:26
@ IPv6Routing
Routing extension type.
Definition: IPv6Extensions.h:28
@ IPv6Fragmentation
IPv6 fragmentation extension type.
Definition: IPv6Extensions.h:30
@ IPv6ExtensionUnknown
Unknown or unsupported extension type.
Definition: IPv6Extensions.h:36
@ IPv6Destination
Destination extension type.
Definition: IPv6Extensions.h:34
@ IPv6AuthenticationHdr
Authentication Header extension type.
Definition: IPv6Extensions.h:32
virtual ~IPv6Extension()
A destructor for this class.
IPv6Extension * getNextHeader() const
Definition: IPv6Extensions.h:55
IPv6ExtensionType getExtensionType() const
Definition: IPv6Extensions.h:46
virtual size_t getExtensionLen() const
Definition: IPv6Extensions.h:40
Definition: IPv6Layer.h:50
Definition: TLVData.h:357
static bool canAssign(const uint8_t *recordRawData, size_t tlvDataLen)
Definition: TLVData.h:66
Definition: TLVData.h:204
The main namespace for the PcapPlusPlus lib.