22 #include "ns3/packet.h"
33 NS_OBJECT_ENSURE_REGISTERED (Icmpv4Header);
36 Icmpv4Header::GetTypeId (
void)
38 static TypeId tid = TypeId (
"ns3::Icmpv4Header")
40 .AddConstructor<Icmpv4Header> ()
44 Icmpv4Header::Icmpv4Header ()
47 m_calcChecksum (false)
51 Icmpv4Header::~Icmpv4Header ()
56 Icmpv4Header::EnableChecksum (
void)
59 m_calcChecksum =
true;
104 os <<
"type=" << (uint32_t)m_type <<
", code=" << (uint32_t)m_code;
108 Icmpv4Header::SetType (uint8_t type)
114 Icmpv4Header::SetCode (uint8_t code)
120 Icmpv4Header::GetType (
void)
const
126 Icmpv4Header::GetCode (
void)
const
136 NS_OBJECT_ENSURE_REGISTERED (Icmpv4Echo);
139 Icmpv4Echo::SetIdentifier (uint16_t
id)
145 Icmpv4Echo::SetSequenceNumber (uint16_t seq)
151 Icmpv4Echo::SetData (Ptr<const Packet> data)
155 uint32_t size = data->GetSize ();
163 if (size != m_dataSize)
166 m_data =
new uint8_t[size];
169 data->CopyData (m_data, size);
172 Icmpv4Echo::GetIdentifier (
void)
const
178 Icmpv4Echo::GetSequenceNumber (
void)
const
184 Icmpv4Echo::GetDataSize (
void)
const
190 Icmpv4Echo::GetData (uint8_t payload[])
const
193 memcpy (payload, m_data, m_dataSize);
197 Icmpv4Echo::GetTypeId (
void)
199 static TypeId tid = TypeId (
"ns3::Icmpv4Echo")
200 .SetParent<Header> ()
201 .AddConstructor<Icmpv4Echo> ()
205 Icmpv4Echo::Icmpv4Echo ()
215 m_data =
new uint8_t[m_dataSize];
217 Icmpv4Echo::~Icmpv4Echo ()
234 return 4 + m_dataSize;
242 start.
Write (m_data, m_dataSize);
251 uint32_t size = start.
GetSize () - 4;
252 if (size != m_dataSize)
255 m_data =
new uint8_t[size];
258 start.
Read (m_data, m_dataSize);
265 os <<
"identifier=" << m_identifier <<
", sequence=" << m_sequence;
276 Icmpv4DestinationUnreachable::GetTypeId (
void)
278 static TypeId tid =
TypeId (
"ns3::Icmpv4DestinationUnreachable")
280 .AddConstructor<Icmpv4DestinationUnreachable> ()
284 Icmpv4DestinationUnreachable::Icmpv4DestinationUnreachable ()
289 for (uint8_t j = 0; j < 8; j++)
296 Icmpv4DestinationUnreachable::SetNextHopMtu (uint16_t mtu)
302 Icmpv4DestinationUnreachable::GetNextHopMtu (
void)
const
309 Icmpv4DestinationUnreachable::SetData (Ptr<const Packet> data)
312 data->CopyData (m_data, 8);
315 Icmpv4DestinationUnreachable::SetHeader (Ipv4Header header)
321 Icmpv4DestinationUnreachable::GetData (uint8_t payload[8])
const
324 memcpy (payload, m_data, 8);
327 Icmpv4DestinationUnreachable::GetHeader (
void)
const
334 Icmpv4DestinationUnreachable::~Icmpv4DestinationUnreachable ()
358 start.
Write (m_data, 8);
370 for (uint8_t j = 0; j < 8; j++)
382 for (uint8_t i = 0; i < 8; i++)
384 os << (uint32_t) m_data[i];
399 Icmpv4TimeExceeded::GetTypeId (
void)
403 .AddConstructor<Icmpv4TimeExceeded> ()
407 Icmpv4TimeExceeded::Icmpv4TimeExceeded ()
412 for (uint8_t j = 0; j < 8; j++)
420 Icmpv4TimeExceeded::SetData (Ptr<const Packet> data)
423 data->CopyData (m_data, 8);
426 Icmpv4TimeExceeded::SetHeader (Ipv4Header header)
432 Icmpv4TimeExceeded::GetData (uint8_t payload[8])
const
435 memcpy (payload, m_data, 8);
438 Icmpv4TimeExceeded::GetHeader (
void)
const
445 Icmpv4TimeExceeded::~Icmpv4TimeExceeded ()
469 start.
Write (m_data, 8);
480 for (uint8_t j = 0; j < 8; j++)
492 for (uint8_t i = 0; i < 8; i++)
494 os << (uint32_t) m_data[i];
uint16_t CalculateIpChecksum(uint16_t size)
Calculate the checksum.
virtual void Print(std::ostream &os) const
virtual TypeId GetInstanceTypeId(void) const
#define NS_LOG_FUNCTION(parameters)
virtual TypeId GetInstanceTypeId(void) const
virtual uint32_t GetSerializedSize(void) const
#define NS_ASSERT(condition)
virtual uint32_t Deserialize(Buffer::Iterator start)
#define NS_LOG_COMPONENT_DEFINE(name)
virtual void Print(std::ostream &os) const
virtual void Serialize(Buffer::Iterator start) const
uint32_t GetDistanceFrom(Iterator const &o) const
iterator in a Buffer instance
virtual void Serialize(Buffer::Iterator start) const
void WriteU16(uint16_t data)
void WriteHtonU16(uint16_t data)
virtual uint32_t GetSerializedSize(void) const
void Read(uint8_t *buffer, uint32_t size)
virtual uint32_t Deserialize(Buffer::Iterator start)
virtual uint32_t GetSerializedSize(void) const
void WriteU8(uint8_t data)
virtual TypeId GetInstanceTypeId(void) const
void Write(uint8_t const *buffer, uint32_t size)
virtual uint32_t Deserialize(Buffer::Iterator start)
uint16_t ReadNtohU16(void)
void WriteU32(uint32_t data)
virtual void Print(std::ostream &os) const
uint32_t GetSize(void) const
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
virtual void Serialize(Buffer::Iterator start) const