A Discrete-Event Network Simulator
API
ns3::Ipv6Header Class Reference

Packet header for IPv6. More...

#include "ipv6-header.h"

+ Inheritance diagram for ns3::Ipv6Header:
+ Collaboration diagram for ns3::Ipv6Header:

Public Types

enum  DscpType {
  DscpDefault = 0x00, DSCP_CS1 = 0x08, DSCP_AF11 = 0x0A, DSCP_AF12 = 0x0C,
  DSCP_AF13 = 0x0E, DSCP_CS2 = 0x10, DSCP_AF21 = 0x12, DSCP_AF22 = 0x14,
  DSCP_AF23 = 0x16, DSCP_CS3 = 0x18, DSCP_AF31 = 0x1A, DSCP_AF32 = 0x1C,
  DSCP_AF33 = 0x1E, DSCP_CS4 = 0x20, DSCP_AF41 = 0x22, DSCP_AF42 = 0x24,
  DSCP_AF43 = 0x26, DSCP_CS5 = 0x28, DSCP_EF = 0x2E, DSCP_CS6 = 0x30,
  DSCP_CS7 = 0x38
}
 DiffServ Code Points Code Points defined in Assured Forwarding (AF) RFC 2597 Expedited Forwarding (EF) RFC 2598 Default and Class Selector (CS) RFC 2474 More...
 
enum  EcnType { ECN_NotECT = 0x00, ECN_ECT1 = 0x01, ECN_ECT0 = 0x02, ECN_CE = 0x03 }
 ECN field bits. More...
 
enum  NextHeader_e {
  IPV6_EXT_HOP_BY_HOP = 0, IPV6_IPV4 = 4, IPV6_TCP = 6, IPV6_UDP = 17,
  IPV6_IPV6 = 41, IPV6_EXT_ROUTING = 43, IPV6_EXT_FRAGMENTATION = 44, IPV6_EXT_CONFIDENTIALITY = 50,
  IPV6_EXT_AUTHENTIFICATION = 51, IPV6_ICMPV6 = 58, IPV6_EXT_END = 59, IPV6_EXT_DESTINATION = 60,
  IPV6_SCTP = 135, IPV6_EXT_MOBILITY = 135, IPV6_UDP_LITE = 136
}
 IPv6 next-header value. More...
 

Public Member Functions

 Ipv6Header (void)
 Constructor. More...
 
virtual uint32_t Deserialize (Buffer::Iterator start)
 Deserialize the packet. More...
 
std::string DscpTypeToString (DscpType dscp) const
 
std::string EcnTypeToString (EcnType ecn) const
 
Ipv6Address GetDestinationAddress (void) const
 Get the "Destination address" field. More...
 
DscpType GetDscp (void) const
 
EcnType GetEcn (void) const
 
uint32_t GetFlowLabel (void) const
 Get the "Flow label" field. More...
 
uint8_t GetHopLimit (void) const
 Get the "Hop limit" field (TTL). More...
 
virtual TypeId GetInstanceTypeId (void) const
 Return the instance type identifier. More...
 
uint8_t GetNextHeader (void) const
 Get the next header. More...
 
uint16_t GetPayloadLength (void) const
 Get the "Payload length" field. More...
 
virtual uint32_t GetSerializedSize (void) const
 Get the serialized size of the packet. More...
 
Ipv6Address GetSourceAddress (void) const
 Get the "Source address" field. More...
 
uint8_t GetTrafficClass (void) const
 Get the "Traffic class" field. More...
 
virtual void Print (std::ostream &os) const
 Print some information about the packet. More...
 
virtual void Serialize (Buffer::Iterator start) const
 Serialize the packet. More...
 
void SetDestinationAddress (Ipv6Address dst)
 Set the "Destination address" field. More...
 
void SetDscp (DscpType dscp)
 Set DSCP Field. More...
 
void SetEcn (EcnType ecn)
 Set ECN field bits. More...
 
void SetFlowLabel (uint32_t flow)
 Set the "Flow label" field. More...
 
void SetHopLimit (uint8_t limit)
 Set the "Hop limit" field (TTL). More...
 
void SetNextHeader (uint8_t next)
 Set the "Next header" field. More...
 
void SetPayloadLength (uint16_t len)
 Set the "Payload length" field. More...
 
void SetSourceAddress (Ipv6Address src)
 Set the "Source address" field. More...
 
void SetTrafficClass (uint8_t traffic)
 Set the "Traffic class" field. More...
 
