|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
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")
618 os <<
"( type = " << (uint32_t)
GetType () <<
" (RA) code = " << (uint32_t)
GetCode () <<
" checksum = " << (uint32_t)
GetChecksum () <<
")";
630 uint16_t checksum = 0;
641 flags |= (uint8_t)(1<< 7);
646 flags |= (uint8_t)(1<< 6);
651 flags |= (uint8_t)(1<< 5);
675 uint8_t flags = i.
ReadU8 ();
680 if (flags & (1 << 7))
685 if (flags & (1 << 6))
690 if (flags & (1 << 5))
707 .SetGroupName (
"Internet")
747 os <<
"( type = " << (uint32_t)
GetType () <<
" (RS) code = " << (uint32_t)
GetCode () <<
" checksum = " << (uint32_t)
GetChecksum () <<
")";
760 uint16_t checksum = 0;
798 .SetGroupName (
"Internet")
878 uint16_t checksum = 0;
929 .SetGroupName (
"Internet")
993 os <<
"( type = " << (
GetType () == 128 ?
"128 (Request)" :
"129 (Reply)") <<
994 " Id = " << (uint32_t)
GetId () <<
995 " SeqNo = " << (uint32_t)
GetSeq () <<
1008 uint16_t checksum = 0;
1046 static TypeId tid =
TypeId (
"ns3::Icmpv6DestinationUnreachable")
1048 .SetGroupName (
"Internet")
1088 os <<
"( type = " << (uint32_t)
GetType () <<
" (Destination Unreachable) code = " << (uint32_t)
GetCode () <<
" checksum = " << (uint32_t)
GetChecksum () <<
")";
1100 uint16_t checksum = 0;
1109 uint8_t *buf =
new uint8_t[size];
1111 i.
Write (buf, size);
1125 uint16_t length =
start.GetRemainingSize () - 8;
1126 uint8_t*
data =
new uint8_t[length];
1146 .SetGroupName (
"Internet")
1199 os <<
"( type = " << (uint32_t)
GetType () <<
" (Too Big) code = " << (uint32_t)
GetCode () <<
" checksum = " << (uint32_t)
GetChecksum () <<
" mtu = " << (uint32_t)
GetMtu () <<
")";
1211 uint16_t checksum = 0;
1220 uint8_t *buf =
new uint8_t[size];
1222 i.
Write (buf, size);
1236 uint16_t length =
start.GetRemainingSize () - 8;
1237 uint8_t*
data =
new uint8_t[length];
1257 .SetGroupName (
"Internet")
1297 os <<
"( type = " << (uint32_t)
GetType () <<
" (Destination Unreachable) code = " << (uint32_t)
GetCode () <<
" checksum = " << (uint32_t)
GetChecksum () <<
")";
1310 uint16_t checksum = 0;
1319 uint8_t *buf =
new uint8_t[size];
1321 i.
Write (buf, size);
1336 uint16_t length =
start.GetRemainingSize () - 8;
1337 uint8_t*
data =
new uint8_t[length];
1355 static TypeId tid =
TypeId (
"ns3::Icmpv6ParameterError")
1357 .SetGroupName (
"Internet")
1410 os <<
"( type = " << (uint32_t)
GetType () <<
" (Destination Unreachable) code = " << (uint32_t)
GetCode () <<
" checksum = " << (uint32_t)
GetChecksum () <<
" ptr = " << (uint32_t)
GetPtr () <<
")";
1422 uint16_t checksum = 0;
1431 uint8_t *buf =
new uint8_t[size];
1433 i.
Write (buf, size);
1447 uint16_t length =
start.GetRemainingSize () - 8;
1448 uint8_t*
data =
new uint8_t[length];
1468 .SetGroupName (
"Internet")
1521 os <<
"( type = " << (uint32_t)
GetType () <<
" length = " << (uint32_t)
GetLength () <<
")";
1547 .SetGroupName (
"Internet")
1608 os <<
"( type = " << (uint32_t)
GetType () <<
" length = " << (uint32_t)
GetLength () <<
" MTU = " <<
m_mtu <<
")";
1642 static TypeId tid =
TypeId (
"ns3::Icmpv6OptionPrefixInformation")
1644 .SetGroupName (
"Internet")
1671 NS_LOG_FUNCTION (
this << prefix <<
static_cast<uint32_t
> (prefixlen));
1763 os <<
"( type = " << (uint32_t)
GetType () <<
" length = " << (uint32_t)
GetLength () <<
" prefix " <<
m_prefix <<
")";
1778 memset (buf, 0x00,
sizeof (buf));
1816 static TypeId tid =
TypeId (
"ns3::Icmpv6OptionLinkLayerAddress")
1818 .SetGroupName (
"Internet")
1876 os <<
"( type = " << (uint32_t)
GetType () <<
" length = " << (uint32_t)
GetLength () <<
" L2 Address = " <<
m_addr <<
")";
1898 for (uint8_t nb = 0; nb<len; nb++)
1925 static TypeId tid =
TypeId (
"ns3::Icmpv6OptionRedirected")
1927 .SetGroupName (
"Internet")
1969 os <<
"( type = " << (uint32_t)
GetType () <<
" length = " << (uint32_t)
GetLength () <<
")";
1990 uint8_t *buf =
new uint8_t[size];
1992 i.
Write (buf, size);
2002 uint8_t length = i.
ReadU8 ();
2008 uint8_t* buff =
new uint8_t[len2];
2009 i.
Read (buff, len2);
2010 m_packet = Create<Packet> (buff, len2);
Ptr< Packet > GetPacket() const
Get the incorrect packet.
void SetReserved(uint32_t reserved)
Set the reserved field.
a unique identifier for an interface.
void Write(uint8_t const *buffer, uint32_t size)
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
static TypeId GetTypeId()
Get the UID of this class.
uint32_t m_reserved
The reserved value.
Icmpv6DestinationUnreachable()
Constructor.
virtual void Print(std::ostream &os) const
Print information.
virtual ~Icmpv6Redirection()
Destructor.
uint32_t GetReserved() const
Get the reserved field.
virtual ~Icmpv6OptionMtu()
Destructor.
void Set(char const *address)
Sets an Ipv6Address by parsing the input C-string.
static TypeId GetTypeId()
Get the UID of this class.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
Ptr< Packet > GetPacket() const
Get the incorrect packet.
virtual void Print(std::ostream &os) const
Print information.
Ipv6Address GetIpv6Target() const
Get the IPv6 target field.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
Icmpv6OptionLinkLayerAddress()
Constructor.
ICMPv6 Error Time Exceeded header.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
void Read(uint8_t *buffer, uint32_t size)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Ipv6Address m_target
The IPv6 target address.
Icmpv6OptionRedirected()
Constructor.
Ptr< Packet > m_packet
the incorrect packet.
void SetDestination(Ipv6Address destination)
Set the IPv6 destination address.
void SetReserved(uint32_t reserved)
Set the reserved field.
virtual ~Icmpv6RS()
Destructor.
uint16_t GetId() const
Get the ID of the packet.
virtual ~Icmpv6OptionRedirected()
Destructor.
uint16_t ReadNtohU16(void)
void SetPacket(Ptr< Packet > p)
Set the incorrect packet.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
uint32_t CopyData(uint8_t *buffer, uint32_t size) const
Copy the packet contents to a byte buffer.
bool GetFlagR() const
Get the R flag.
void WriteU8(uint8_t data)
uint32_t m_reserved
The reserved value.
void SetFlagS(bool s)
Set the S flag.
void WriteU16(uint16_t data)
virtual uint32_t GetSerializedSize() const
Get the serialized size.
Describes an IPv6 address.
void SetFlagM(bool m)
Set the M flag.
void SetPtr(uint32_t ptr)
Set the pointer field.
void GetBytes(uint8_t buf[16]) const
Get the bytes corresponding to the address.
Ipv6Address GetDestination() const
Get the IPv6 destination address.
uint32_t GetReserved() const
Get the reserved field.
virtual ~Icmpv6TooBig()
Destructor.
static TypeId GetTypeId()
Get the UID of this class.
void SetRetransmissionTime(uint32_t r)
Set the node Retransmission time (Neighbor Discovery).
uint32_t m_reserved
The reserved value.
Ipv6Address m_destination
IPv6 destination address.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
void SetSeq(uint16_t seq)
Set the sequence number.
void Next(void)
go forward by one byte
TypeId SetParent(TypeId tid)
Set the parent TypeId.
static TypeId GetTypeId()
Get the UID of this class.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual TypeId GetInstanceTypeId(void) const
Get the instance type ID.
Ptr< Packet > m_packet
The incorrect packet.
void SetReachableTime(uint32_t r)
Set the node Reachable time (Neighbor Discovery).
uint16_t CalculateIpChecksum(uint16_t size)
Calculate the checksum.
void AddAtStart(uint32_t start)
void Serialize(uint8_t buf[16]) const
Serialize this address to a 16-byte buffer.
virtual void Print(std::ostream &os) const
Print information.
uint32_t m_ptr
The pointer field.
void WriteHtonU16(uint16_t data)
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
uint16_t m_id
ID of the packet (to distinguish response between many ping program).
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual void Print(std::ostream &os) const
Print information.
ICMPv6 redirected option.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
uint32_t GetPtr() const
Get the pointer field.
static TypeId GetTypeId()
Get the UID of this class.
uint32_t GetMtu() const
Get the MTU field.
bool GetFlagS() const
Get the S flag.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
void SetReserved(uint16_t reserved)
Set the reserved field.
ICMPv6 link-layer address option.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
void SetLifeTime(uint16_t l)
Set the node Life time (Neighbor Discovery).
uint16_t m_seq
Sequence number (to distinguish response).
virtual uint32_t GetSerializedSize() const
Get the serialized size.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
uint32_t m_ReachableTime
The reachable time value.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
Icmpv6OptionMtu()
Constructor.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
void SetFlagR(bool r)
Set the R flag.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
uint16_t GetReserved() const
Get the reserved field.
uint32_t m_reserved
Reserved value.
a polymophic address class
ICMPv6 Router Advertisement header.
Icmpv6ParameterError()
Constructor.
ICMPv6 Neighbor Advertisement header.
void SetFlagO(bool o)
Set the O flag.
uint32_t GetReserved() const
Get the reserved field.
virtual void Print(std::ostream &os) const
Print information.
void SetPacket(Ptr< Packet > p)
Set the incorrect packet.
virtual ~Icmpv6NA()
Destructor.
virtual void Print(std::ostream &os) const
Print information.
Ptr< Packet > m_packet
The redirected packet.
bool GetFlagH() const
Get the H flag.
virtual void Print(std::ostream &os) const
Print information.
void SetFlagH(bool h)
Set the H flag.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
static TypeId GetTypeId()
Get the UID of this class.
Ptr< Packet > GetPacket() const
Get the incorrect packet.
Ipv6Address GetTarget() const
Get the IPv6 target address.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
Ptr< Packet > m_packet
The incorrect Packet.
virtual void Print(std::ostream &os) const
Print information.
uint32_t CopyFrom(const uint8_t *buffer, uint8_t len)
NS_DEPRECATED_3_34 void SetFlags(uint8_t f)
Setflags.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
NS_DEPRECATED_3_34 uint8_t GetFlags() const
Getflags.
void SetFlagO(bool o)
Set the O flag.
automatically resized byte buffer
Ipv6Address m_target
IPv6 target address.
Icmpv6TimeExceeded()
Constructor.
uint16_t GetLifeTime() const
Get the node Life time (Neighbor Discovery).
Buffer::Iterator Begin(void) const
uint32_t GetReserved() const
Get the reserved field.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
virtual ~Icmpv6NS()
Destructor.
uint32_t m_mtu
The MTU value.
void SetReserved(uint32_t reserved)
Set the reserved field.
uint32_t m_RetransmissionTimer
The retransmission timer.
void SetCurHopLimit(uint8_t m)
Set the IPv6 maximum number of jumps.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
virtual void Print(std::ostream &os) const
Print information.
static TypeId GetTypeId()
Get the UID of this class.
Address GetAddress() const
Get the hardware address.
void SetIpv6Target(Ipv6Address target)
Set the IPv6 target field.
void SetPacket(Ptr< Packet > packet)
Set the redirected packet.
virtual ~Icmpv6TimeExceeded()
Destructor.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
uint32_t GetSize(void) const
Ipv6Address GetIpv6Target() const
Get the IPv6 target field.
ICMPv6 Router Solicitation header.
iterator in a Buffer instance
Icmpv6Redirection()
Constructor.
Ptr< Packet > m_packet
The incorrect packet.
ICMPv6 Neighbor Solicitation header.
static TypeId GetTypeId()
Get the UID of this class.
void SetMtu(uint32_t mtu)
Set the MTU.
static TypeId GetTypeId()
Get the UID of this class.
bool GetFlagO() const
Get the O flag.
Ptr< Packet > GetPacket() const
Get the incorrect packet.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual void Print(std::ostream &os) const
Print information.
void SetTarget(Ipv6Address target)
Set the IPv6 target address.
uint32_t GetRetransmissionTime() const
Get the node Retransmission time (Neighbor Discovery).
uint32_t CopyTo(uint8_t buffer[MAX_SIZE]) const
Copy the address bytes into a buffer.
uint8_t m_curHopLimit
The max jumps.
Address m_addr
The hardware address.
void SetReserved(uint32_t reserved)
Set the reserved field.
double f(double x, void *params)
ICMPv6 Error Parameter Error header.
void SetMtu(uint32_t mtu)
Set the MTU.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
uint32_t m_mtu
The MTU value.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
uint32_t GetReachableTime() const
Get the node Reachable time (Neighbor Discovery).
virtual uint32_t GetSerializedSize() const
Get the serialized size.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
uint8_t GetLength(void) const
Get the length of the underlying address.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
void SetAddress(Address addr)
Set the hardware address.
uint16_t GetSeq() const
Get the sequence number.
void SetId(uint16_t id)
Set the ID of the packet.
Icmpv6Echo()
Default constructor.
Ipv6Address m_target
The IPv6 target address.
void SetIpv6Target(Ipv6Address target)
Set the IPv6 target field.
virtual ~Icmpv6ParameterError()
Destructor.
void SetPacket(Ptr< Packet > p)
Set the incorrect packet.
virtual void Print(std::ostream &os) const
Print information.
static TypeId GetTypeId()
Get the UID of this class.
uint16_t m_reserved
The reserved value.
static TypeId GetTypeId()
Get the UID of this class.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.
virtual void Serialize(Buffer::Iterator start) const
Serialize the packet.
virtual ~Icmpv6DestinationUnreachable()
Destructor.
virtual ~Icmpv6Echo()
Destructor.
static TypeId GetTypeId()
Get the UID of this class.
virtual ~Icmpv6OptionLinkLayerAddress()
Destructor.
bool GetFlagM() const
Get the M flag.
uint16_t m_LifeTime
The lifetime value.
bool GetFlagO() const
Get the O flag.
virtual ~Icmpv6RA()
Destructor.
void WriteU32(uint32_t data)
void SetPacket(Ptr< Packet > p)
Set the incorrect packet.
ICMPv6 Redirection header.
virtual void Print(std::ostream &os) const
Print information.
uint8_t GetCurHopLimit() const
Get the IPv6 maximum number of jumps.
uint32_t GetMtu() const
Get the MTU.
virtual void Print(std::ostream &os) const
Print information.
uint32_t ReadNtohU32(void)
virtual uint32_t GetSerializedSize() const
Get the serialized size.
Icmpv6TooBig()
Constructor.
static TypeId GetTypeId()
Get the UID of this class.
ICMPv6 Error Too Big header.
void WriteHtonU32(uint32_t data)
Ptr< Packet > GetPacket() const
Get the redirected packet.
ICMPv6 Error Destination Unreachable header.
virtual uint32_t GetSerializedSize() const
Get the serialized size.
virtual TypeId GetInstanceTypeId() const
Get the instance type ID.