Packet header for IPv4. More...
#include "ipv4-header.h"
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 codepoints. More... | |
enum | EcnType { ECN_NotECT = 0x00 , ECN_ECT1 = 0x01 , ECN_ECT0 = 0x02 , ECN_CE = 0x03 } |
ECN Type defined in RFC 3168 More... | |
Public Member Functions | |
Ipv4Header () | |
Construct a null IPv4 header. | |
uint32_t | Deserialize (Buffer::Iterator start) override |
std::string | DscpTypeToString (DscpType dscp) const |
std::string | EcnTypeToString (EcnType ecn) const |
void | EnableChecksum () |
Enable checksum calculation for this header. | |
Ipv4Address | GetDestination () const |
DscpType | GetDscp () const |
EcnType | GetEcn () const |
uint16_t | GetFragmentOffset () const |
uint16_t | GetIdentification () const |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. | |
uint16_t | GetPayloadSize () const |
uint8_t | GetProtocol () const |
uint32_t | GetSerializedSize () const override |
Ipv4Address | GetSource () const |
uint8_t | GetTos () const |
uint8_t | GetTtl () const |
bool | IsChecksumOk () const |
bool | IsDontFragment () const |
bool | IsLastFragment () const |
void | Print (std::ostream &os) const override |
void | Serialize (Buffer::Iterator start) const override |
void | SetDestination (Ipv4Address destination) |
void | SetDontFragment () |
Don't fragment this packet: if you need to anyway, drop it. | |
void | SetDscp (DscpType dscp) |
Set DSCP Field. | |
void | SetEcn (EcnType ecn) |
Set ECN Field. | |
void | SetFragmentOffset (uint16_t offsetBytes) |
The offset is measured in bytes for the packet start. | |
void | SetIdentification (uint16_t identification) |
void | SetLastFragment () |
This packet is the last packet of a fragmented ipv4 packet. | |
void | SetMayFragment () |
If you need to fragment this packet, you can do it. | |
void | SetMoreFragments () |
This packet is not the last packet of a fragmented ipv4 packet. | |
void | SetPayloadSize (uint16_t size) |
void | SetProtocol (uint8_t num) |
void | SetSource (Ipv4Address source) |
void | SetTos (uint8_t tos) |
void | SetTtl (uint8_t ttl) |
![]() | |
~Header () override | |
virtual uint32_t | Deserialize (Buffer::Iterator start, Buffer::Iterator end) |
Deserialize the object from a buffer iterator. | |
![]() | |
virtual | ~ObjectBase () |
Virtual destructor. | |
void | GetAttribute (std::string name, AttributeValue &value, bool permissive=false) const |
Get the value of an attribute, raising fatal errors if unsuccessful. | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. | |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Get the type ID. | |
![]() | |
static TypeId | GetTypeId () |
Get the type ID. | |
![]() | |
static TypeId | GetTypeId () |
Get the type ID. | |
![]() | |
static TypeId | GetTypeId () |
Get the type ID. | |
Private Types | |
enum | FlagsE { DONT_FRAGMENT = (1 << 0) , MORE_FRAGMENTS = (1 << 1) } |
flags related to IP fragmentation More... | |
Private Attributes | |
bool | m_calcChecksum |
true if the checksum must be calculated | |
uint16_t | m_checksum |
checksum | |
Ipv4Address | m_destination |
destination address | |
uint32_t | m_flags: 3 |
flags | |
uint16_t | m_fragmentOffset |
Fragment offset. | |
bool | m_goodChecksum |
true if checksum is correct | |
uint16_t | m_headerSize |
IP header size. | |
uint16_t | m_identification |
identification | |
uint16_t | m_payloadSize |
payload size | |
uint32_t | m_protocol: 8 |
Protocol. | |
Ipv4Address | m_source |
source address | |
uint32_t | m_tos: 8 |
TOS, also used as DSCP + ECN value. | |
uint32_t | m_ttl: 8 |
TTL. | |
Additional Inherited Members | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. | |
![]() | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. | |
Packet header for IPv4.
Definition at line 22 of file ipv4-header.h.
DiffServ codepoints.
The values correspond to the 6-bit DSCP codepoint within the 8-bit DS field defined in RFC 2474. ECN bits are separately set with the SetEcn() method. Codepoints are defined in Assured Forwarding (AF) RFC 2597, Expedited Forwarding (EF) RFC 2598, and Default and Class Selector (CS) RFC 2474.
Definition at line 60 of file ipv4-header.h.
ECN Type defined in RFC 3168
Enumerator | |
---|---|
ECN_NotECT | |
ECN_ECT1 | |
ECN_ECT0 | |
ECN_CE |
Definition at line 102 of file ipv4-header.h.
|
private |
flags related to IP fragmentation
Enumerator | |
---|---|
DONT_FRAGMENT | |
MORE_FRAGMENTS |
Definition at line 235 of file ipv4-header.h.
ns3::Ipv4Header::Ipv4Header | ( | ) |
Construct a null IPv4 header.
Definition at line 23 of file ipv4-header.cc.
References m_calcChecksum, m_checksum, m_flags, m_fragmentOffset, m_goodChecksum, m_headerSize, m_identification, m_payloadSize, m_protocol, m_tos, and m_ttl.
Referenced by GetTypeId().
|
overridevirtual |
start | an iterator which points to where the header should read from. |
This method is used by Packet::RemoveHeader to re-create a header from the byte buffer of a packet. The data read is expected to match bit-for-bit the representation of this header in real networks.
Note that data is not actually removed from the buffer to which the iterator points. Both Packet::RemoveHeader() and Packet::PeekHeader() call Deserialize(), but only the RemoveHeader() has additional statements to remove the header bytes from the underlying buffer and associated metadata.
Implements ns3::Header.
Definition at line 422 of file ipv4-header.cc.
References ns3::Buffer::Iterator::CalculateIpChecksum(), DONT_FRAGMENT, GetSerializedSize(), m_calcChecksum, m_checksum, m_destination, m_flags, m_fragmentOffset, m_goodChecksum, m_headerSize, m_identification, m_payloadSize, m_protocol, m_source, m_tos, m_ttl, MORE_FRAGMENTS, NS_LOG_FUNCTION, NS_LOG_LOGIC, NS_LOG_WARN, ns3::Buffer::Iterator::Prev(), ns3::Buffer::Iterator::ReadNtohU16(), ns3::Buffer::Iterator::ReadNtohU32(), ns3::Buffer::Iterator::ReadU16(), and ns3::Buffer::Iterator::ReadU8().
std::string ns3::Ipv4Header::DscpTypeToString | ( | DscpType | dscp | ) | const |
dscp | the dscp |
Definition at line 105 of file ipv4-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().
std::string ns3::Ipv4Header::EcnTypeToString | ( | EcnType | ecn | ) | const |
ecn | the ECNType |
Definition at line 166 of file ipv4-header.cc.
References ECN_CE, ECN_ECT0, ECN_ECT1, ECN_NotECT, and NS_LOG_FUNCTION.
Referenced by Print().
void ns3::Ipv4Header::EnableChecksum | ( | ) |
Enable checksum calculation for this header.
Definition at line 39 of file ipv4-header.cc.
References m_calcChecksum, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4L3ClickProtocol::BuildHeader(), ns3::Ipv4L3Protocol::BuildHeader(), ns3::Ipv4L3Protocol::DoFragmentation(), ns3::Ipv4L3ClickProtocol::Receive(), ns3::Ipv4L3Protocol::Receive(), ns3::Ipv4L3ClickProtocol::Send(), ns3::Ipv4L3ClickProtocol::SendWithHeader(), and ns3::Ipv4L3Protocol::SendWithHeader().
Ipv4Address ns3::Ipv4Header::GetDestination | ( | ) | const |
Definition at line 305 of file ipv4-header.cc.
References m_destination, and NS_LOG_FUNCTION.
Referenced by ns3::OpenFlowSwitchNetDevice::BufferFromPacket(), ns3::dsr::DsrRouting::CallCancelPacketTimer(), ns3::EpcTftClassifier::Classify(), ns3::IpcsClassifier::Classify(), ns3::Ipv4FlowClassifier::Classify(), ns3::aodv::RoutingProtocol::DeferredRouteOutput(), ns3::aodv::QueueEntryTest::DoRun(), ns3::UdpSocketImpl::DoSendTo(), ns3::aodv::RequestQueue::Drop(), ns3::dsdv::PacketQueue::Drop(), ns3::dsdv::RoutingProtocol::Drop(), ns3::Ipv4FlowProbe::DropLogger(), ns3::aodv::RequestQueue::Enqueue(), ns3::dsdv::PacketQueue::Enqueue(), ns3::Icmpv4L4Protocol::Forward(), ns3::aodv::RoutingProtocol::Forwarding(), ns3::Ipv4FlowProbe::ForwardLogger(), ns3::Ipv4RawSocketImpl::ForwardUp(), ns3::TcpSocketBase::ForwardUp(), ns3::UdpSocketImpl::ForwardUp(), ns3::Ipv4FlowProbe::ForwardUpLogger(), ns3::Ipv4L3Protocol::IpMulticastForward(), ns3::Ipv4L3ClickProtocol::LocalDeliver(), ns3::Ipv4L3Protocol::LocalDeliver(), ns3::aodv::RoutingProtocol::LoopbackRoute(), ns3::dsdv::RoutingProtocol::LoopbackRoute(), ns3::aodv::QueueEntry::operator==(), ns3::dsdv::QueueEntry::operator==(), ns3::dsr::DsrOptionSR::Process(), ns3::Ipv4L3Protocol::ProcessFragment(), ns3::dsr::DsrRouting::PromiscReceive(), ns3::dsr::DsrRouting::Receive(), ns3::Icmpv4L4Protocol::Receive(), ns3::Ipv4L3Protocol::Receive(), ns3::TcpL4Protocol::Receive(), ns3::UdpL4Protocol::Receive(), ns3::EpcPgwApplication::RecvFromTunDevice(), ns3::aodv::RoutingProtocol::RouteInput(), ns3::dsdv::RoutingProtocol::RouteInput(), ns3::Ipv4GlobalRouting::RouteInput(), ns3::Ipv4ListRouting::RouteInput(), ns3::Ipv4StaticRouting::RouteInput(), ns3::olsr::RoutingProtocol::RouteInput(), ns3::Rip::RouteInput(), ns3::aodv::RoutingProtocol::RouteOutput(), ns3::dsdv::RoutingProtocol::RouteOutput(), ns3::Ipv4ClickRouting::RouteOutput(), ns3::Ipv4GlobalRouting::RouteOutput(), ns3::Ipv4ListRouting::RouteOutput(), ns3::Ipv4StaticRouting::RouteOutput(), ns3::olsr::RoutingProtocol::RouteOutput(), ns3::Rip::RouteOutput(), ns3::dsdv::RoutingProtocol::Send(), ns3::Ipv4L3Protocol::Send(), ns3::Ipv4FlowProbe::SendOutgoingLogger(), ns3::Ipv4L3Protocol::SendRealOut(), ns3::Ipv4RawSocketImpl::SendTo(), ns3::Ipv4L3ClickProtocol::SendWithHeader(), and ns3::Ipv4L3Protocol::UpdateDuplicate().
Ipv4Header::DscpType ns3::Ipv4Header::GetDscp | ( | ) | const |
Definition at line 97 of file ipv4-header.cc.
References m_tos, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4FlowClassifier::Classify(), and Print().
Ipv4Header::EcnType ns3::Ipv4Header::GetEcn | ( | ) | const |
Definition at line 158 of file ipv4-header.cc.
References m_tos, and NS_LOG_FUNCTION.
Referenced by ns3::TcpSocketBase::ForwardUp(), and Print().
uint16_t ns3::Ipv4Header::GetFragmentOffset | ( | ) | const |
Definition at line 243 of file ipv4-header.cc.
References m_fragmentOffset, m_payloadSize, NS_LOG_FUNCTION, and NS_LOG_WARN.
Referenced by ns3::OpenFlowSwitchNetDevice::BufferFromPacket(), ns3::EpcTftClassifier::Classify(), ns3::Ipv4FlowClassifier::Classify(), ns3::Ipv4L3Protocol::DoFragmentation(), ns3::Ipv4FlowProbe::ForwardLogger(), ns3::Ipv4L3Protocol::LocalDeliver(), ns3::dsr::DsrOptionSR::Process(), ns3::Ipv4L3Protocol::ProcessFragment(), and ns3::Ipv4L3Protocol::UpdateDuplicate().
uint16_t ns3::Ipv4Header::GetIdentification | ( | ) | const |
Definition at line 60 of file ipv4-header.cc.
References m_identification, and NS_LOG_FUNCTION.
Referenced by ns3::OpenFlowSwitchNetDevice::BufferFromPacket(), ns3::EpcTftClassifier::Classify(), ns3::dsr::DsrOptionSR::Process(), ns3::Ipv4L3Protocol::ProcessFragment(), and ns3::Ipv4L3Protocol::UpdateDuplicate().
|
overridevirtual |
Get the most derived TypeId for this Object.
This method is provided by ns3::Object::GetInstanceTypeId but classes which derive from ns3::ObjectBase directly have to implement it themselves. Typically, this method should simply return the output of GetTypeId()
.
Implements ns3::ObjectBase.
Definition at line 329 of file ipv4-header.cc.
References GetTypeId(), and NS_LOG_FUNCTION.
uint16_t ns3::Ipv4Header::GetPayloadSize | ( | ) | const |
Definition at line 53 of file ipv4-header.cc.
References m_payloadSize, and NS_LOG_FUNCTION.
Referenced by ns3::EpcTftClassifier::Classify(), and ns3::Ipv4L3Protocol::Receive().
uint8_t ns3::Ipv4Header::GetProtocol | ( | ) | const |
Definition at line 270 of file ipv4-header.cc.
References m_protocol, and NS_LOG_FUNCTION.
Referenced by ns3::OpenFlowSwitchNetDevice::BufferFromPacket(), ns3::EpcTftClassifier::Classify(), ns3::IpcsClassifier::Classify(), ns3::Ipv4FlowClassifier::Classify(), ns3::aodv::RoutingProtocol::DeferredRouteOutput(), ns3::Icmpv4L4Protocol::Forward(), ns3::Ipv4RawSocketImpl::ForwardUp(), ns3::Ipv4L3ClickProtocol::LocalDeliver(), ns3::Ipv4L3Protocol::LocalDeliver(), ns3::Ipv4L3Protocol::ProcessFragment(), ns3::dsr::DsrRouting::PromiscReceive(), ns3::aodv::RoutingProtocol::RouteInput(), ns3::dsdv::RoutingProtocol::Send(), and ns3::Ipv4L3Protocol::UpdateDuplicate().
|
overridevirtual |
This method is used by Packet::AddHeader to store a header into the byte buffer of a packet. This method should return the number of bytes which are needed to store the full header data by Serialize.
Implements ns3::Header.
Definition at line 373 of file ipv4-header.cc.
References m_headerSize, and NS_LOG_FUNCTION.
Referenced by Deserialize(), ns3::Ipv4L3Protocol::DoFragmentation(), ns3::Rip::DoSendRouteUpdate(), ns3::Ipv4FlowProbe::DropLogger(), ns3::Ipv4FlowProbe::ForwardLogger(), ns3::Ipv4FlowProbe::ForwardUpLogger(), ns3::Rip::HandleRequests(), ns3::Ping::Receive(), ns3::Ipv4FlowProbe::SendOutgoingLogger(), ns3::Ipv4L3Protocol::SendRealOut(), ns3::Ipv4RawSocketImpl::SendTo(), and ns3::Ipv4L3Protocol::UpdateDuplicate().
Ipv4Address ns3::Ipv4Header::GetSource | ( | ) | const |
Definition at line 291 of file ipv4-header.cc.
References m_source, and NS_LOG_FUNCTION.
Referenced by ns3::OpenFlowSwitchNetDevice::BufferFromPacket(), ns3::dsr::DsrRouting::CallCancelPacketTimer(), ns3::EpcTftClassifier::Classify(), ns3::IpcsClassifier::Classify(), ns3::Ipv4FlowClassifier::Classify(), ns3::aodv::QueueEntryTest::DoRun(), ns3::UdpSocketImpl::DoSendTo(), ns3::Icmpv4L4Protocol::Forward(), ns3::aodv::RoutingProtocol::Forwarding(), ns3::Ipv4FlowProbe::ForwardLogger(), ns3::Ipv4RawSocketImpl::ForwardUp(), ns3::TcpSocketBase::ForwardUp(), ns3::UdpSocketImpl::ForwardUp(), ns3::Ipv4FlowProbe::ForwardUpLogger(), ns3::Ipv4L3Protocol::IpMulticastForward(), ns3::aodv::DuplicatePacketDetection::IsDuplicate(), ns3::dsr::DsrOptionRreq::Process(), ns3::dsr::DsrOptionSR::Process(), ns3::Ipv4L3Protocol::ProcessFragment(), ns3::dsr::DsrRouting::PromiscReceive(), ns3::dsr::DsrRouting::Receive(), ns3::Icmpv4L4Protocol::Receive(), ns3::Ipv4L3Protocol::Receive(), ns3::TcpL4Protocol::Receive(), ns3::UdpL4Protocol::Receive(), ns3::aodv::RoutingProtocol::RouteInput(), ns3::dsdv::RoutingProtocol::RouteInput(), ns3::Ipv4GlobalRouting::RouteInput(), ns3::Ipv4StaticRouting::RouteInput(), ns3::olsr::RoutingProtocol::RouteInput(), ns3::Rip::RouteInput(), ns3::Ipv4ListRouting::RouteOutput(), ns3::Icmpv4L4Protocol::SendDestUnreach(), ns3::Ipv4FlowProbe::SendOutgoingLogger(), ns3::Icmpv4L4Protocol::SendTimeExceededTtl(), ns3::Ipv4RawSocketImpl::SendTo(), ns3::Ipv4L3ClickProtocol::SendWithHeader(), and ns3::Ipv4L3Protocol::UpdateDuplicate().
uint8_t ns3::Ipv4Header::GetTos | ( | ) | const |
Definition at line 185 of file ipv4-header.cc.
References m_tos, and NS_LOG_FUNCTION.
Referenced by PfifoFastQueueDiscOverflow::AddPacket(), ns3::OpenFlowSwitchNetDevice::BufferFromPacket(), ns3::EpcTftClassifier::Classify(), ns3::Ipv4RawSocketImpl::ForwardUp(), ns3::UdpSocketImpl::ForwardUp(), WifiAcMappingTest::PacketEnqueuedInWifiMacQueue(), ns3::Icmpv4L4Protocol::Receive(), and PfifoFastQueueDiscDscpPrioritization::TestDscpValue().
uint8_t ns3::Ipv4Header::GetTtl | ( | ) | const |
Definition at line 263 of file ipv4-header.cc.
References m_ttl, and NS_LOG_FUNCTION.
Referenced by ns3::OpenFlowSwitchNetDevice::BufferFromPacket(), ns3::Icmpv4L4Protocol::Forward(), ns3::Ipv4RawSocketImpl::ForwardUp(), ns3::UdpSocketImpl::ForwardUp(), ns3::Ipv4L3Protocol::IpForward(), ns3::Ipv4L3Protocol::IpMulticastForward(), ns3::dsr::DsrOptionRreq::Process(), ns3::Ping::Receive(), ns3::aodv::RoutingProtocol::RouteInput(), ns3::dsdv::RoutingProtocol::RouteInput(), ns3::aodv::RoutingProtocol::SendPacketFromQueue(), and ns3::dsdv::RoutingProtocol::SendPacketFromQueue().
|
static |
Get the type ID.
Definition at line 319 of file ipv4-header.cc.
References Ipv4Header(), and ns3::TypeId::SetParent().
Referenced by GetInstanceTypeId().
bool ns3::Ipv4Header::IsChecksumOk | ( | ) | const |
If Ipv4Header::EnableChecksums has not been called prior to deserializing this header, this method will always return true.
Definition at line 312 of file ipv4-header.cc.
References m_goodChecksum, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4L3Protocol::Receive().
bool ns3::Ipv4Header::IsDontFragment | ( | ) | const |
Definition at line 227 of file ipv4-header.cc.
References DONT_FRAGMENT, m_flags, and NS_LOG_FUNCTION.
bool ns3::Ipv4Header::IsLastFragment | ( | ) | const |
Definition at line 206 of file ipv4-header.cc.
References m_flags, MORE_FRAGMENTS, and NS_LOG_FUNCTION.
Referenced by ns3::EpcTftClassifier::Classify(), ns3::Ipv4L3Protocol::DoFragmentation(), ns3::Ipv4FlowProbe::ForwardLogger(), ns3::Ipv4L3Protocol::LocalDeliver(), ns3::Ipv4L3Protocol::ProcessFragment(), and ns3::Ipv4L3Protocol::UpdateDuplicate().
|
overridevirtual |
os | output stream This method is used by Packet::Print to print the content of a header as ascii data to a c++ output stream. Although the header is free to format its output as it wishes, it is recommended to follow a few rules to integrate with the packet pretty printer: start with flags, small field values located between a pair of parens. Values should be separated by whitespace. Follow the parens with the important fields, separated by whitespace. i.e.: (field1 val1 field2 val2 field3 val3) field4 val4 field5 val5 |
Implements ns3::Header.
Definition at line 336 of file ipv4-header.cc.
References DONT_FRAGMENT, DscpTypeToString(), EcnTypeToString(), GetDscp(), GetEcn(), m_destination, m_flags, m_fragmentOffset, m_identification, m_payloadSize, m_protocol, m_source, m_tos, m_ttl, MORE_FRAGMENTS, and NS_LOG_FUNCTION.
|
overridevirtual |
start | an iterator which points to where the header should be written. |
This method is used by Packet::AddHeader to store a header into the byte buffer of a packet. The data written is expected to match bit-for-bit the representation of this header in a real network.
Implements ns3::Header.
Definition at line 381 of file ipv4-header.cc.
References ns3::Buffer::Iterator::CalculateIpChecksum(), DONT_FRAGMENT, m_calcChecksum, m_destination, m_flags, m_fragmentOffset, m_identification, m_payloadSize, m_protocol, m_source, m_tos, m_ttl, MORE_FRAGMENTS, ns3::Buffer::Iterator::Next(), NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::Buffer::Iterator::WriteHtonU16(), ns3::Buffer::Iterator::WriteHtonU32(), ns3::Buffer::Iterator::WriteU16(), and ns3::Buffer::Iterator::WriteU8().
void ns3::Ipv4Header::SetDestination | ( | Ipv4Address | destination | ) |
destination | the destination of this packet. |
Definition at line 298 of file ipv4-header.cc.
References m_destination, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4L3ClickProtocol::BuildHeader(), ns3::Ipv4L3Protocol::BuildHeader(), FqCobaltQueueDiscDeficit::DoRun(), FqCobaltQueueDiscEcnMarking::DoRun(), FqCobaltQueueDiscIPFlowsSeparationAndPacketLimit::DoRun(), FqCobaltQueueDiscL4sMode::DoRun(), FqCobaltQueueDiscSetLinearProbing::DoRun(), FqCobaltQueueDiscTCPFlowsSeparation::DoRun(), FqCobaltQueueDiscUDPFlowsSeparation::DoRun(), FqCoDelQueueDiscDeficit::DoRun(), FqCoDelQueueDiscECNMarking::DoRun(), FqCoDelQueueDiscIPFlowsSeparationAndPacketLimit::DoRun(), FqCoDelQueueDiscL4sMode::DoRun(), FqCoDelQueueDiscSetLinearProbing::DoRun(), FqCoDelQueueDiscTCPFlowsSeparation::DoRun(), FqCoDelQueueDiscUDPFlowsSeparation::DoRun(), FqPieQueueDiscDeficit::DoRun(), FqPieQueueDiscIPFlowsSeparationAndPacketLimit::DoRun(), FqPieQueueDiscL4sMode::DoRun(), FqPieQueueDiscSetLinearProbing::DoRun(), FqPieQueueDiscTCPFlowsSeparation::DoRun(), FqPieQueueDiscUDPFlowsSeparation::DoRun(), ns3::aodv::AodvRqueueTest::DoRun(), ns3::aodv::QueueEntryTest::DoRun(), Ipv4RawSocketImplTest::DoSendData_IpHdr(), Ipv4HeaderTest::DoSendData_IpHdr_Dscp(), ns3::UdpSocketImpl::DoSendTo(), ns3::AnimationInterface::RecursiveIpv4RoutePathSearch(), ns3::Icmpv4L4Protocol::SendMessage(), ns3::TcpL4Protocol::SendPacketV4(), ns3::Ipv4RawSocketImpl::SendTo(), ns3::TcpSocketBase::SetupEndpoint(), and ns3::AnimationInterface::TrackIpv4RoutePaths().
void ns3::Ipv4Header::SetDontFragment | ( | ) |
Don't fragment this packet: if you need to anyway, drop it.
Definition at line 213 of file ipv4-header.cc.
References DONT_FRAGMENT, m_flags, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4L3ClickProtocol::BuildHeader(), and ns3::Ipv4L3Protocol::BuildHeader().
void ns3::Ipv4Header::SetDscp | ( | DscpType | dscp | ) |
Set DSCP Field.
dscp | DSCP value |
Definition at line 81 of file ipv4-header.cc.
References m_tos, and NS_LOG_FUNCTION.
Referenced by PfifoFastQueueDiscOverflow::AddPacket(), Ipv4HeaderTest::DoSendData_IpHdr_Dscp(), and PfifoFastQueueDiscDscpPrioritization::TestDscpValue().
void ns3::Ipv4Header::SetEcn | ( | EcnType | ecn | ) |
Set ECN Field.
ecn | ECN Type |
Definition at line 89 of file ipv4-header.cc.
References m_tos, and NS_LOG_FUNCTION.
Referenced by FqCobaltQueueDiscEcnMarking::DoRun(), FqCobaltQueueDiscL4sMode::DoRun(), FqCoDelQueueDiscECNMarking::DoRun(), FqCoDelQueueDiscL4sMode::DoRun(), FqPieQueueDiscL4sMode::DoRun(), and Ipv4HeaderTest::DoSendData_IpHdr_Dscp().
void ns3::Ipv4Header::SetFragmentOffset | ( | uint16_t | offsetBytes | ) |
The offset is measured in bytes for the packet start.
Mind that IPv4 "fragment offset" field is 13 bits long and is measured in 8-bytes words. Hence, the function does enforce that the offset is a multiple of 8.
offsetBytes | the ipv4 fragment offset measured in bytes from the start. |
Definition at line 234 of file ipv4-header.cc.
References m_fragmentOffset, NS_ABORT_MSG_IF, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4L3Protocol::DoFragmentation(), and ns3::Ipv4L3Protocol::LocalDeliver().
void ns3::Ipv4Header::SetIdentification | ( | uint16_t | identification | ) |
identification | the Identification field of IPv4 packets. |
By default, set to zero.
Definition at line 67 of file ipv4-header.cc.
References m_identification, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4L3ClickProtocol::BuildHeader(), and ns3::Ipv4L3Protocol::BuildHeader().
void ns3::Ipv4Header::SetLastFragment | ( | ) |
This packet is the last packet of a fragmented ipv4 packet.
Definition at line 199 of file ipv4-header.cc.
References m_flags, MORE_FRAGMENTS, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4L3Protocol::DoFragmentation().
void ns3::Ipv4Header::SetMayFragment | ( | ) |
If you need to fragment this packet, you can do it.
Definition at line 220 of file ipv4-header.cc.
References DONT_FRAGMENT, m_flags, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4L3ClickProtocol::BuildHeader(), and ns3::Ipv4L3Protocol::BuildHeader().
void ns3::Ipv4Header::SetMoreFragments | ( | ) |
This packet is not the last packet of a fragmented ipv4 packet.
Definition at line 192 of file ipv4-header.cc.
References m_flags, MORE_FRAGMENTS, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4L3Protocol::DoFragmentation().
void ns3::Ipv4Header::SetPayloadSize | ( | uint16_t | size | ) |
size | the size of the payload in bytes |
Definition at line 46 of file ipv4-header.cc.
References m_payloadSize, and NS_LOG_FUNCTION.
Referenced by PfifoFastQueueDiscOverflow::AddPacket(), ns3::Ipv4L3ClickProtocol::BuildHeader(), ns3::Ipv4L3Protocol::BuildHeader(), ns3::Ipv4L3Protocol::DoFragmentation(), FqCobaltQueueDiscDeficit::DoRun(), FqCobaltQueueDiscEcnMarking::DoRun(), FqCobaltQueueDiscIPFlowsSeparationAndPacketLimit::DoRun(), FqCobaltQueueDiscL4sMode::DoRun(), FqCobaltQueueDiscSetLinearProbing::DoRun(), FqCobaltQueueDiscTCPFlowsSeparation::DoRun(), FqCobaltQueueDiscUDPFlowsSeparation::DoRun(), FqCoDelQueueDiscDeficit::DoRun(), FqCoDelQueueDiscECNMarking::DoRun(), FqCoDelQueueDiscIPFlowsSeparationAndPacketLimit::DoRun(), FqCoDelQueueDiscL4sMode::DoRun(), FqCoDelQueueDiscSetLinearProbing::DoRun(), FqCoDelQueueDiscTCPFlowsSeparation::DoRun(), FqCoDelQueueDiscUDPFlowsSeparation::DoRun(), FqPieQueueDiscDeficit::DoRun(), FqPieQueueDiscIPFlowsSeparationAndPacketLimit::DoRun(), FqPieQueueDiscL4sMode::DoRun(), FqPieQueueDiscSetLinearProbing::DoRun(), FqPieQueueDiscTCPFlowsSeparation::DoRun(), FqPieQueueDiscUDPFlowsSeparation::DoRun(), Ipv4RawSocketImplTest::DoSendData_IpHdr(), Ipv4HeaderTest::DoSendData_IpHdr_Dscp(), ns3::Ipv4L3Protocol::LocalDeliver(), PfifoFastQueueDiscDscpPrioritization::TestDscpValue(), and PfifoFastQueueDiscTosPrioritization::TestTosValue().
void ns3::Ipv4Header::SetProtocol | ( | uint8_t | num | ) |
num | the ipv4 protocol field |
Definition at line 277 of file ipv4-header.cc.
References m_protocol, and NS_LOG_FUNCTION.
Referenced by PfifoFastQueueDiscOverflow::AddPacket(), ns3::Ipv4L3ClickProtocol::BuildHeader(), ns3::Ipv4L3Protocol::BuildHeader(), FqCobaltQueueDiscDeficit::DoRun(), FqCobaltQueueDiscEcnMarking::DoRun(), FqCobaltQueueDiscIPFlowsSeparationAndPacketLimit::DoRun(), FqCobaltQueueDiscL4sMode::DoRun(), FqCobaltQueueDiscSetLinearProbing::DoRun(), FqCobaltQueueDiscTCPFlowsSeparation::DoRun(), FqCobaltQueueDiscUDPFlowsSeparation::DoRun(), FqCoDelQueueDiscDeficit::DoRun(), FqCoDelQueueDiscECNMarking::DoRun(), FqCoDelQueueDiscIPFlowsSeparationAndPacketLimit::DoRun(), FqCoDelQueueDiscL4sMode::DoRun(), FqCoDelQueueDiscSetLinearProbing::DoRun(), FqCoDelQueueDiscTCPFlowsSeparation::DoRun(), FqCoDelQueueDiscUDPFlowsSeparation::DoRun(), FqPieQueueDiscDeficit::DoRun(), FqPieQueueDiscIPFlowsSeparationAndPacketLimit::DoRun(), FqPieQueueDiscL4sMode::DoRun(), FqPieQueueDiscSetLinearProbing::DoRun(), FqPieQueueDiscTCPFlowsSeparation::DoRun(), FqPieQueueDiscUDPFlowsSeparation::DoRun(), Ipv4RawSocketImplTest::DoSendData_IpHdr(), Ipv4HeaderTest::DoSendData_IpHdr_Dscp(), ns3::UdpSocketImpl::DoSendTo(), ns3::Icmpv4L4Protocol::SendMessage(), ns3::TcpL4Protocol::SendPacketV4(), ns3::Ipv4RawSocketImpl::SendTo(), PfifoFastQueueDiscDscpPrioritization::TestDscpValue(), and PfifoFastQueueDiscTosPrioritization::TestTosValue().
void ns3::Ipv4Header::SetSource | ( | Ipv4Address | source | ) |
source | the source of this packet |
Definition at line 284 of file ipv4-header.cc.
References m_source, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4L3ClickProtocol::BuildHeader(), ns3::Ipv4L3Protocol::BuildHeader(), FqCobaltQueueDiscDeficit::DoRun(), FqCobaltQueueDiscEcnMarking::DoRun(), FqCobaltQueueDiscIPFlowsSeparationAndPacketLimit::DoRun(), FqCobaltQueueDiscL4sMode::DoRun(), FqCobaltQueueDiscSetLinearProbing::DoRun(), FqCobaltQueueDiscTCPFlowsSeparation::DoRun(), FqCobaltQueueDiscUDPFlowsSeparation::DoRun(), FqCoDelQueueDiscDeficit::DoRun(), FqCoDelQueueDiscECNMarking::DoRun(), FqCoDelQueueDiscIPFlowsSeparationAndPacketLimit::DoRun(), FqCoDelQueueDiscL4sMode::DoRun(), FqCoDelQueueDiscSetLinearProbing::DoRun(), FqCoDelQueueDiscTCPFlowsSeparation::DoRun(), FqCoDelQueueDiscUDPFlowsSeparation::DoRun(), FqPieQueueDiscDeficit::DoRun(), FqPieQueueDiscIPFlowsSeparationAndPacketLimit::DoRun(), FqPieQueueDiscL4sMode::DoRun(), FqPieQueueDiscSetLinearProbing::DoRun(), FqPieQueueDiscTCPFlowsSeparation::DoRun(), FqPieQueueDiscUDPFlowsSeparation::DoRun(), ns3::aodv::AodvRqueueTest::DoRun(), ns3::aodv::QueueEntryTest::DoRun(), Ipv4RawSocketImplTest::DoSendData_IpHdr(), Ipv4HeaderTest::DoSendData_IpHdr_Dscp(), ns3::UdpSocketImpl::DoSendTo(), ns3::aodv::RoutingProtocol::SendPacketFromQueue(), ns3::dsdv::RoutingProtocol::SendPacketFromQueue(), and ns3::TcpL4Protocol::SendPacketV4().
void ns3::Ipv4Header::SetTos | ( | uint8_t | tos | ) |
tos | the 8 bits of Ipv4 TOS. |
Definition at line 74 of file ipv4-header.cc.
References m_tos, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4L3Protocol::BuildHeader(), and PfifoFastQueueDiscTosPrioritization::TestTosValue().
void ns3::Ipv4Header::SetTtl | ( | uint8_t | ttl | ) |
ttl | the ipv4 TTL |
Definition at line 256 of file ipv4-header.cc.
References m_ttl, and NS_LOG_FUNCTION.
Referenced by ns3::Ipv4L3ClickProtocol::BuildHeader(), ns3::Ipv4L3Protocol::BuildHeader(), Ipv4RawSocketImplTest::DoSendData_IpHdr(), Ipv4HeaderTest::DoSendData_IpHdr_Dscp(), ns3::Ipv4L3Protocol::IpMulticastForward(), ns3::aodv::RoutingProtocol::SendPacketFromQueue(), and ns3::dsdv::RoutingProtocol::SendPacketFromQueue().
|
private |
true if the checksum must be calculated
Definition at line 241 of file ipv4-header.h.
Referenced by Ipv4Header(), Deserialize(), EnableChecksum(), and Serialize().
|
private |
checksum
Definition at line 252 of file ipv4-header.h.
Referenced by Ipv4Header(), and Deserialize().
|
private |
destination address
Definition at line 251 of file ipv4-header.h.
Referenced by Deserialize(), GetDestination(), Print(), Serialize(), and SetDestination().
|
private |
flags
Definition at line 248 of file ipv4-header.h.
Referenced by Ipv4Header(), Deserialize(), IsDontFragment(), IsLastFragment(), Print(), Serialize(), SetDontFragment(), SetLastFragment(), SetMayFragment(), and SetMoreFragments().
|
private |
Fragment offset.
Definition at line 249 of file ipv4-header.h.
Referenced by Ipv4Header(), Deserialize(), GetFragmentOffset(), Print(), Serialize(), and SetFragmentOffset().
|
private |
true if checksum is correct
Definition at line 253 of file ipv4-header.h.
Referenced by Ipv4Header(), Deserialize(), and IsChecksumOk().
|
private |
IP header size.
Definition at line 254 of file ipv4-header.h.
Referenced by Ipv4Header(), Deserialize(), and GetSerializedSize().
|
private |
identification
Definition at line 244 of file ipv4-header.h.
Referenced by Ipv4Header(), Deserialize(), GetIdentification(), Print(), Serialize(), and SetIdentification().
|
private |
payload size
Definition at line 243 of file ipv4-header.h.
Referenced by Ipv4Header(), Deserialize(), GetFragmentOffset(), GetPayloadSize(), Print(), Serialize(), and SetPayloadSize().
|
private |
Protocol.
Definition at line 247 of file ipv4-header.h.
Referenced by Ipv4Header(), Deserialize(), GetProtocol(), Print(), Serialize(), and SetProtocol().
|
private |
source address
Definition at line 250 of file ipv4-header.h.
Referenced by Deserialize(), GetSource(), Print(), Serialize(), and SetSource().
|
private |
TOS, also used as DSCP + ECN value.
Definition at line 245 of file ipv4-header.h.
Referenced by Ipv4Header(), Deserialize(), GetDscp(), GetEcn(), GetTos(), Print(), Serialize(), SetDscp(), SetEcn(), and SetTos().
|
private |
TTL.
Definition at line 246 of file ipv4-header.h.
Referenced by Ipv4Header(), Deserialize(), GetTtl(), Print(), Serialize(), and SetTtl().