- Public Member Functions inherited from ns3::Header
virtual ~Header ()
 
- Public Member Functions inherited from ns3::Chunk
virtual uint32_t Deserialize (Buffer::Iterator start, Buffer::Iterator end)
 Deserialize the object from a buffer iterator. More...
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor. More...
 
void GetAttribute (std::string name, AttributeValue &value) const
 Get the value of an attribute, raising fatal errors if unsuccessful. More...
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising erros. More...
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful. More...
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors. More...
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context. More...
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context. More...
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context. More...
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context. More...
 

Static Public Member Functions

static TypeId GetTypeId (void)
 Get the type identifier. More...
 
- Static Public Member Functions inherited from ns3::Header
static TypeId GetTypeId (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::Chunk
static TypeId GetTypeId (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 Get the type ID. More...
 

Private Attributes

Ipv6Address m_destinationAddress
 The destination address. More...
 
uint32_t m_flowLabel: 20
 The flow label. More...
 
uint8_t m_hopLimit
 The Hop limit value. More...
 
uint8_t m_nextHeader
 The Next header number. More...
 
uint16_t m_payloadLength
 The payload length. More...
 
Ipv6Address m_sourceAddress
 The source address. More...
 
uint32_t m_trafficClass: 8
 The traffic class. More...
 

Additional Inherited Members

- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes. More...
 
virtual void NotifyConstructionCompleted (void)
 Notifier called once the ObjectBase is fully constructed. More...
 

Detailed Description

Packet header for IPv6.

Introspection did not find any typical Config paths.


No Attributes are defined for this type.
No TraceSources are defined for this type.
Size of this type is 48 bytes (on a 64-bit architecture).

Definition at line 34 of file ipv6-header.h.

Member Enumeration Documentation

DiffServ Code Points Code Points defined in Assured Forwarding (AF) RFC 2597 Expedited Forwarding (EF) RFC 2598 Default and Class Selector (CS) RFC 2474

Enumerator
DscpDefault 
DSCP_CS1 
DSCP_AF11 
DSCP_AF12 
DSCP_AF13 
DSCP_CS2 
DSCP_AF21 
DSCP_AF22 
DSCP_AF23 
DSCP_CS3 
DSCP_AF31 
DSCP_AF32 
DSCP_AF33 
DSCP_CS4 
DSCP_AF41 
DSCP_AF42 
DSCP_AF43 
DSCP_CS5 
DSCP_EF 
DSCP_CS6 
DSCP_CS7 

Definition at line 45 of file ipv6-header.h.

ECN field bits.

Enumerator
ECN_NotECT 
ECN_ECT1 
ECN_ECT0 
ECN_CE 

Definition at line 151 of file ipv6-header.h.

IPv6 next-header value.

Enumerator
IPV6_EXT_HOP_BY_HOP 
IPV6_IPV4 
IPV6_TCP 
IPV6_UDP 
IPV6_IPV6 
IPV6_EXT_ROUTING 
IPV6_EXT_FRAGMENTATION 
IPV6_EXT_CONFIDENTIALITY 
IPV6_EXT_AUTHENTIFICATION 
IPV6_ICMPV6 
IPV6_EXT_END 
IPV6_EXT_DESTINATION 
IPV6_SCTP 
IPV6_EXT_MOBILITY 
IPV6_UDP_LITE 

Definition at line 82 of file ipv6-header.h.

Constructor & Destructor Documentation

ns3::Ipv6Header::Ipv6Header ( void  )

Constructor.

Definition at line 34 of file ipv6-header.cc.

References SetDestinationAddress(), and SetSourceAddress().

+ Here is the call graph for this function:

Member Function Documentation

uint32_t ns3::Ipv6Header::Deserialize ( Buffer::Iterator  start)
virtual

Deserialize the packet.

Parameters
startBuffer iterator
Returns
size of the packet

Implements ns3::Header.

Definition at line 164 of file ipv6-header.cc.

References GetSerializedSize(), m_destinationAddress, m_flowLabel, m_hopLimit, m_nextHeader, m_payloadLength, m_sourceAddress, m_trafficClass, NS_LOG_WARN, ns3::ReadFrom(), ns3::Buffer::Iterator::ReadNtohU16(), ns3::Buffer::Iterator::ReadNtohU32(), ns3::Buffer::Iterator::ReadU8(), and visualizer.core::start().

Referenced by ns3::Ipv6ExtensionLooseRouting::Process().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::string ns3::Ipv6Header::DscpTypeToString ( DscpType  dscp) const
Parameters
dscpthe dscp
Returns
std::string of DSCPType

Definition at line 209 of file ipv6-header.cc.

References DSCP_AF11, DSCP_AF12, DSCP_AF13, DSCP_AF21, DSCP_AF22, DSCP_AF23, DSCP_AF31, DSCP_AF32, DSCP_AF33, DSCP_AF41, DSCP_AF42, DSCP_AF43, DSCP_CS1, DSCP_CS2, DSCP_CS3, DSCP_CS4, DSCP_CS5, DSCP_CS6, DSCP_CS7, DSCP_EF, DscpDefault, and NS_LOG_FUNCTION.

Referenced by Print().

+ Here is the caller graph for this function:

std::string ns3::Ipv6Header::EcnTypeToString ( EcnType  ecn) const
Parameters
ecnthe ECNType
Returns
std::string of ECNType

Definition at line 269 of file ipv6-header.cc.

References ECN_CE, ECN_ECT0, ECN_ECT1, ECN_NotECT, and NS_LOG_FUNCTION.

Ipv6Address ns3::Ipv6Header::GetDestinationAddress ( void  ) const

Get the "Destination address" field.

Returns
the destination address

Definition at line 110 of file ipv6-header.cc.

References m_destinationAddress.

Referenced by LteIpv6RoutingTestCase::Checker(), ns3::Ipv6FlowClassifier::Classify(), ns3::EpcTftClassifier::Classify(), ns3::SixLowPanNetDevice::CompressLowPanHc1(), ns3::SixLowPanNetDevice::CompressLowPanIphc(), ns3::SixLowPanNetDevice::DecompressLowPanIphc(), ns3::VirtualUdpSocketImpl::DoSendTo(), ns3::UdpSocketImpl::DoSendTo(), ns3::Ipv6FlowProbe::DropLogger(), ns3::Icmpv6L4Protocol::Forward(), ns3::Ipv6RawSocketImpl::ForwardUp(), ns3::VirtualTcpSocketBase::ForwardUp6(), ns3::TcpSocketBase::ForwardUp6(), ns3::Icmpv6L4Protocol::HandlePacketTooBig(), ns3::Ipv6QueueDiscItem::Hash(), ns3::Ipv6L3Protocol::IpForward(), ns3::Ipv6L3Protocol::IpMulticastForward(), ns3::Ipv6L3Protocol::LocalDeliver(), ns3::Ipv6ExtensionLooseRouting::Process(), ns3::Ipv6Extension::ProcessOptions(), ns3::Icmpv4L4Protocol::Receive(), ns3::Ipv6L3Protocol::Receive(), ns3::UdpL4Protocol::Receive(), ns3::VirtualUdpL4Protocol::Receive(), ns3::TcpL4Protocol::Receive(), ns3::VirtualTcpL4Protocol::Receive(), ns3::Icmpv6L4Protocol::Receive(), ns3::dsr::DsrRouting::Receive(), ns3::EpcSgwPgwApplication::RecvFromTunDevice(), ns3::Ipv6ListRouting::RouteInput(), ns3::RipNg::RouteInput(), ns3::Ipv6StaticRouting::RouteInput(), ns3::Ipv6L3Protocol::RouteInputError(), ns3::Ipv6ListRouting::RouteOutput(), ns3::RipNg::RouteOutput(), ns3::Ipv6StaticRouting::RouteOutput(), and ns3::Ipv6L3Protocol::SendRealOut().

+ Here is the caller graph for this function:

Ipv6Header::DscpType ns3::Ipv6Header::GetDscp ( void  ) const
Returns
the DSCP field of this packet.

Definition at line 202 of file ipv6-header.cc.

References m_trafficClass, and NS_LOG_FUNCTION.

Referenced by ns3::Ipv6FlowClassifier::Classify(), and Print().

+ Here is the caller graph for this function:

Ipv6Header::EcnType ns3::Ipv6Header::GetEcn ( void  ) const
Returns
the ECN field bits of this packet.

Definition at line 262 of file ipv6-header.cc.

References m_trafficClass, and NS_LOG_FUNCTION.

Referenced by ns3::VirtualTcpSocketBase::ForwardUp6(), ns3::TcpSocketBase::ForwardUp6(), and ns3::Ipv6QueueDiscItem::Mark().

+ Here is the caller graph for this function:

uint32_t ns3::Ipv6Header::GetFlowLabel ( void  ) const

Get the "Flow label" field.

Returns
the flow label value

Definition at line 60 of file ipv6-header.cc.

References m_flowLabel.

Referenced by ns3::SixLowPanNetDevice::CompressLowPanHc1(), and ns3::SixLowPanNetDevice::CompressLowPanIphc().

+ Here is the caller graph for this function:

TypeId ns3::Ipv6Header::GetInstanceTypeId ( void  ) const
virtual

Return the instance type identifier.

Returns
instance type ID

Implements ns3::ObjectBase.

Definition at line 125 of file ipv6-header.cc.

References GetTypeId().

+ Here is the call graph for this function:

uint16_t ns3::Ipv6Header::GetPayloadLength ( void  ) const

Get the "Payload length" field.

Returns
the payload length

Definition at line 70 of file ipv6-header.cc.

References m_payloadLength.

Referenced by ns3::Ipv6L3Protocol::Receive().

+ Here is the caller graph for this function:

Ipv6Address ns3::Ipv6Header::GetSourceAddress ( void  ) const

Get the "Source address" field.

Returns
the source address

Definition at line 100 of file ipv6-header.cc.

References m_sourceAddress.

Referenced by LteIpv6RoutingTestCase::Checker(), ns3::Ipv6FlowClassifier::Classify(), ns3::EpcTftClassifier::Classify(), ns3::SixLowPanNetDevice::CompressLowPanHc1(), ns3::SixLowPanNetDevice::CompressLowPanIphc(), ns3::SixLowPanNetDevice::DecompressLowPanIphc(), ns3::VirtualUdpSocketImpl::DoSendTo(), ns3::UdpSocketImpl::DoSendTo(), ns3::Icmpv6L4Protocol::Forward(), ns3::Ipv6RawSocketImpl::ForwardUp(), ns3::VirtualUdpSocketImpl::ForwardUp6(), ns3::UdpSocketImpl::ForwardUp6(), ns3::VirtualTcpSocketBase::ForwardUp6(), ns3::TcpSocketBase::ForwardUp6(), ns3::Ipv6ExtensionFragment::HandleFragmentsTimeout(), ns3::Radvd::HandleRead(), ns3::Ipv6QueueDiscItem::Hash(), ns3::Ipv6L3Protocol::IpForward(), ns3::Ipv6L3Protocol::IpMulticastForward(), ns3::Ipv6L3Protocol::LocalDeliver(), ns3::Ipv6ExtensionFragment::Process(), ns3::Ipv6ExtensionRouting::Process(), ns3::Ipv6ExtensionLooseRouting::Process(), ns3::Ipv6Extension::ProcessOptions(), ns3::Icmpv4L4Protocol::Receive(), ns3::Ipv6L3Protocol::Receive(), ns3::VirtualUdpL4Protocol::Receive(), ns3::UdpL4Protocol::Receive(), ns3::TcpL4Protocol::Receive(), ns3::VirtualTcpL4Protocol::Receive(), ns3::Icmpv6L4Protocol::Receive(), ns3::dsr::DsrRouting::Receive(), ns3::RipNg::RouteInput(), ns3::Ipv6StaticRouting::RouteInput(), ns3::Ipv6L3Protocol::RouteInputError(), ns3::Ipv6ListRouting::RouteOutput(), and ns3::Ipv6L3Protocol::SendRealOut().

+ Here is the caller graph for this function:

uint8_t ns3::Ipv6Header::GetTrafficClass ( void  ) const
TypeId ns3::Ipv6Header::GetTypeId ( void  )
static

Get the type identifier.

Returns
type identifier

Definition at line 115 of file ipv6-header.cc.

References ns3::TypeId::SetParent().

Referenced by GetInstanceTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::Ipv6Header::Print ( std::ostream &  os) const
virtual

Print some information about the packet.

Parameters
osoutput stream
Returns
info about this packet

Implements ns3::Header.

Definition at line 130 of file ipv6-header.cc.

References DscpTypeToString(), GetDscp(), m_destinationAddress, m_flowLabel, m_hopLimit, m_nextHeader, m_payloadLength, m_sourceAddress, and m_trafficClass.

+ Here is the call graph for this function:

void ns3::Ipv6Header::Serialize ( Buffer::Iterator  start) const
virtual

Serialize the packet.

Parameters
startBuffer iterator

Implements ns3::Header.

Definition at line 148 of file ipv6-header.cc.

References m_destinationAddress, m_flowLabel, m_hopLimit, m_nextHeader, m_payloadLength, m_sourceAddress, m_trafficClass, visualizer.core::start(), ns3::Buffer::Iterator::WriteHtonU16(), ns3::Buffer::Iterator::WriteHtonU32(), ns3::WriteTo(), and ns3::Buffer::Iterator::WriteU8().

Referenced by ns3::Ipv6ExtensionLooseRouting::Process().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::Ipv6Header::SetDscp ( DscpType  dscp)

Set DSCP Field.

Parameters
dscpDSCP value

Definition at line 188 of file ipv6-header.cc.

References m_trafficClass, and NS_LOG_FUNCTION.

void ns3::Ipv6Header::SetEcn ( EcnType  ecn)

Set ECN field bits.

Parameters
ecnECN field bits

Definition at line 195 of file ipv6-header.cc.

References m_trafficClass, and NS_LOG_FUNCTION.

Referenced by ns3::Ipv6QueueDiscItem::Mark().

+ Here is the caller graph for this function:

void ns3::Ipv6Header::SetFlowLabel ( uint32_t  flow)

Set the "Flow label" field.

Parameters
flowthe 20-bit value

Definition at line 55 of file ipv6-header.cc.

References m_flowLabel.

Referenced by ns3::SixLowPanNetDevice::DecompressLowPanHc1(), and ns3::SixLowPanNetDevice::DecompressLowPanIphc().

+ Here is the caller graph for this function:

void ns3::Ipv6Header::SetHopLimit ( uint8_t  limit)
void ns3::Ipv6Header::SetPayloadLength ( uint16_t  len)

Set the "Payload length" field.

Parameters
lenthe length of the payload in bytes

Definition at line 65 of file ipv6-header.cc.

References m_payloadLength.

Referenced by ns3::Ipv6L3Protocol::BuildHeader(), ns3::SixLowPanNetDevice::DecompressLowPanHc1(), ns3::SixLowPanNetDevice::DecompressLowPanIphc(), ns3::Icmpv6L4Protocol::ForgeEchoRequest(), and ns3::Ipv6ExtensionFragment::GetFragments().

+ Here is the caller graph for this function:

void ns3::Ipv6Header::SetTrafficClass ( uint8_t  traffic)

Set the "Traffic class" field.

Parameters
trafficthe 8-bit value

Definition at line 45 of file ipv6-header.cc.

References m_trafficClass.

Referenced by ns3::Ipv6L3Protocol::BuildHeader(), ns3::SixLowPanNetDevice::DecompressLowPanHc1(), and ns3::SixLowPanNetDevice::DecompressLowPanIphc().

+ Here is the caller graph for this function:

Member Data Documentation

Ipv6Address ns3::Ipv6Header::m_destinationAddress
private

The destination address.

Definition at line 310 of file ipv6-header.h.

Referenced by Deserialize(), GetDestinationAddress(), Print(), Serialize(), and SetDestinationAddress().

uint32_t ns3::Ipv6Header::m_flowLabel
private

The flow label.

Note
This is 20-bit value.

Definition at line 285 of file ipv6-header.h.

Referenced by Deserialize(), GetFlowLabel(), Print(), Serialize(), and SetFlowLabel().

uint8_t ns3::Ipv6Header::m_hopLimit
private

The Hop limit value.

Definition at line 300 of file ipv6-header.h.

Referenced by Deserialize(), GetHopLimit(), Print(), Serialize(), and SetHopLimit().

uint8_t ns3::Ipv6Header::m_nextHeader
private

The Next header number.

Definition at line 295 of file ipv6-header.h.

Referenced by Deserialize(), GetNextHeader(), Print(), Serialize(), and SetNextHeader().

uint16_t ns3::Ipv6Header::m_payloadLength
private

The payload length.

Definition at line 290 of file ipv6-header.h.

Referenced by Deserialize(), GetPayloadLength(), Print(), Serialize(), and SetPayloadLength().

Ipv6Address ns3::Ipv6Header::m_sourceAddress
private

The source address.

Definition at line 305 of file ipv6-header.h.

Referenced by Deserialize(), GetSourceAddress(), Print(), Serialize(), and SetSourceAddress().

uint32_t ns3::Ipv6Header::m_trafficClass
private

The traffic class.

Definition at line 279 of file ipv6-header.h.

Referenced by Deserialize(), GetDscp(), GetEcn(), GetTrafficClass(), Print(), Serialize(), SetDscp(), SetEcn(), and SetTrafficClass().


The documentation for this class was generated from the following files: