23 #include "ns3/assert.h"    24 #include "ns3/address-utils.h"    40     .SetGroupName (
"Internet")
    53   : m_calcChecksum (true),
   105   os << 
"( type = " << (uint32_t)
m_type << 
" code = " << (uint32_t)
m_code << 
" checksum = " << (uint32_t)
m_checksum << 
")";
   152   NS_LOG_FUNCTION (
this << src << dst << length << static_cast<uint32_t> (protocol));
   191     .SetGroupName (
"Internet")
   250   os << 
"( type = " << (uint32_t)
GetType () << 
" (NS) code = " << (uint32_t)
GetCode () << 
" target = " << 
m_target << 
" checksum = " << (uint32_t)
GetChecksum ()  << 
")";
   262   uint8_t buff_target[16];
   263   uint16_t checksum = 0;
   271   i.
Write (buff_target, 16);
   305     .SetGroupName (
"Internet")
   397   os << 
"( type = " << (uint32_t)
GetType () << 
" (NA) code = " << (uint32_t)
GetCode () << 
" checksum = " << (uint32_t)
GetChecksum () << 
")";
   409   uint8_t buff_target[16];
   410   uint16_t checksum = 0;
   420       reserved |= (uint32_t)(1 << 31);
   425       reserved |= (uint32_t)(1<< 30);
   430       reserved |= (uint32_t)(1<< 29);
   435   i.
Write (buff_target, 16);
   489     .SetGroupName (
"Internet")
   620   os << 
"( type = " << (uint32_t)
GetType () << 
" (RA) code = " << (uint32_t)
GetCode () << 
" checksum = " << (uint32_t)
GetChecksum () << 
")";
   632   uint16_t checksum = 0;
   643       flags |= (uint8_t)(1<< 7);
   648       flags |= (uint8_t)(1<< 6);
   653       flags |= (uint8_t)(1<< 5);
   709     .SetGroupName (
"Internet")
   749   os << 
"( type = " << (uint32_t)
GetType () << 
" (RS) code = " << (uint32_t)
GetCode () << 
" checksum = " << (uint32_t)
GetChecksum ()  << 
")";
   762   uint16_t checksum = 0;
   800     .SetGroupName (
"Internet")
   880   uint16_t checksum = 0;
   931     .SetGroupName (
"Internet")
   995   os << 
"( type = " << (
GetType () == 128 ? 
"128 (Request)" : 
"129 (Reply)") << 
   996   " code = " << (uint32_t)
GetCode () <<
  1009   uint16_t checksum = 0;
  1047   static TypeId tid = 
TypeId (
"ns3::Icmpv6DestinationUnreachable")
  1049     .SetGroupName (
"Internet")
  1089   os << 
"( type = " << (uint32_t)
GetType () << 
" (Destination Unreachable) code = " << (uint32_t)
GetCode () << 
" checksum = " << (uint32_t)
GetChecksum ()  << 
")";
  1101   uint16_t checksum = 0;
  1110   uint8_t *buf = 
new uint8_t[size];
  1112   i.
Write (buf, size);
  1126   uint16_t length = 
start.GetRemainingSize () - 8;
  1127   uint8_t* 
data = 
new uint8_t[length];
  1147     .SetGroupName (
"Internet")
  1200   os << 
"( type = " << (uint32_t)
GetType () << 
" (Too Big) code = " << (uint32_t)
GetCode () << 
" checksum = " << (uint32_t)
GetChecksum () << 
" mtu = " << (uint32_t)
GetMtu () << 
")";
  1212   uint16_t checksum = 0;
  1221   uint8_t *buf = 
new uint8_t[size];
  1223   i.
Write (buf, size);
  1237   uint16_t length = 
start.GetRemainingSize () - 8;
  1238   uint8_t* 
data = 
new uint8_t[length];
  1258     .SetGroupName (
"Internet")
  1298   os << 
