42 return 8 * (getBaseHeader()->headerLen + 1);
51 const char* getExtensionTypeAsString()
const;
63 struct ipv6_ext_base_header
70 IPv6Extension(IDataContainer* dataContainer,
size_t offset)
71 : m_NextHeader(nullptr), m_ExtType(
IPv6ExtensionUnknown), m_DataContainer(dataContainer), m_Offset(offset),
82 IPv6Extension& operator=(
const IPv6Extension& other);
84 uint8_t* getDataPtr()
const;
86 void initShadowPtr(
size_t size);
88 ipv6_ext_base_header* getBaseHeader()
const
90 return reinterpret_cast<ipv6_ext_base_header*
>(getDataPtr());
93 void setNextHeader(IPv6Extension* nextHeader)
95 m_NextHeader = nextHeader;
98 IPv6Extension* m_NextHeader;
102 IDataContainer* m_DataContainer;
104 uint8_t* m_ShadowData;
178 static const uint8_t Pad0OptionType = 0;
179 static const uint8_t PadNOptionType = 1;
194 static bool canAssign(
const uint8_t* recordRawData,
size_t tlvDataLen)
196 auto data =
reinterpret_cast<TLVRawData const*
>(recordRawData);
200 if (tlvDataLen <
sizeof(TLVRawData::recordType))
203 if (data->recordType == Pad0OptionType)
213 if (m_Data ==
nullptr)
216 if (m_Data->recordType == Pad0OptionType)
217 return sizeof(uint8_t);
219 return (
size_t)(m_Data->recordLen +
sizeof(uint16_t));
224 if (m_Data ==
nullptr || m_Data->recordType == Pad0OptionType)
227 return (
size_t)m_Data->recordLen;
271 TLVRecordBuilder::operator=(other);
386 IPv6RoutingHeader(uint8_t routingType, uint8_t segmentsLeft,
const uint8_t* additionalRoutingData,
387 size_t additionalRoutingDataLen);
460 const uint8_t* integrityCheckValue,
size_t integrityCheckValueLen);
484 return 4 * (getBaseHeader()->headerLen + 2);
Definition: IpAddress.h:165
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:57
IPv6ExtensionType getExtensionType() const
Definition: IPv6Extensions.h:46
virtual size_t getExtensionLen() const
Definition: IPv6Extensions.h:40
Definition: IPv6Layer.h:52
Definition: TLVData.h:374
static bool canAssign(const uint8_t *recordRawData, size_t tlvDataLen)
Definition: TLVData.h:67
Definition: TLVData.h:219
The main namespace for the PcapPlusPlus lib.
Definition: AssertionUtils.h:19