21 NDP_OPTION_SOURCE_LINK_LAYER = 1,
22 NDP_OPTION_TARGET_LINK_LAYER = 2,
23 NDP_OPTION_PREFIX_INFORMATION = 3,
24 NDP_OPTION_REDIRECTED_HEADER = 4,
26 NDP_OPTION_UNKNOWN = 255
47 if (m_Data ==
nullptr)
48 return NDPNeighborOptionTypes::NDP_OPTION_UNKNOWN;
57 if (m_Data ==
nullptr)
60 return static_cast<size_t>(m_Data->recordLen) * 8;
65 if (m_Data ==
nullptr)
71 return static_cast<size_t>(m_Data->recordLen) * 8 - (2 *
sizeof(uint8_t));
146 virtual size_t getNdpHeaderLen()
const = 0;
147 virtual uint8_t* getNdpOptionsBasePtr()
const
149 return m_Data + getNdpHeaderLen();
151 NdpOption addNdpOptionAt(
const NdpOptionBuilder& optionBuilder,
int offset);
161 #pragma pack(push, 1)
210 void initLayer(uint8_t code,
const IPv6Address& targetIP);
215 size_t getNdpHeaderLen()
const override
217 return sizeof(ndpneighborsolicitationhdr);
228 #pragma pack(push, 1)
231 #if (BYTE_ORDER == LITTLE_ENDIAN)
279 bool routerFlag,
bool unicastFlag,
bool overrideFlag);
308 return getNdpHeader()->
router;
326 void initLayer(uint8_t code,
const IPv6Address& targetIP,
bool routerFlag,
bool unicastFlag,
bool overrideFlag);
331 size_t getNdpHeaderLen()
const override
333 return sizeof(ndpneighboradvertisementhdr);
Definition: IpAddress.h:156
Definition: IcmpV6Layer.h:124
Definition: MacAddress.h:21
Definition: NdpLayer.h:100
NdpOption getFirstNdpOption() const
size_t getNdpOptionCount() const
bool removeAllNdpOptions()
NdpOption getNdpOption(NDPNeighborOptionTypes option) const
NdpOption addNdpOption(const NdpOptionBuilder &optionBuilder)
NdpOption getNextNdpOption(NdpOption &option) const
Definition: NdpLayer.h:224
MacAddress getTargetMac() const
bool hasTargetMacInfo() const
IPv6Address getTargetIP() const
Definition: NdpLayer.h:297
NDPNeighborAdvertisementLayer(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
Definition: NdpLayer.h:266
std::string toString() const override
bool getRouterFlag() const
Definition: NdpLayer.h:306
NDPNeighborAdvertisementLayer(uint8_t code, const IPv6Address &targetIP, const MacAddress &targetMac, bool routerFlag, bool unicastFlag, bool overrideFlag)
NDPNeighborAdvertisementLayer(uint8_t code, const IPv6Address &targetIP, bool routerFlag, bool unicastFlag, bool overrideFlag)
bool getUnicastFlag() const
Definition: NdpLayer.h:312
bool getOverrideFlag() const
Definition: NdpLayer.h:318
Definition: NdpLayer.h:157
bool hasLinkLayerAddress() const
NDPNeighborSolicitationLayer(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
Definition: NdpLayer.h:176
IPv6Address getTargetIP() const
Definition: NdpLayer.h:194
NDPNeighborSolicitationLayer(uint8_t code, const IPv6Address &targetIP)
MacAddress getLinkLayerAddress() const
std::string toString() const override
NDPNeighborSolicitationLayer(uint8_t code, const IPv6Address &targetIP, const MacAddress &srcMac)
Definition: NdpLayer.h:79
NdpOptionBuilder(NDPNeighborOptionTypes optionType, const uint8_t *optionValue, uint8_t optionValueLen)
Definition: NdpLayer.h:87
Definition: NdpLayer.h:33
NDPNeighborOptionTypes getNdpOptionType() const
Definition: NdpLayer.h:45
~NdpOption() override=default
A d'tor for this class, currently does nothing.
NdpOption(uint8_t *optionRawData)
Definition: NdpLayer.h:37
size_t getDataSize() const override
Definition: NdpLayer.h:63
size_t getTotalSize() const override
Definition: NdpLayer.h:55
Definition: TLVData.h:357
Definition: TLVData.h:204
The main namespace for the PcapPlusPlus lib.
NDPNeighborOptionTypes
An enum representing the available option types for Neighbor Discovery in IPv6 (see RFC 4861)
Definition: NdpLayer.h:20
Definition: NdpLayer.h:230
uint32_t override
Flag indicating that this entry should override the old one.
Definition: NdpLayer.h:236
uint8_t targetIP[16]
Target address - Either source address of advertisement or address for requested MAC.
Definition: NdpLayer.h:257
uint32_t solicited
Definition: NdpLayer.h:239
uint32_t router
Flag indicating that the advertisement is sent by a router.
Definition: NdpLayer.h:241
uint32_t reserved
Unused field.
Definition: NdpLayer.h:234
uint32_t reserved2
Unused field.
Definition: NdpLayer.h:243
Definition: NdpLayer.h:163
uint32_t reserved
Reserved.
Definition: NdpLayer.h:165
uint8_t targetIP[16]
Target address - Target address of solicitation message.
Definition: NdpLayer.h:167
Definition: IcmpV6Layer.h:96