"( type = " << (uint32_t)
GetType () << 
" (Destination Unreachable) code = " << (uint32_t)
GetCode () << 
" checksum = " << (uint32_t)
GetChecksum ()  << 
")";
  1311   uint16_t checksum = 0;
  1320   uint8_t *buf = 
new uint8_t[size];
  1322   i.
Write (buf, size);
  1337   uint16_t length = 
start.GetRemainingSize () - 8;
  1338   uint8_t* 
data = 
new uint8_t[length];
  1356   static TypeId tid = 
TypeId (
"ns3::Icmpv6ParameterError")
  1358     .SetGroupName (
"Internet")
  1411   os << 
"( type = " << (uint32_t)
GetType () << 
" (Destination Unreachable) code = " << (uint32_t)
GetCode () << 
" checksum = " << (uint32_t)
GetChecksum ()  << 
" ptr = " << (uint32_t)
GetPtr () << 
")";
  1423   uint16_t checksum = 0;
  1432   uint8_t *buf = 
new uint8_t[size];
  1434   i.
Write (buf, size);
  1448   uint16_t length = 
start.GetRemainingSize () - 8;
  1449   uint8_t* 
data = 
new uint8_t[length];
  1469     .SetGroupName (
"Internet")
  1522   os << 
"( type = " << (uint32_t)
GetType () << 
" length = " << (uint32_t)
GetLength () << 
")";
  1548     .SetGroupName (
"Internet")
  1609   os << 
"( type = " << (uint32_t)
GetType () << 
" length = " << (uint32_t)
GetLength () << 
" MTU = " << 
m_mtu << 
")";
  1643   static TypeId tid = 
TypeId (
"ns3::Icmpv6OptionPrefixInformation")
  1645     .SetGroupName (
"Internet")
  1672   NS_LOG_FUNCTION (
this << prefix << static_cast<uint32_t> (prefixlen));
  1764   os << 
"( type = " << (uint32_t)
GetType () << 
" length = " << (uint32_t)
GetLength () << 
" prefix " << 
m_prefix << 
")";
  1779   memset (buf, 0x00, 
sizeof (buf));
  1817   static TypeId tid = 
TypeId (
"ns3::Icmpv6OptionLinkLayerAddress")
  1819     .SetGroupName (
"Internet")
  1877   os << 
"( type = " << (uint32_t)
GetType () << 
" length = " << (uint32_t)
GetLength () << 
" L2 Address = " << 
m_addr << 
")";
  1899   for (uint8_t nb = 0; nb<len; nb++)
  1926   static TypeId tid = 
TypeId (
"ns3::Icmpv6OptionRedirected")
  1928     .SetGroupName (
"Internet")
  1970   os << 
"( type = " << (uint32_t)
GetType () << 
" length = " << (uint32_t)
GetLength () << 
")";
  1991   uint8_t *buf = 
new uint8_t[size];
  1993   i.
Write (buf, size);
  2003   uint8_t length = i.
ReadU8 ();
  2009   uint8_t* buff = 
new uint8_t[len2];
  2010   i.
Read (buff, len2);
  2011   m_packet = Create<Packet> (buff, len2);
 
