Option field for an IPv6ExtensionHeader. More...
#include "ipv6-extension-header.h"
Public Member Functions | |
OptionField (uint32_t optionsOffset) | |
Constructor. More... | |
~OptionField () | |
Destructor. More... | |
void | AddOption (Ipv6OptionHeader const &option) |
Serialize the option, prepending pad1 or padn option as necessary. More... | |
uint32_t | Deserialize (Buffer::Iterator start, uint32_t length) |
Deserialize the packet. More... | |
Buffer | GetOptionBuffer () |
Get the buffer. More... | |
uint32_t | GetOptionsOffset () |
Get the offset where the options begin, measured from the start of the extension header. More... | |
uint32_t | GetSerializedSize () const |
Get the serialized size of the packet. More... | |
void | Serialize (Buffer::Iterator start) const |
Serialize all added options. More... | |
Private Member Functions | |
uint32_t | CalculatePad (Ipv6OptionHeader::Alignment alignment) const |
Calculate padding. More... | |
Private Attributes | |
Buffer | m_optionData |
Data payload. More... | |
uint32_t | m_optionsOffset |
Offset. More... | |
Option field for an IPv6ExtensionHeader.
Enables adding options to an IPv6ExtensionHeader.
Implementor's note: Make sure to add the result of OptionField::GetSerializedSize () to your IPv6ExtensionHeader::GetSerializedSize () return value. Call OptionField::Serialize and OptionField::Deserialize at the end of your corresponding IPv6ExtensionHeader methods.
Definition at line 144 of file ipv6-extension-header.h.
ns3::OptionField::OptionField | ( | uint32_t | optionsOffset | ) |
Constructor.
optionsOffset | option offset |
Definition at line 129 of file ipv6-extension-header.cc.
ns3::OptionField::~OptionField | ( | ) |
Destructor.
Definition at line 135 of file ipv6-extension-header.cc.
void ns3::OptionField::AddOption | ( | Ipv6OptionHeader const & | option | ) |
Serialize the option, prepending pad1 or padn option as necessary.
option | the option header to serialize |
Definition at line 170 of file ipv6-extension-header.cc.
References ns3::Buffer::AddAtEnd(), CalculatePad(), ns3::Buffer::End(), ns3::Ipv6OptionHeader::GetAlignment(), ns3::Ipv6OptionHeader::GetSerializedSize(), m_optionData, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::Buffer::Iterator::Prev(), and ns3::Ipv6OptionHeader::Serialize().
Referenced by TestOptionWithoutAlignment::DoRun(), TestOptionWithAlignment::DoRun(), and TestFulfilledAlignment::DoRun().
|
private |
Calculate padding.
alignment | alignment |
Definition at line 191 of file ipv6-extension-header.cc.
References ns3::Ipv6OptionHeader::Alignment::factor, ns3::Buffer::GetSize(), m_optionData, m_optionsOffset, and ns3::Ipv6OptionHeader::Alignment::offset.
Referenced by AddOption(), GetSerializedSize(), and Serialize().
uint32_t ns3::OptionField::Deserialize | ( | Buffer::Iterator | start, |
uint32_t | length | ||
) |
Deserialize the packet.
start | Buffer iterator |
length | length |
Definition at line 159 of file ipv6-extension-header.cc.
References ns3::Buffer::AddAtEnd(), ns3::Buffer::Begin(), m_optionData, visualizer.core::start(), and ns3::Buffer::Iterator::Write().
Referenced by ns3::Ipv6ExtensionHopByHopHeader::Deserialize(), and ns3::Ipv6ExtensionDestinationHeader::Deserialize().
Buffer ns3::OptionField::GetOptionBuffer | ( | ) |
Get the buffer.
Definition at line 201 of file ipv6-extension-header.cc.
References m_optionData.
uint32_t ns3::OptionField::GetOptionsOffset | ( | ) |
Get the offset where the options begin, measured from the start of the extension header.
Definition at line 196 of file ipv6-extension-header.cc.
References m_optionsOffset.
Referenced by ns3::Ipv6ExtensionHopByHop::Process(), and ns3::Ipv6ExtensionDestination::Process().
uint32_t ns3::OptionField::GetSerializedSize | ( | void | ) | const |
Get the serialized size of the packet.
Definition at line 139 of file ipv6-extension-header.cc.
References CalculatePad(), ns3::Buffer::GetSize(), and m_optionData.
Referenced by ns3::Ipv6ExtensionHopByHopHeader::GetSerializedSize(), and ns3::Ipv6ExtensionDestinationHeader::GetSerializedSize().
void ns3::OptionField::Serialize | ( | Buffer::Iterator | start | ) | const |
Serialize all added options.
start | Buffer iterator |
Definition at line 144 of file ipv6-extension-header.cc.
References ns3::Buffer::Begin(), CalculatePad(), ns3::Buffer::End(), m_optionData, NS_LOG_LOGIC, ns3::Ipv6OptionPad1Header::Serialize(), ns3::Ipv6OptionPadnHeader::Serialize(), and visualizer.core::start().
Referenced by ns3::Ipv6ExtensionHopByHopHeader::Serialize(), and ns3::Ipv6ExtensionDestinationHeader::Serialize().
|
private |
Data payload.
Definition at line 209 of file ipv6-extension-header.h.
Referenced by AddOption(), CalculatePad(), Deserialize(), GetOptionBuffer(), GetSerializedSize(), and Serialize().
|
private |
Offset.
Definition at line 214 of file ipv6-extension-header.h.
Referenced by CalculatePad(), and GetOptionsOffset().