uint16_t CalculateIpChecksum(uint16_t size)
Calculate the checksum. 
uint16_t GetSeq() const
Get the sequence number. 
Ipv6Address m_destination
IPv6 destination address. 
virtual TypeId GetInstanceTypeId() const
Get the instance type ID. 
virtual void Print(std::ostream &os) const
Print information. 
Address GetAddress() const
Get the hardware address. 
uint32_t m_reserved
Reserved value. 
void SetPacket(Ptr< Packet > packet)
Set the redirected packet. 
ICMPv6 redirected option. 
void AddAtStart(uint32_t start)
virtual TypeId GetInstanceTypeId() const
Get the instance type ID. 
bool GetFlagS() const
Get the S flag. 
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet. 
uint32_t m_RetransmissionTimer
The retransmission timer. 
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet. 
Ipv6Address GetIpv6Target() const
Get the IPv6 target field. 
static TypeId GetTypeId()
Get the UID of this class. 
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
ICMPv6 Error Parameter Error header. 
virtual TypeId GetInstanceTypeId() const
Get the instance type ID. 
virtual uint32_t GetSerializedSize() const
Get the serialized size. 
ICMPv6 Router Advertisement header. 
virtual uint32_t GetSerializedSize() const
Get the serialized size. 
ICMPv6 Neighbor Advertisement header. 
virtual TypeId GetInstanceTypeId() const
Get the instance type ID. 
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet. 
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system. 
virtual TypeId GetInstanceTypeId() const
Get the instance type ID. 
Ptr< Packet > m_packet
The incorrect packet. 
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload). 
Ptr< Packet > m_packet
The incorrect Packet. 
Icmpv6OptionMtu()
Constructor. 
uint8_t GetLength(void) const
Get the length of the underlying address. 
virtual TypeId GetInstanceTypeId() const
Get the instance type ID. 
virtual TypeId GetInstanceTypeId() const
Get the instance type ID. 
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet. 
void SetReserved(uint32_t reserved)
Set the reserved field. 
virtual uint32_t GetSerializedSize() const
Get the serialized size. 
virtual ~Icmpv6TimeExceeded()
Destructor. 
virtual uint32_t GetSerializedSize() const
Get the serialized size. 
ICMPv6 Error Time Exceeded header. 
Icmpv6TimeExceeded()
Constructor. 
virtual void Print(std::ostream &os) const
Print information. 
Ptr< Packet > GetPacket() const
Get the incorrect packet. 
 automatically resized byte buffer 
ICMPv6 Router Solicitation header. 
ICMPv6 Neighbor Solicitation header. 
uint16_t m_reserved
The reserved value. 
uint32_t m_reserved
The reserved value. 
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet. 
static TypeId GetTypeId()
Get the UID of this class. 
void GetBytes(uint8_t buf[16]) const
Get the bytes corresponding to the address. 
virtual void Print(std::ostream &os) const
Print information. 
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
Icmpv6DestinationUnreachable()
Constructor. 
virtual uint32_t GetSerializedSize() const
Get the serialized size. 
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name. 
void SetPtr(uint32_t ptr)
Set the pointer field. 
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet. 
Ptr< Packet > m_packet
The redirected packet. 
uint32_t GetReserved() const
Get the reserved field. 
void SetRetransmissionTime(uint32_t r)
Set the node Retransmission time (Neighbor Discovery). 
static TypeId GetTypeId()
Get the UID of this class. 
Ipv6Address m_target
IPv6 target address. 
static TypeId GetTypeId()
Get the UID of this class. 
Ipv6Address m_target
The IPv6 target address. 
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function. 
uint8_t GetFlags() const
Getflags. 
uint16_t m_id
ID of the packet (to distinguish response between many ping program). 
void SetMtu(uint32_t mtu)
Set the MTU. 
void SetPacket(Ptr< Packet > p)
Set the incorrect packet. 
void SetTarget(Ipv6Address target)
Set the IPv6 target address. 
static TypeId GetTypeId()
Get the UID of this class. 
uint32_t ReadNtohU32(void)
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet. 
Icmpv6Echo()
Default constructor. 
Ptr< Packet > GetPacket() const
Get the incorrect packet. 
Icmpv6ParameterError()
Constructor. 
static TypeId GetTypeId()
Get the UID of this class. 
static TypeId GetTypeId()
Get the UID of this class. 
iterator in a Buffer instance 
a polymophic address class 
void SetPacket(Ptr< Packet > p)
Set the incorrect packet. 
void SetLifeTime(uint16_t l)
Set the node Life time (Neighbor Discovery). 
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet. 
virtual void Print(std::ostream &os) const
Print information. 
void SetIpv6Target(Ipv6Address target)
Set the IPv6 target field. 
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet. 
ICMPv6 Error Destination Unreachable header. 
uint32_t GetMtu() const
Get the MTU field. 
virtual ~Icmpv6ParameterError()
Destructor. 
void SetCurHopLimit(uint8_t m)
Set the IPv6 maximum number of jumps. 
virtual ~Icmpv6NA()
Destructor. 
uint32_t m_reserved
The reserved value. 
virtual TypeId GetInstanceTypeId() const
Get the instance type ID. 
void SetIpv6Target(Ipv6Address target)
Set the IPv6 target field. 
virtual void Print(std::ostream &os) const
Print information. 
Icmpv6OptionLinkLayerAddress()
Constructor. 
void WriteU16(uint16_t data)
Ipv6Address m_target
The IPv6 target address. 
Ptr< Packet > m_packet
the incorrect packet. 
uint32_t m_reserved
The reserved value. 
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet. 
uint32_t GetMtu() const
Get the MTU. 
uint16_t GetLifeTime() const
Get the node Life time (Neighbor Discovery). 
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet. 
void WriteHtonU16(uint16_t data)
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet. 
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet. 
virtual void Print(std::ostream &os) const
Print information. 
uint8_t m_curHopLimit
The max jumps. 
Ptr< Packet > GetPacket() const
Get the redirected packet. 
bool GetFlagO() const
Get the O flag. 
void Next(void)
go forward by one byte 
ICMPv6 Redirection header. 
uint32_t GetSize(void) const
virtual TypeId GetInstanceTypeId() const
Get the instance type ID. 
Ipv6Address GetTarget() const
Get the IPv6 target address. 
static TypeId GetTypeId()
Get the UID of this class. 
uint32_t m_mtu
The MTU value. 
void SetPacket(Ptr< Packet > p)
Set the incorrect packet. 
uint32_t GetReserved() const
Get the reserved field. 
virtual ~Icmpv6OptionLinkLayerAddress()
Destructor. 
void SetReserved(uint16_t reserved)
Set the reserved field. 
virtual void Print(std::ostream &os) const
Print information. 
static TypeId GetTypeId()
Get the UID of this class. 
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet. 
Address m_addr
The hardware address. 
void SetReserved(uint32_t reserved)
Set the reserved field. 
void Set(char const *address)
Sets an Ipv6Address by parsing the input C-string. 
void SetReserved(uint32_t reserved)
Set the reserved field. 
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet. 
Ptr< Packet > GetPacket() const
Get the incorrect packet. 
virtual void Print(std::ostream &os) const
Print information. 
double f(double x, void *params)
uint8_t m_flags
The flags field value. 
virtual uint32_t GetSerializedSize() const
Get the serialized size. 
virtual ~Icmpv6OptionMtu()
Destructor. 
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet. 
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet. 
virtual ~Icmpv6RS()
Destructor. 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
uint32_t CopyFrom(const uint8_t *buffer, uint8_t len)
virtual TypeId GetInstanceTypeId(void) const
Get the instance type ID. 
uint32_t GetReserved() const
Get the reserved field. 
bool GetFlagM() const
Get the M flag. 
uint8_t GetCurHopLimit() const
Get the IPv6 maximum number of jumps. 
virtual ~Icmpv6OptionRedirected()
Destructor. 
virtual ~Icmpv6Redirection()
Destructor. 
uint32_t m_ReachableTime
The reachable time value. 
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet. 
void Read(uint8_t *buffer, uint32_t size)
Ipv6Address GetIpv6Target() const
Get the IPv6 target field. 
void SetFlagO(bool o)
Set the O flag. 
void SetFlagH(bool h)
Set the H flag. 
virtual void Print(std::ostream &os) const
Print information. 
virtual ~Icmpv6RA()
Destructor. 
void WriteHtonU32(uint32_t data)
void SetReserved(uint32_t reserved)
Set the reserved field. 
void SetFlagR(bool r)
Set the R flag. 
void SetFlagS(bool s)
Set the S flag. 
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet. 
void SetFlagM(bool m)
Set the M flag. 
void SetReachableTime(uint32_t r)
Set the node Reachable time (Neighbor Discovery). 
uint32_t m_ptr
The pointer field. 
Describes an IPv6 address. 
void WriteU8(uint8_t data)
Icmpv6TooBig()
Constructor. 
virtual void Print(std::ostream &os) const
Print information. 
uint32_t CopyData(uint8_t *buffer, uint32_t size) const
Copy the packet contents to a byte buffer. 
uint16_t GetReserved() const
Get the reserved field. 
virtual ~Icmpv6Echo()
Destructor. 
void SetDestination(Ipv6Address destination)
Set the IPv6 destination address. 
virtual uint32_t GetSerializedSize() const
Get the serialized size. 
virtual ~Icmpv6TooBig()
Destructor. 
virtual uint32_t GetSerializedSize() const
Get the serialized size. 
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet. 
virtual uint32_t GetSerializedSize() const
Get the serialized size. 
virtual void Print(std::ostream &os) const
Print information. 
Ipv6Address GetDestination() const
Get the IPv6 destination address. 
uint16_t m_LifeTime
The lifetime value. 
virtual ~Icmpv6NS()
Destructor. 
void Write(uint8_t const *buffer, uint32_t size)
bool GetFlagR() const
Get the R flag. 
Ptr< Packet > m_packet
The incorrect packet. 
Icmpv6OptionRedirected()
Constructor. 
virtual void Print(std::ostream &os) const
Print information. 
uint32_t GetPtr() const
Get the pointer field. 
virtual ~Icmpv6DestinationUnreachable()
Destructor. 
virtual uint32_t GetSerializedSize() const
Get the serialized size. 
Ptr< Packet > GetPacket() const
Get the incorrect packet. 
static TypeId GetTypeId()
Get the UID of this class. 
virtual uint32_t GetSerializedSize() const
Get the serialized size. 
uint32_t GetReachableTime() const
Get the node Reachable time (Neighbor Discovery). 
ICMPv6 link-layer address option. 
uint32_t GetReserved() const
Get the reserved field. 
void SetFlags(uint8_t f)
Setflags. 
void SetSeq(uint16_t seq)
Set the sequence number. 
bool GetFlagO() const
Get the O flag. 
uint32_t m_mtu
The MTU value. 
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet. 
virtual uint32_t Deserialize(Buffer::Iterator start)
Deserialize the packet. 
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet. 
uint16_t ReadNtohU16(void)
void WriteU32(uint32_t data)
Icmpv6Redirection()
Constructor. 
void SetPacket(Ptr< Packet > p)
Set the incorrect packet. 
uint16_t m_seq
Sequence number (to distinguish response). 
virtual TypeId GetInstanceTypeId() const
Get the instance type ID. 
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet. 
ICMPv6 Error Too Big header. 
a unique identifier for an interface. 
void SetFlagO(bool o)
Set the O flag. 
static TypeId GetTypeId()
Get the UID of this class. 
TypeId SetParent(TypeId tid)
Set the parent TypeId. 
static TypeId GetTypeId()
Get the UID of this class. 
Buffer::Iterator Begin(void) const
bool GetFlagH() const
Get the H flag. 
static TypeId GetTypeId()
Get the UID of this class. 
virtual uint32_t GetSerializedSize() const
Get the serialized size. 
virtual TypeId GetInstanceTypeId() const
Get the instance type ID. 
void SetId(uint16_t id)
Set the ID of the packet. 
void Serialize(uint8_t buf[16]) const
Serialize this address to a 16-byte buffer. 
uint32_t GetRetransmissionTime() const
Get the node Retransmission time (Neighbor Discovery). 
virtual TypeId GetInstanceTypeId() const
Get the instance type ID. 
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet. 
uint32_t CopyTo(uint8_t buffer[MAX_SIZE]) const
Copy the address bytes into a buffer. 
virtual uint32_t GetSerializedSize() const
Get the serialized size. 
void SetMtu(uint32_t mtu)
Set the MTU. 
void SetAddress(Address addr)
Set the hardware address. 
uint16_t GetId() const
Get the ID of the packet. 
virtual void Print(std::ostream &os) const
Print information. 
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.