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

network packets More...

#include "packet.h"

+ Inheritance diagram for ns3::Packet:
+ Collaboration diagram for ns3::Packet:

Public Types

typedef void(* AddressTracedCallback) (Ptr< const Packet > packet, const Address &address)
 TracedCallback signature for packet and Address. More...
 
typedef void(* Mac48AddressTracedCallback) (Ptr< const Packet > packet, Mac48Address mac)
 TracedCallback signature for packet and Mac48Address. More...
 
typedef void(* SinrTracedCallback) (Ptr< const Packet > packet, double sinr)
 TracedCallback signature for packet and SINR. More...
 
typedef void(* SizeTracedCallback) (uint32_t oldSize, uint32_t newSize)
 TracedCallback signature for changes in packet size. More...
 
typedef void(* TracedCallback) (Ptr< const Packet > packet)
 TracedCallback signature for Ptr<Packet> More...
 
typedef void(* TwoAddressTracedCallback) (const Ptr< const Packet > packet, const Address &srcAddress, const Address &destAddress)
 TracedCallback signature for packet and source/destination addresses. More...
 

Public Member Functions

 Packet ()
 Create an empty packet with a new uid (as returned by getUid). More...
 
 Packet (const Packet &o)
 Copy constructor. More...
 
 Packet (uint32_t size)
 Create a packet with a zero-filled payload. More...
 
 Packet (uint8_t const *buffer, uint32_t size, bool magic)
 Create a new packet from the serialized buffer. More...
 
 Packet (uint8_t const *buffer, uint32_t size)
 Create a packet with payload filled with the content of this buffer. More...
 
void AddAtEnd (Ptr< const Packet > packet)
 Concatenate the input packet at the end of the current packet. More...
 
void AddByteTag (const Tag &tag) const
 Tag each byte included in this packet with a new byte tag. More...
 
void AddByteTag (const Tag &tag, uint32_t start, uint32_t end) const
 Tag the indicated byte range of this packet with a new byte tag. More...
 
void AddHeader (const Header &header)
 Add header to this packet. More...
 
void AddPacketTag (const Tag &tag) const
 Add a packet tag. More...
 
void AddPaddingAtEnd (uint32_t size)
 Add a zero-filled padding to the packet. More...
 
void AddTrailer (const Trailer &trailer)
 Add trailer to this packet. More...
 
PacketMetadata::ItemIterator BeginItem (void) const
 Returns an iterator which points to the first 'item' stored in this buffer. More...
 
Ptr< PacketCopy (void) const
 performs a COW copy of the packet. More...
 
uint32_t CopyData (uint8_t *buffer, uint32_t size) const
 Copy the packet contents to a byte buffer. More...
 
void CopyData (std::ostream *os, uint32_t size) const
 Copy the packet contents to an output stream. More...
 
Ptr< PacketCreateFragment (uint32_t start, uint32_t length) const
 Create a new packet which contains a fragment of the original packet. More...
 
bool FindFirstMatchingByteTag (Tag &tag) const
 Finds the first tag matching the parameter Tag type. More...
 
ByteTagIterator GetByteTagIterator (void) const
 Returns an iterator over the set of byte tags included in this packet. More...
 
Ptr< NixVectorGetNixVector (void) const
 Get the packet nix-vector. More...
 
PacketTagIterator GetPacketTagIterator (void) const
 Returns an object which can be used to iterate over the list of packet tags. More...
 
uint32_t GetSerializedSize (void) const
 Returns number of bytes required for packet serialization. More...
 
uint32_t GetSize (void) const
 Returns the the size in bytes of the packet (including the zero-filled initial payload). More...
 
uint64_t GetUid (void) const
 Returns the packet's Uid. More...
 
Packetoperator= (const Packet &o)
 Basic assignment. More...
 
uint32_t PeekHeader (Header &header) const
 Deserialize but does not remove the header from the internal buffer. More...
 
uint32_t PeekHeader (Header &header, uint32_t size) const
 Deserialize but does not remove the header from the internal buffer. More...
 
bool PeekPacketTag (Tag &tag) const
 Search a matching tag and call Tag::Deserialize if it is found. More...
 
uint32_t PeekTrailer (Trailer &trailer)
 Deserialize but does not remove a trailer from the internal buffer. More...
 
void Print (std::ostream &os) const
 Print the packet contents. More...
 
void PrintByteTags (std::ostream &os) const
 Iterate over the byte tags present in this packet, and invoke the Print method of each tag stored in the packet. More...
 
void PrintPacketTags (std::ostream &os) const
 Print the list of packet tags. More...
 
void RemoveAllByteTags (void)
 Remove all byte tags stored in this packet. More...
 
void RemoveAllPacketTags (void)
 Remove all packet tags. More...
 
void RemoveAtEnd (uint32_t size)
 Remove size bytes from the end of the current packet. More...
 
void RemoveAtStart (uint32_t size)
 Remove size bytes from the start of the current packet. More...
 
uint32_t RemoveHeader (Header &header)
 Deserialize and remove the header from the internal buffer. More...
 
uint32_t RemoveHeader (Header &header, uint32_t size)
 Deserialize and remove the header from the internal buffer. More...
 
bool RemovePacketTag (Tag &tag)
 Remove a packet tag. More...
 
uint32_t RemoveTrailer (Trailer &trailer)
 Remove a deserialized trailer from the internal buffer. More...
 
bool ReplacePacketTag (Tag &tag)
 Replace the value of a packet tag. More...
 
uint32_t Serialize (uint8_t *buffer, uint32_t maxSize) const
 Serialize a packet, tags, and metadata into a byte buffer. More...
 
void SetNixVector (Ptr< NixVector > nixVector)
 Set the packet nix-vector. More...
 
std::string ToString (void) const
 Return a string representation of the packet. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< Packet >
 SimpleRefCount ()
 Default constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 

Static Public Member Functions

static void EnableChecking (void)
 Enable packets metadata checking. More...
 
static void EnablePrinting (void)
 Enable printing packets metadata. More...
 

Private Member Functions

 Packet (const Buffer &buffer, const ByteTagList &byteTagList, const PacketTagList &packetTagList, const PacketMetadata &metadata)
 Constructor. More...
 
uint32_t Deserialize (uint8_t const *buffer, uint32_t size)
 Deserializes a packet. More...
 

Private Attributes

Buffer m_buffer
 the packet buffer (it's actual contents) More...
 
ByteTagList m_byteTagList
 the ByteTag list More...
 
PacketMetadata m_metadata
 the packet's metadata More...
 
Ptr< NixVectorm_nixVector
 the packet's Nix vector More...
 
PacketTagList m_packetTagList
 the packet's Tag list More...
 

Static Private Attributes

static uint32_t m_globalUid = 0
 Global counter of packets Uid. More...
 

Detailed Description

network packets

Each network packet contains a byte buffer, a set of byte tags, a set of packet tags, and metadata.

  • The byte buffer stores the serialized content of the headers and trailers added to a packet. The serialized representation of these headers is expected to match that of real network packets bit for bit (although nothing forces you to do this) which means that the content of a packet buffer is expected to be that of a real packet.
  • The metadata describes the type of the headers and trailers which were serialized in the byte buffer. The maintenance of metadata is optional and disabled by default. To enable it, you must call Packet::EnablePrinting and this will allow you to get non-empty output from Packet::Print. If you wish to only enable checking of metadata, and do not need any printing capability, you can call Packet::EnableChecking: its runtime cost is lower than Packet::EnablePrinting.
  • The set of tags contain simulation-specific information which cannot be stored in the packet byte buffer because the protocol headers or trailers have no standard-conformant field for this information. So-called 'byte' tags are used to tag a subset of the bytes in the packet byte buffer while 'packet' tags are used to tag the packet itself. The main difference between these two kinds of tags is what happens when packets are copied, fragmented, and reassembled: 'byte' tags follow bytes while 'packet' tags follow packets. Another important difference between these two kinds of tags is that byte tags cannot be removed and are expected to be written once, and read many times, while packet tags are expected to be written once, read many times, and removed exactly once. An example of a 'byte' tag is a FlowIdTag which contains a flow id and is set by the application generating traffic. An example of a 'packet' tag is a cross-layer qos class id set by an application and processed by a lower-level MAC layer.

Implementing a new type of Header or Trailer for a new protocol is pretty easy and is a matter of creating a subclass of the ns3::Header or of the ns3::Trailer base class, and implementing the methods described in their respective API documentation.

Implementing a new type of Tag requires roughly the same amount of work and this work is described in the ns3::Tag API documentation.

The performance aspects copy-on-write semantics of the Packet API are discussed in Packet Performance

Definition at line 231 of file packet.h.

Member Typedef Documentation

◆ AddressTracedCallback

typedef void(* ns3::Packet::AddressTracedCallback) (Ptr< const Packet > packet, const Address &address)

TracedCallback signature for packet and Address.

Parameters
[in]packetThe packet.
[in]addressThe address.

Definition at line 723 of file packet.h.

◆ Mac48AddressTracedCallback

typedef void(* ns3::Packet::Mac48AddressTracedCallback) (Ptr< const Packet > packet, Mac48Address mac)

TracedCallback signature for packet and Mac48Address.

Parameters
[in]packetThe packet.
[in]macThe Mac48Address.

Definition at line 742 of file packet.h.

◆ SinrTracedCallback

typedef void(* ns3::Packet::SinrTracedCallback) (Ptr< const Packet > packet, double sinr)

TracedCallback signature for packet and SINR.

Parameters
[in]packetThe packet.
[in]sinrThe received SINR.

Definition at line 760 of file packet.h.

◆ SizeTracedCallback

typedef void(* ns3::Packet::SizeTracedCallback) (uint32_t oldSize, uint32_t newSize)

TracedCallback signature for changes in packet size.

Parameters
[in]oldSizeThe previous packet's size.
[in]newSizeThe actual packet's size.

Definition at line 751 of file packet.h.

◆ TracedCallback

typedef void(* ns3::Packet::TracedCallback) (Ptr< const Packet > packet)

TracedCallback signature for Ptr<Packet>

Parameters
[in]packetThe packet.

Definition at line 714 of file packet.h.

◆ TwoAddressTracedCallback

typedef void(* ns3::Packet::TwoAddressTracedCallback) (const Ptr< const Packet > packet, const Address &srcAddress, const Address &destAddress)

TracedCallback signature for packet and source/destination addresses.

Parameters
[in]packetThe packet.
[in]srcAddressThe source address.
[in]destAddressThe destination address.

Definition at line 733 of file packet.h.

Constructor & Destructor Documentation

◆ Packet() [1/6]

ns3::Packet::Packet ( )

Create an empty packet with a new uid (as returned by getUid).

Definition at line 129 of file packet.cc.

References m_globalUid.

Referenced by CreateFragment().

+ Here is the caller graph for this function:

◆ Packet() [2/6]

ns3::Packet::Packet ( const Packet o)

Copy constructor.

Parameters
oobject to copy

Definition at line 145 of file packet.cc.

References ns3::NixVector::Copy(), and m_nixVector.

+ Here is the call graph for this function:

◆ Packet() [3/6]

ns3::Packet::Packet ( uint32_t  size)

Create a packet with a zero-filled payload.

The memory necessary for the payload is not allocated: it will be allocated at any later point if you attempt to fragment this packet or to access the zero-filled bytes. The packet is allocated with a new uid (as returned by getUid).

Parameters
sizethe size of the zero-filled payload

Definition at line 171 of file packet.cc.

References m_globalUid.

◆ Packet() [4/6]

ns3::Packet::Packet ( uint8_t const *  buffer,
uint32_t  size,
bool  magic 
)

Create a new packet from the serialized buffer.

This new packet is identical to the serialized packet contained in the buffer and is magically deserialized for you

Parameters
bufferthe serialized packet to be created
sizethe size of the packet for deserialization
magicallows packet deserialization; asserts when set to false

Definition at line 186 of file packet.cc.

References Deserialize(), and NS_ASSERT.

+ Here is the call graph for this function:

◆ Packet() [5/6]

ns3::Packet::Packet ( uint8_t const *  buffer,
uint32_t  size 
)

Create a packet with payload filled with the content of this buffer.

The input data is copied: the input buffer is untouched.

Parameters
bufferthe data to store in the packet.
sizethe size of the input buffer.

Definition at line 197 of file packet.cc.

References ns3::Buffer::AddAtStart(), ns3::Buffer::Begin(), m_buffer, m_globalUid, and ns3::Buffer::Iterator::Write().

+ Here is the call graph for this function:

◆ Packet() [6/6]

ns3::Packet::Packet ( const Buffer buffer,
const ByteTagList byteTagList,
const PacketTagList packetTagList,
const PacketMetadata metadata 
)
private

Constructor.

Parameters
bufferthe packet buffer
byteTagListthe ByteTag list
packetTagListthe packet's Tag list
metadatathe packet's metadata

Definition at line 216 of file packet.cc.

Member Function Documentation

◆ AddAtEnd()

void ns3::Packet::AddAtEnd ( Ptr< const Packet packet)

Concatenate the input packet at the end of the current packet.

This does not alter the uid of either packet.

Parameters
packetpacket to concatenate

Definition at line 335 of file packet.cc.

References ns3::ByteTagList::Add(), ns3::ByteTagList::AddAtEnd(), ns3::PacketMetadata::AddAtEnd(), ns3::Buffer::AddAtEnd(), ns3::ByteTagList::AddAtStart(), ns3::ByteTagList::Adjust(), GetSize(), m_buffer, m_byteTagList, m_metadata, and NS_LOG_FUNCTION.

Referenced by ns3::OriginatorRxStatus::AccumulateLastFragment(), ns3::CsmaNetDevice::AddHeader(), ns3::MpduAggregator::AddHeaderAndPad(), ns3::MsduAggregator::Aggregate(), ns3::MpduAggregator::Aggregate(), benchByteTags(), benchFragment(), ns3::PendingData::CopyFromOffset(), ns3::LteRlcUm::DoNotifyTxOpportunity(), ns3::LteRlcAm::DoNotifyTxOpportunity(), ns3::BaseStationNetDevice::DoReceive(), ns3::SubscriberStationNetDevice::DoReceive(), Ns3WimaxFragmentationTestCase::DoRun(), PacketMetadataTest::DoRun(), PacketTest::DoRun(), ns3::Ipv6ExtensionFragment::Fragments::GetPacket(), ns3::SixLowPanNetDevice::Fragments::GetPacket(), ns3::Ipv4L3Protocol::Fragments::GetPacket(), ns3::Ipv6ExtensionFragment::Fragments::GetPartialPacket(), ns3::Ipv4L3Protocol::Fragments::GetPartialPacket(), ns3::TcpTxBuffer::MergeItems(), ns3::LteRlcUm::ReassembleAndDeliver(), ns3::LteRlcAm::ReassembleAndDeliver(), ns3::ThreeGppHttpClient::Receive(), ns3::olsr::RoutingProtocol::SendQueuedMessages(), and ns3::Icmpv6L4Protocol::SendRedirection().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AddByteTag() [1/2]

void ns3::Packet::AddByteTag ( const Tag tag) const

Tag each byte included in this packet with a new byte tag.

Parameters
tagthe new tag to add to this packet

Note that adding a tag is a const operation which is pretty un-intuitive. The rationale is that the content and behavior of a packet is not changed when a tag is added to a packet: any code which was not aware of the new tag is going to work just the same if the new tag is added. The real reason why adding a tag was made a const operation is to allow a trace sink which gets a packet to tag the packet, even if the packet is const (and most trace sources should use const packets because it would be totally evil to allow a trace sink to modify the content of a packet).

Definition at line 819 of file packet.cc.

References ns3::ObjectBase::GetInstanceTypeId(), ns3::TypeId::GetName(), ns3::Tag::GetSerializedSize(), GetSize(), list, m_byteTagList, NS_LOG_FUNCTION, and ns3::Tag::Serialize().

Referenced by ns3::AnimationInterface::AddByteTag(), benchByteTags(), ns3::LteRlcUm::DoNotifyTxOpportunity(), ns3::LteRlcAm::DoNotifyTxOpportunity(), ns3::LteRlcSm::DoNotifyTxOpportunity(), PacketTest::DoRun(), ns3::LtePdcp::DoTransmitPdcpSdu(), ns3::DelayJitterEstimation::PrepareTx(), CollisionExperiment::SendA(), CollisionExperiment::SendB(), Ipv4FragmentationTest::SendClient(), Ipv6FragmentationTest::SendClient(), ns3::Ipv4FlowProbe::SendOutgoingLogger(), ns3::Ipv6FlowProbe::SendOutgoingLogger(), Sender::SendPacket(), and ns3::PyViz::TraceNetDevTxCommon().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AddByteTag() [2/2]

void ns3::Packet::AddByteTag ( const Tag tag,
uint32_t  start,
uint32_t  end 
) const

Tag the indicated byte range of this packet with a new byte tag.

As parameters for this method, we do not use indexes, but byte position. Moreover, as there is no 0-th position, the first position is 1.

As example, if you want to tag the first 10 bytes, you have to call the method in this way:

Ptr<Packet> p = ... ;
SomeTag tag;
p->AddByteTag (tag, 1, 10);
Parameters
tagthe new tag to add to this packet
startthe position of the first byte tagged by this tag
endthe position of the last byte tagged by this tag

Definition at line 829 of file packet.cc.

References ns3::ObjectBase::GetInstanceTypeId(), ns3::TypeId::GetName(), ns3::Tag::GetSerializedSize(), list, m_byteTagList, NS_ABORT_MSG_IF, NS_LOG_FUNCTION, ns3::Tag::Serialize(), and visualizer.core::start().

+ Here is the call graph for this function:

◆ AddHeader()

void ns3::Packet::AddHeader ( const Header header)

Add header to this packet.

This method invokes the Header::GetSerializedSize and Header::Serialize methods to reserve space in the buffer and request the header to serialize itself in the packet buffer.

Parameters
headera reference to the header to add to this packet.

Definition at line 256 of file packet.cc.

References ns3::ByteTagList::AddAtStart(), ns3::Buffer::AddAtStart(), ns3::PacketMetadata::AddHeader(), ns3::ByteTagList::Adjust(), ns3::Buffer::Begin(), ns3::ObjectBase::GetInstanceTypeId(), ns3::TypeId::GetName(), ns3::Header::GetSerializedSize(), m_buffer, m_byteTagList, m_metadata, NS_LOG_FUNCTION, and ns3::Header::Serialize().

Referenced by ns3::dsr::DsrRouting::AddAckReqHeader(), ns3::Ipv4QueueDiscItem::AddHeader(), ns3::Ipv6QueueDiscItem::AddHeader(), ns3::ArpQueueDiscItem::AddHeader(), ns3::PointToPointNetDevice::AddHeader(), ns3::CsmaNetDevice::AddHeader(), ns3::MpduAggregator::AddHeaderAndPad(), FqCoDelQueueDiscTCPFlowsSeparation::AddPacket(), FqCoDelQueueDiscUDPFlowsSeparation::AddPacket(), ns3::MsduAggregator::Aggregate(), ns3::MpduAggregator::Aggregate(), ns3::UanMacRc::Associate(), ns3::UanMacRc::AssociateTimeout(), benchA(), benchB(), benchC(), benchD(), benchFragment(), ns3::DhcpClient::Boot(), ns3::Ipv4L3Protocol::CallTxTrace(), ns3::Ipv6L3Protocol::CallTxTrace(), ns3::dsr::DsrRouting::CheckSendBuffer(), ns3::SixLowPanNetDevice::CompressLowPanHc1(), ns3::SixLowPanNetDevice::CompressLowPanIphc(), ns3::SixLowPanNetDevice::CompressLowPanNhc(), ns3::SixLowPanNetDevice::CompressLowPanUdpNhc(), ns3::BaseStationNetDevice::CreateDcd(), ns3::BaseStationNetDevice::CreateDlMap(), ns3::SsServiceFlowManager::CreateDsaAck(), ns3::MeshWifiBeacon::CreatePacket(), ns3::BaseStationNetDevice::CreateUcd(), ns3::BaseStationNetDevice::CreateUlMap(), ns3::SixLowPanNetDevice::DecompressLowPanHc1(), ns3::SixLowPanNetDevice::DecompressLowPanIphc(), ns3::SixLowPanNetDevice::DecompressLowPanNhc(), ns3::SixLowPanNetDevice::DecompressLowPanUdpNhc(), ns3::WimaxMacQueue::Dequeue(), ns3::TcpGeneralErrorModel::DoCorrupt(), ns3::LteEnbRrcProtocolIdeal::DoEncodeHandoverCommand(), ns3::LteEnbRrcProtocolReal::DoEncodeHandoverCommand(), ns3::LteEnbRrcProtocolIdeal::DoEncodeHandoverPreparationInformation(), ns3::LteEnbRrcProtocolReal::DoEncodeHandoverPreparationInformation(), ns3::EpcMmeApplication::DoErabReleaseIndication(), ns3::SixLowPanNetDevice::DoFragmentation(), ns3::EpcMmeApplication::DoInitialUeMessage(), ns3::LteRlcUm::DoNotifyTxOpportunity(), ns3::LteRlcAm::DoNotifyTxOpportunity(), ns3::EpcMmeApplication::DoPathSwitchRequest(), ns3::BaseStationNetDevice::DoReceive(), ns3::EpcSgwApplication::DoRecvCreateSessionRequest(), ns3::EpcPgwApplication::DoRecvCreateSessionRequest(), ns3::EpcSgwApplication::DoRecvCreateSessionResponse(), ns3::EpcSgwApplication::DoRecvDeleteBearerCommand(), ns3::EpcPgwApplication::DoRecvDeleteBearerCommand(), ns3::EpcMmeApplication::DoRecvDeleteBearerRequest(), ns3::EpcSgwApplication::DoRecvDeleteBearerRequest(), ns3::EpcSgwApplication::DoRecvDeleteBearerResponse(), ns3::EpcSgwApplication::DoRecvModifyBearerRequest(), ns3::EpcPgwApplication::DoRecvModifyBearerRequest(), ns3::EpcSgwApplication::DoRecvModifyBearerResponse(), FlameHeaderTest::DoRun(), LrWpanPacketTestCase::DoRun(), DsaRequestTestCase::DoRun(), Ns3WimaxCsParamTlvTestCase::DoRun(), MeshHeaderTest::DoRun(), MeshInformationElementVectorBist::DoRun(), EpsGtpuHeaderTestCase::DoRun(), OlsrMidTestCase::DoRun(), DsdvHeaderTestCase::DoRun(), EpcTftClassifierTestCase::DoRun(), ns3::aodv::TypeHeaderTest::DoRun(), ns3::RlcAmStatusPduTestCase::DoRun(), Ns3WimaxSfTlvTestCase::DoRun(), ns3::aodv::RreqHeaderTest::DoRun(), OlsrHelloTestCase::DoRun(), ns3::aodv::RrepHeaderTest::DoRun(), PeerLinkFrameStartTest::DoRun(), OlsrTcTestCase::DoRun(), ns3::aodv::RrepAckHeaderTest::DoRun(), ns3::aodv::RerrHeaderTest::DoRun(), OlsrHnaTestCase::DoRun(), RrcConnectionRequestTestCase::DoRun(), RrcConnectionSetupTestCase::DoRun(), RrcConnectionSetupCompleteTestCase::DoRun(), PacketTest::DoRun(), RrcConnectionReconfigurationCompleteTestCase::DoRun(), RrcConnectionReconfigurationTestCase::DoRun(), HandoverPreparationInfoTestCase::DoRun(), RrcConnectionReestablishmentRequestTestCase::DoRun(), RrcConnectionReestablishmentTestCase::DoRun(), RrcConnectionReestablishmentCompleteTestCase::DoRun(), RrcConnectionRejectTestCase::DoRun(), MeasurementReportTestCase::DoRun(), ns3::SixLowPanNetDevice::DoSend(), Ipv4RawSocketImplTest::DoSendData_IpHdr(), Ipv4HeaderTest::DoSendData_IpHdr_Dscp(), ns3::EpcX2::DoSendHandoverPreparationFailure(), ns3::EpcX2::DoSendHandoverRequest(), ns3::EpcX2::DoSendHandoverRequestAck(), ns3::EpcX2::DoSendLoadInformation(), ns3::LteUeRrcProtocolReal::DoSendMeasurementReport(), ns3::EpcX2::DoSendResourceStatusUpdate(), ns3::Rip::DoSendRouteUpdate(), ns3::RipNg::DoSendRouteUpdate(), ns3::LteEnbRrcProtocolReal::DoSendRrcConnectionReconfiguration(), ns3::LteUeRrcProtocolReal::DoSendRrcConnectionReconfigurationCompleted(), ns3::LteEnbRrcProtocolReal::DoSendRrcConnectionReestablishment(), ns3::LteUeRrcProtocolReal::DoSendRrcConnectionReestablishmentComplete(), ns3::LteEnbRrcProtocolReal::DoSendRrcConnectionReestablishmentReject(), ns3::LteUeRrcProtocolReal::DoSendRrcConnectionReestablishmentRequest(), ns3::LteEnbRrcProtocolReal::DoSendRrcConnectionReject(), ns3::LteEnbRrcProtocolReal::DoSendRrcConnectionRelease(), ns3::LteUeRrcProtocolReal::DoSendRrcConnectionRequest(), ns3::LteEnbRrcProtocolReal::DoSendRrcConnectionSetup(), ns3::LteUeRrcProtocolReal::DoSendRrcConnectionSetupCompleted(), ns3::EpcX2::DoSendSnStatusTransfer(), ns3::EpcX2::DoSendUeContextRelease(), ns3::EpcX2::DoSendUeData(), ns3::LtePdcp::DoTransmitPdcpSdu(), ns3::UanMacRcGw::EndCycle(), ns3::UanMacAloha::Enqueue(), ns3::UanMacCw::Enqueue(), ns3::SubscriberStationNetDevice::Enqueue(), ns3::Icmpv6L4Protocol::ForgeEchoRequest(), ns3::Icmpv6L4Protocol::ForgeNA(), ns3::Icmpv6L4Protocol::ForgeNS(), ns3::Icmpv6L4Protocol::ForgeRS(), ns3::dsr::DsrRouting::ForwardErrPacket(), ns3::dsr::DsrRouting::ForwardPacket(), ns3::dot11s::HwmpProtocolMac::ForwardPerr(), ns3::Ipv4RawSocketImpl::ForwardUp(), ns3::Ipv6RawSocketImpl::ForwardUp(), ns3::Ipv6ExtensionFragment::GetFragments(), ns3::WifiPsdu::GetPacket(), ns3::Icmpv4L4Protocol::HandleEcho(), ns3::Ipv6ExtensionFragment::HandleFragmentsTimeout(), ns3::Rip::HandleRequests(), ns3::RipNg::HandleRequests(), ns3::Ipv6L3Protocol::IpForward(), ns3::Ipv4L3ProtocolDropSinkWithContext(), ns3::Ipv4L3ProtocolDropSinkWithoutContext(), ns3::Ipv6L3ProtocolDropSinkWithContext(), ns3::Ipv6L3ProtocolDropSinkWithoutContext(), ns3::Ipv6L3Protocol::LocalDeliver(), ns3::ArpL3Protocol::Lookup(), SpectrumWifiPhyBasicTest::MakeSignal(), WifiPhyThresholdsTest::MakeWifiSignal(), ns3::LrWpanMac::McpsDataRequest(), ns3::dsr::DsrRouting::PacketNewRoute(), ns3::WifiPhyHelper::PcapSniffRxEvent(), ns3::WifiPhyHelper::PcapSniffTxEvent(), ns3::PcapSniffTxRxEvent(), ns3::WimaxMacQueue::Peek(), ns3::dsr::DsrOptionRreq::Process(), ns3::dsr::DsrOptionRrep::Process(), ns3::Ipv6ExtensionRouting::Process(), ns3::Ipv6ExtensionLooseRouting::Process(), ns3::Ipv6Extension::ProcessOptions(), ns3::NscTcpL4Protocol::Receive(), ns3::ThreeGppHttpClient::Receive(), ns3::TapBridge::ReceiveFromBridgedDevice(), ns3::aodv::RoutingProtocol::RecvError(), ns3::aodv::RoutingProtocol::RecvReply(), ns3::aodv::RoutingProtocol::RecvRequest(), ns3::DhcpClient::Request(), ns3::ThreeGppHttpClient::RequestEmbeddedObject(), ns3::ThreeGppHttpClient::RequestMainObject(), ns3::flame::FlameProtocol::RequestRoute(), ns3::Ipv6L3Protocol::RouteInputError(), ns3::UanMacRc::RtsTimeout(), ns3::dsr::DsrRouting::SalvagePacket(), ns3::BlockAckManager::ScheduleBlockAckReq(), ns3::UanMacRc::ScheduleData(), ns3::SsServiceFlowManager::ScheduleDsaReq(), ns3::BsServiceFlowManager::ScheduleDsaRsp(), ns3::BSLinkManager::ScheduleRngRspMessage(), ns3::UdpClient::Send(), ns3::V4Ping::Send(), EpsBearerTagUdpClient::Send(), ns3::Ping6::Send(), ns3::WifiNetDevice::Send(), ns3::Radvd::Send(), ns3::Ipv4Interface::Send(), ns3::UdpL4Protocol::Send(), ns3::Ipv6Interface::Send(), ns3::dsr::DsrRouting::Send(), ns3::WaveNetDevice::Send(), ns3::WimaxNetDevice::Send(), ns3::DhcpServer::SendAck(), ns3::dsr::DsrRouting::SendAck(), ns3::LrWpanMac::SendAck(), ns3::QosTxop::SendAddBaRequest(), ns3::RegularWifiMac::SendAddBaResponse(), TestAmpduReception::SendAmpduWithThreeMpdus(), ns3::StaWifiMac::SendAssociationRequest(), ns3::ApWifiMac::SendAssocResp(), ns3::BandwidthManager::SendBandwidthRequest(), ns3::MacLow::SendBlockAckResponse(), ns3::QosTxop::SendDelbaFrame(), ns3::Icmpv4L4Protocol::SendDestUnreach(), ns3::Icmpv6L4Protocol::SendEchoReply(), ns3::dsr::DsrRouting::SendErrorRequest(), ns3::WifiNetDevice::SendFrom(), ns3::FdNetDevice::SendFrom(), ns3::AlohaNoackNetDevice::SendFrom(), ns3::WimaxNetDevice::SendFrom(), ns3::dsr::DsrRouting::SendGratuitousReply(), WaveNetDeviceExample::SendIpPacket(), ns3::Icmpv6L4Protocol::SendMessage(), ns3::Icmpv4L4Protocol::SendMessage(), ns3::Icmpv6L4Protocol::SendNA(), ns3::Icmpv6L4Protocol::SendNS(), ns3::ApWifiMac::SendOneBeacon(), WaveNetDeviceExample::SendOneWsmpPacket(), TestThresholdPreambleDetectionWithoutFrameCapture::SendPacket(), ns3::UdpTraceClient::SendPacket(), ns3::WifiPhy::SendPacket(), ns3::olsr::RoutingProtocol::SendPacket(), TestThresholdPreambleDetectionWithFrameCapture::SendPacket(), TestSimpleFrameCaptureModel::SendPacket(), TestPhyHeadersReception::SendPacket(), ns3::dsr::DsrRouting::SendPacketFromBuffer(), ns3::TcpL4Protocol::SendPacketV4(), ns3::TcpL4Protocol::SendPacketV6(), ns3::dot11s::PeerManagementProtocolMac::SendPeerLinkManagementFrame(), ns3::dsdv::RoutingProtocol::SendPeriodicUpdate(), ns3::olsr::Bug780Test::SendPing(), ChainRegressionTest::SendPing(), ns3::dot11s::HwmpProtocolMac::SendPrep(), ns3::dot11s::HwmpProtocolMac::SendPreq(), ns3::StaWifiMac::SendProbeRequest(), ns3::ApWifiMac::SendProbeResp(), ns3::olsr::RoutingProtocol::SendQueuedMessages(), ns3::SSLinkManager::SendRangingRequest(), ns3::Ipv6L3Protocol::SendRealOut(), ns3::Icmpv6L4Protocol::SendRedirection(), ns3::aodv::RoutingProtocol::SendReplyAck(), ns3::aodv::RoutingProtocol::SendReplyByIntermediateNode(), ns3::aodv::RoutingProtocol::SendRequest(), ns3::aodv::RoutingProtocol::SendRerrWhenBreaksLinkToNextHop(), ns3::aodv::RoutingProtocol::SendRerrWhenNoRouteToForward(), ns3::Rip::SendRouteRequest(), ns3::RipNg::SendRouteRequest(), ns3::Icmpv6L4Protocol::SendRS(), ns3::UanMacRc::SendRts(), ns3::Icmpv4L4Protocol::SendTimeExceededTtl(), ns3::Ipv6RawSocketImpl::SendTo(), ns3::EpcSgwApplication::SendToS1uSocket(), ns3::EpcEnbApplication::SendToS1uSocket(), ns3::EpcPgwApplication::SendToS5uSocket(), ns3::EpcSgwApplication::SendToS5uSocket(), ns3::dsdv::RoutingProtocol::SendTriggeredUpdate(), ns3::dsr::DsrRouting::SendUnreachError(), ns3::OcbWifiMac::SendVsc(), ns3::WaveNetDevice::SendX(), ns3::ThreeGppHttpServer::ServeFromTxBuffer(), ns3::UanMacRcGw::StartCycle(), ns3::PyViz::TraceIpv4Drop(), and ns3::dot11s::HwmpProtocolMac::UpdateOutcomingFrame().

+ Here is the call graph for this function:

◆ AddPacketTag()

void ns3::Packet::AddPacketTag ( const Tag tag) const

Add a packet tag.

Parameters
tagthe packet tag type to add.

Note that this method is const, that is, it does not modify the state of this packet, which is fairly un-intuitive. See AddByteTag"()" discussion.

Definition at line 863 of file packet.cc.

References ns3::PacketTagList::Add(), ns3::ObjectBase::GetInstanceTypeId(), ns3::TypeId::GetName(), ns3::Tag::GetSerializedSize(), m_packetTagList, and NS_LOG_FUNCTION.

Referenced by PfifoFastQueueDiscOverflow::AddPacket(), ns3::TcpSocketBase::AddSocketTags(), benchD(), ns3::LteRlcUm::DoNotifyTxOpportunity(), ns3::LteRlcAm::DoNotifyTxOpportunity(), ns3::UeManager::DoReceivePdcpSdu(), PacketTest::DoRun(), ns3::Rip::DoSendRouteUpdate(), ns3::RipNg::DoSendRouteUpdate(), ns3::UdpSocketImpl::DoSendTo(), ns3::VsaManager::DoSendVsa(), ns3::LteRlcUm::DoTransmitPdcpPdu(), ns3::LteRlcAm::DoTransmitPdcpPdu(), ns3::LteUeMac::DoTransmitPdu(), ns3::LteEnbMac::DoTransmitPdu(), ns3::dot11s::HwmpProtocol::ForwardUnicast(), ns3::Ipv4RawSocketImpl::ForwardUp(), ns3::Ipv6RawSocketImpl::ForwardUp(), ns3::UdpSocketImpl::ForwardUp(), ns3::PacketSocket::ForwardUp(), ns3::UdpSocketImpl::ForwardUp6(), ns3::Rip::HandleRequests(), ns3::RipNg::HandleRequests(), ns3::Ipv4L3Protocol::IpForward(), SpectrumWifiPhyBasicTest::MakeSignal(), WifiPhyThresholdsTest::MakeWifiSignal(), ns3::TcpSocketBase::PersistTimeout(), ns3::WifiRemoteStationManager::PrepareForQueue(), ns3::dot11s::HwmpProtocol::ProactivePathResolved(), ns3::dsr::DsrOptionRreq::Process(), ns3::dot11s::HwmpProtocol::ReactivePathResolved(), ns3::flame::FlameProtocolMac::Receive(), ns3::dot11s::HwmpProtocolMac::ReceiveData(), ns3::MacLow::ReceiveOk(), ns3::aodv::RoutingProtocol::RecvError(), ns3::aodv::RoutingProtocol::RecvReply(), ns3::aodv::RoutingProtocol::RecvRequest(), ns3::dot11s::HwmpProtocol::RequestRoute(), ns3::flame::FlameProtocol::RequestRoute(), ns3::aodv::RoutingProtocol::RouteOutput(), ns3::dsdv::RoutingProtocol::RouteOutput(), ns3::dsr::DsrRouting::RouteRequestTimerExpire(), EpsBearerTagUdpClient::Send(), ns3::Radvd::Send(), ns3::WaveNetDevice::Send(), ns3::MacLow::SendAckAfterData(), TestAmpduReception::SendAmpduWithThreeMpdus(), ns3::MacLow::SendBlockAckResponse(), Ipv4FragmentationTest::SendClient(), Ipv6FragmentationTest::SendClient(), ns3::MacLow::SendCtsAfterRts(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::TcpSocketSmallAcks::SendEmptyPacket(), ns3::dsr::DsrRouting::SendErrorRequest(), ns3::SimpleNetDevice::SendFrom(), ns3::dsr::DsrRouting::SendInitialRequest(), ns3::Icmpv6L4Protocol::SendMessage(), TestThresholdPreambleDetectionWithoutFrameCapture::SendPacket(), ns3::WifiPhy::SendPacket(), TestThresholdPreambleDetectionWithFrameCapture::SendPacket(), TestSimpleFrameCaptureModel::SendPacket(), TestPhyHeadersReception::SendPacket(), ns3::aodv::RoutingProtocol::SendReplyAck(), ns3::aodv::RoutingProtocol::SendReplyByIntermediateNode(), ns3::aodv::RoutingProtocol::SendRequest(), ns3::aodv::RoutingProtocol::SendRerrWhenBreaksLinkToNextHop(), ns3::aodv::RoutingProtocol::SendRerrWhenNoRouteToForward(), ns3::Rip::SendRouteRequest(), ns3::RipNg::SendRouteRequest(), ns3::Ipv4RawSocketImpl::SendTo(), ns3::Ipv6RawSocketImpl::SendTo(), ns3::EpcEnbApplication::SendToLteSocket(), ns3::WaveNetDevice::SendX(), PfifoFastQueueDiscDscpPrioritization::TestDscpValue(), and PfifoFastQueueDiscTosPrioritization::TestTosValue().

+ Here is the call graph for this function:

◆ AddPaddingAtEnd()

void ns3::Packet::AddPaddingAtEnd ( uint32_t  size)

Add a zero-filled padding to the packet.

Parameters
sizenumber of padding bytes to add.

Definition at line 347 of file packet.cc.

References ns3::ByteTagList::AddAtEnd(), ns3::Buffer::AddAtEnd(), ns3::PacketMetadata::AddPaddingAtEnd(), GetSize(), m_buffer, m_byteTagList, m_metadata, and NS_LOG_FUNCTION.

Referenced by PacketTest::DoRun(), and SendStuff().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AddTrailer()

◆ BeginItem()

PacketMetadata::ItemIterator ns3::Packet::BeginItem ( void  ) const

Returns an iterator which points to the first 'item' stored in this buffer.

Note that this iterator will point to an empty array of items if you don't call EnablePrinting or EnableChecking before.

Returns
an iterator
See also
EnablePrinting EnableChecking

Definition at line 566 of file packet.cc.

References ns3::PacketMetadata::BeginItem(), m_buffer, and m_metadata.

Referenced by PacketMetadataTest::CheckHistory(), ns3::PyViz::FilterPacket(), and ns3::IsAmpdu().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Copy()

Ptr< Packet > ns3::Packet::Copy ( void  ) const

performs a COW copy of the packet.

Returns
a COW copy of the packet.

The returns packet will behave like an independent copy of the original packet, even though they both share the same datasets internally.

Definition at line 121 of file packet.cc.

References ns3::PacketTagIterator::Packet.

Referenced by ns3::TcpTxBuffer::Add(), ns3::dsr::DsrRouting::AddAckReqHeader(), ns3::MsduAggregator::Aggregate(), benchA(), benchD(), ns3::Ipv4L3Protocol::CallTxTrace(), ns3::Ipv6L3Protocol::CallTxTrace(), ns3::dsr::DsrRouting::CancelPacketTimerNextHop(), ns3::dsr::DsrRouting::CancelPassiveTimer(), LteIpv6RoutingTestCase::Checker(), ns3::dsr::DsrRouting::CheckSendBuffer(), ns3::IpcsClassifier::Classify(), ns3::EpcTftClassifier::Classify(), ClientEmbeddedObjectReceived(), ClientMainObjectReceived(), ThreeGppHttpObjectTestCase::ClientRxEmbeddedObjectCallback(), ThreeGppHttpObjectTestCase::ClientRxMainObjectCallback(), ns3::PacketBurst::Copy(), ns3::TcpTxBuffer::CopyFromSequence(), ns3::WimaxMacQueue::Dequeue(), ns3::Ipv4L3Protocol::DoFragmentation(), ns3::SixLowPanNetDevice::DoFragmentation(), ns3::LteRlcAm::DoNotifyTxOpportunity(), ns3::BaseStationNetDevice::DoReceive(), ns3::LteUeMac::DoReceiveLteControlMessage(), ns3::VsaManager::DoRepeat(), AmpduAggregationTest::DoRun(), PacketTest::DoRun(), ns3::LteEnbMac::DoSchedDlConfigInd(), ns3::MeshPointDevice::DoSend(), ns3::SixLowPanNetDevice::DoSend(), ns3::UdpSocketImpl::DoSendTo(), ns3::WifiPhy::EndReceive(), ns3::BridgeNetDevice::ForwardBroadcast(), ns3::MeshWifiInterfaceMac::ForwardDown(), ns3::dsr::DsrRouting::ForwardPacket(), ns3::BridgeNetDevice::ForwardUnicast(), ns3::Ipv4RawSocketImpl::ForwardUp(), ns3::Ipv6RawSocketImpl::ForwardUp(), ns3::PacketSocket::ForwardUp(), ns3::FdNetDevice::ForwardUp(), ns3::Ipv6ExtensionFragment::GetFragments(), ns3::Ipv6ExtensionFragment::Fragments::GetPacket(), ns3::Ipv6ExtensionFragment::Fragments::GetPartialPacket(), ns3::WifiPhy::GetReceptionStatus(), ns3::GetTid(), ns3::QosTxop::GotAck(), ns3::HalfDuplexIdealPhySignalParameters::HalfDuplexIdealPhySignalParameters(), ns3::Icmpv6L4Protocol::HandleDestinationUnreachable(), ns3::Ipv6ExtensionFragment::HandleFragmentsTimeout(), ns3::Icmpv6L4Protocol::HandlePacketTooBig(), ns3::Icmpv6L4Protocol::HandleParameterError(), ns3::Icmpv6L4Protocol::HandleRA(), SixlowpanFragmentationTest::HandleReadClient(), Ipv4FragmentationTest::HandleReadClient(), Ipv6FragmentationTest::HandleReadClient(), SixlowpanFragmentationTest::HandleReadServer(), Ipv4FragmentationTest::HandleReadServer(), Ipv6FragmentationTest::HandleReadServer(), ns3::Icmpv6L4Protocol::HandleRedirection(), ns3::Icmpv6L4Protocol::HandleTimeExceeded(), ns3::Ipv4L3Protocol::IpForward(), ns3::Ipv6L3Protocol::IpForward(), ns3::Ipv4L3Protocol::IpMulticastForward(), ns3::Ipv6L3Protocol::IpMulticastForward(), ns3::Ipv4L3ProtocolDropSinkWithContext(), ns3::Ipv4L3ProtocolDropSinkWithoutContext(), Ns3TcpStateTestCase::Ipv4L3Rx(), Ns3TcpLossTestCase::Ipv4L3Tx(), Ns3TcpStateTestCase::Ipv4L3Tx(), Ns3TcpInteroperabilityTestCase::Ipv4L3Tx(), ns3::Ipv6L3ProtocolDropSinkWithContext(), ns3::Ipv6L3ProtocolDropSinkWithoutContext(), ns3::dsr::DsrRouting::LinkScheduleTimerExpire(), ns3::Ipv4L3Protocol::LocalDeliver(), ns3::Ipv6L3Protocol::LocalDeliver(), ns3::dsr::DsrRouting::NetworkScheduleTimerExpire(), ns3::AlohaNoackNetDevice::NotifyReceptionEndOk(), WifiAcMappingTest::PacketEnqueuedInWifiMacQueue(), ns3::dsr::DsrRouting::PacketNewRoute(), ns3::dsr::DsrRouting::PassiveEntryCheck(), ns3::dsr::DsrRouting::PassiveScheduleTimerExpire(), ns3::WifiPhyHelper::PcapSniffRxEvent(), ns3::WifiPhyHelper::PcapSniffTxEvent(), ns3::PcapSniffTxRxEvent(), ns3::LrWpanMac::PdDataIndication(), ns3::WimaxMacQueue::Peek(), ns3::Ipv6OptionPad1::Process(), ns3::Ipv6OptionPadn::Process(), ns3::Ipv6ExtensionHopByHop::Process(), ns3::Ipv6OptionJumbogram::Process(), ns3::Ipv6ExtensionDestination::Process(), ns3::Ipv6OptionRouterAlert::Process(), ns3::Ipv6ExtensionFragment::Process(), ns3::dsr::DsrOptionPad1::Process(), ns3::dsr::DsrOptionPadn::Process(), ns3::dsr::DsrOptionRreq::Process(), ns3::dsr::DsrOptionRrep::Process(), ns3::dsr::DsrOptionSR::Process(), ns3::dsr::DsrOptionRerr::Process(), ns3::Ipv6ExtensionRouting::Process(), ns3::dsr::DsrOptionAckReq::Process(), ns3::dsr::DsrOptionAck::Process(), ns3::Ipv6ExtensionLooseRouting::Process(), ns3::Ipv4L3Protocol::ProcessFragment(), ns3::SixLowPanNetDevice::ProcessFragment(), ns3::Ipv6Extension::ProcessOptions(), ns3::dsr::DsrRouting::PromiscReceive(), ns3::Txop::Queue(), ns3::dot11s::PeerManagementProtocolMac::Receive(), ns3::ArpL3Protocol::Receive(), ns3::PointToPointNetDevice::Receive(), ns3::Ipv6L3Protocol::Receive(), ns3::Ipv4L3Protocol::Receive(), ns3::ApWifiMac::Receive(), ns3::CsmaNetDevice::Receive(), ns3::UdpL4Protocol::Receive(), ns3::Icmpv6L4Protocol::Receive(), ns3::LteTestMac::Receive(), ns3::ThreeGppHttpClient::Receive(), ns3::dsr::DsrRouting::Receive(), LteIpv6RoutingTestCase::ReceivedAtClient(), TcpSocketHalfAck::ReceivedData(), ns3::TapBridge::ReceiveFromBridgedDevice(), ns3::MeshPointDevice::ReceiveFromDevice(), ns3::SixLowPanNetDevice::ReceiveFromDevice(), ns3::EpcEnbApplication::RecvFromLteSocket(), ns3::EpcEnbApplication::RecvFromS1uSocket(), ns3::EpcPgwApplication::RecvFromS5uSocket(), ns3::EpcPgwApplication::RecvFromTunDevice(), ns3::LrWpanMac::RemoveFirstTxQElement(), ns3::dot11s::HwmpProtocol::RequestRoute(), ns3::flame::FlameProtocol::RequestRoute(), ns3::aodv::RoutingProtocol::RouteInput(), ns3::dsdv::RoutingProtocol::RouteInput(), ns3::Ipv4ListRouting::RouteInput(), ns3::Ipv6L3Protocol::RouteInputError(), ns3::dsr::DsrRouting::RouteRequestTimerExpire(), Bug2831TestCase::RxCallback(), Bug2470TestCase::RxCallback(), Bug2470TestCase::RxDropCallback(), ns3::dsr::DsrRouting::SalvagePacket(), ns3::UanMacRc::ScheduleData(), ns3::dsr::DsrRouting::ScheduleLinkPacketRetry(), ns3::dsr::DsrRouting::ScheduleNetworkPacketRetry(), ns3::dsr::DsrRouting::SchedulePassivePacketRetry(), ns3::ErrorChannel::Send(), ns3::SimpleChannel::Send(), ns3::YansWifiChannel::Send(), ns3::Ipv4L3Protocol::Send(), ns3::dsdv::RoutingProtocol::Send(), ns3::dsr::DsrRouting::Send(), TestAmpduReception::SendAmpduWithThreeMpdus(), ns3::dsr::DsrRouting::SendErrorRequest(), ns3::BridgeNetDevice::SendFrom(), ns3::SimpleNetDevice::SendFrom(), ns3::dsr::DsrRouting::SendInitialRequest(), ns3::WifiPhy::SendPacket(), ns3::olsr::RoutingProtocol::SendPacket(), ns3::dsr::DsrRouting::SendPacketFromBuffer(), ns3::dsr::DsrRouting::SendRealDown(), ns3::aodv::RoutingProtocol::SendRerrMessage(), ns3::aodv::RoutingProtocol::SendRerrWhenNoRouteToForward(), ns3::dsr::DsrRouting::SendUnreachError(), ns3::VsaManager::SendVsa(), LteIpv6RoutingTestCase::SentAtClient(), UdpSocketImplTest::SentPkt(), ThreeGppHttpObjectTestCase::ServerRxCallback(), Bug2843TestCase::StoreDistinctTuple(), ns3::PyViz::TraceDevQueueDrop(), ns3::PyViz::TraceIpv4Drop(), ns3::PyViz::TraceNetDevRxCommon(), ns3::PyViz::TraceNetDevTxCommon(), ns3::CsmaChannel::TransmitEnd(), ns3::PointToPointRemoteChannel::TransmitStart(), ns3::PointToPointChannel::TransmitStart(), ns3::CsmaChannel::TransmitStart(), and ns3::UanChannel::TxPacket().

◆ CopyData() [1/2]

uint32_t ns3::Packet::CopyData ( uint8_t *  buffer,
uint32_t  size 
) const

Copy the packet contents to a byte buffer.

Parameters
buffera pointer to a byte buffer where the packet data should be copied.
sizethe size of the byte buffer.
Returns
the number of bytes read from the packet

No more than size bytes will be copied by this function.

Definition at line 378 of file packet.cc.

References ns3::Buffer::CopyData(), and m_buffer.

Referenced by ns3::dsr::DsrRouting::AddAckReqHeader(), ns3::EthernetTrailer::CalcFcs(), ns3::dsr::DsrRouting::CancelPacketTimerNextHop(), ns3::EthernetTrailer::CheckFcs(), ns3::LrWpanMacTrailer::CheckFcs(), ns3::dsr::DsrRouting::CheckSendBuffer(), ns3::Ipv4FlowClassifier::Classify(), ns3::Ipv6FlowClassifier::Classify(), ns3::SimpleOfdmWimaxPhy::ConvertBurstToBits(), ns3::SixLowPanNetDevice::DecompressLowPanIphc(), ns3::SixLowPanNetDevice::DecompressLowPanNhc(), ns3::LteTestPdcp::DoReceivePdcpPdu(), SixlowpanFragmentationTest::DoRun(), SixlowpanHc1ImplTest::DoRun(), SixlowpanIphcImplTest::DoRun(), Ipv4FragmentationTest::DoRun(), Ipv6FragmentationTest::DoRun(), PacketTest::DoRun(), ns3::dsr::DsrOptionRerr::DoSendError(), ns3::LteTestMac::DoTransmitPdu(), ns3::Ipv6ExtensionFragment::GetFragments(), GetString(), ns3::Icmpv6L4Protocol::HandleDestinationUnreachable(), ns3::Icmpv6L4Protocol::HandleEchoRequest(), ns3::Icmpv6L4Protocol::HandleNA(), ns3::Icmpv6L4Protocol::HandleNS(), ns3::Icmpv6L4Protocol::HandlePacketTooBig(), ns3::Icmpv6L4Protocol::HandleParameterError(), ns3::Icmpv6L4Protocol::HandleRA(), ns3::Ping6::HandleRead(), ns3::Radvd::HandleRead(), ns3::Icmpv6L4Protocol::HandleRedirection(), ns3::Icmpv6L4Protocol::HandleRS(), ns3::Icmpv6L4Protocol::HandleTimeExceeded(), Ns3TcpStateTestCase::Ipv4L3Tx(), Ns3TcpLossTestCase::Ipv4L3Tx(), Ns3TcpInteroperabilityTestCase::Ipv4L3Tx(), ns3::Ipv6L3Protocol::LocalDeliver(), UanExperiment::PrintReceivedPacket(), ns3::dsr::DsrOptionRreq::Process(), ns3::dsr::DsrOptionRrep::Process(), ns3::dsr::DsrOptionSR::Process(), ns3::dsr::DsrOptionRerr::Process(), ns3::Ipv6ExtensionRouting::Process(), ns3::Ipv6ExtensionLooseRouting::Process(), ns3::Ipv6Extension::ProcessOptions(), ns3::dsr::DsrRouting::PromiscReceive(), ns3::NscTcpL4Protocol::Receive(), ns3::dsr::DsrRouting::Receive(), ChannelAccessTestCase::Receive(), AnnexC_TestCase::Receive(), ns3::TapBridge::ReceiveFromBridgedDevice(), ns3::SixLowPanNetDevice::ReceiveFromDevice(), ns3::Socket::Recv(), ns3::Socket::RecvFrom(), ns3::dsr::DsrRouting::SalvagePacket(), ns3::FdNetDevice::SendFrom(), ns3::dsr::DsrRouting::SendPacketFromBuffer(), ns3::Ipv6RawSocketImpl::SendTo(), ns3::EpcEnbApplication::SendToLteSocket(), ns3::EpcPgwApplication::SendToTunDevice(), ns3::Icmpv6DestinationUnreachable::Serialize(), ns3::Icmpv6TooBig::Serialize(), ns3::Icmpv6TimeExceeded::Serialize(), ns3::Icmpv6ParameterError::Serialize(), ns3::Icmpv6OptionRedirected::Serialize(), ns3::LrWpanMacTrailer::SetFcs(), TestUtils::sprintPacketContentsBin(), ns3::TestUtils::sprintPacketContentsBin(), TestUtils::sprintPacketContentsHex(), ns3::TestUtils::sprintPacketContentsHex(), and ns3::PcapFile::Write().

+ Here is the call graph for this function:

◆ CopyData() [2/2]

void ns3::Packet::CopyData ( std::ostream *  os,
uint32_t  size 
) const

Copy the packet contents to an output stream.

Parameters
ospointer to output stream in which we want to write the packet data.
sizethe maximum number of bytes we want to write in the output stream.

Definition at line 384 of file packet.cc.

References ns3::Buffer::CopyData(), and m_buffer.

+ Here is the call graph for this function:

◆ CreateFragment()

Ptr< Packet > ns3::Packet::CreateFragment ( uint32_t  start,
uint32_t  length 
) const

Create a new packet which contains a fragment of the original packet.

The returned packet shares the same uid as this packet.

Parameters
startoffset from start of packet to start of fragment to create
lengthlength of fragment to create
Returns
a fragment of the original packet

Definition at line 227 of file packet.cc.

References ns3::ByteTagList::Adjust(), ns3::PacketMetadata::CreateFragment(), ns3::Buffer::CreateFragment(), GetNixVector(), ns3::Buffer::GetSize(), m_buffer, m_byteTagList, m_metadata, m_packetTagList, NS_ASSERT, NS_LOG_FUNCTION, Packet(), SetNixVector(), and visualizer.core::start().

Referenced by ns3::TcpRxBuffer::Add(), benchFragment(), ns3::PendingData::CopyFromOffset(), ns3::MsduAggregator::Deaggregate(), ns3::MpduAggregator::Deaggregate(), ns3::WimaxMacQueue::Dequeue(), ns3::TcpTxBuffer::DiscardUpTo(), ns3::Ipv4L3Protocol::DoFragmentation(), ns3::SixLowPanNetDevice::DoFragmentation(), ns3::LteRlcUm::DoNotifyTxOpportunity(), ns3::LteRlcAm::DoNotifyTxOpportunity(), PacketMetadataTest::DoRun(), PacketTest::DoRun(), ns3::QosTxop::GetFragmentPacket(), ns3::Txop::GetFragmentPacket(), ns3::Ipv6ExtensionFragment::GetFragments(), ns3::WifiPhyHelper::GetRadiotapHeader(), ns3::MpduAggregator::PeekAmpduSubframes(), ns3::MpduAggregator::PeekMpduInAmpduSubframe(), ns3::LteRlcUm::ReassembleAndDeliver(), ns3::LteRlcAm::ReassembleAndDeliver(), ns3::Icmpv6L4Protocol::SendErrorDestinationUnreachable(), ns3::Icmpv6L4Protocol::SendErrorParameterError(), ns3::Icmpv6L4Protocol::SendErrorTimeExceeded(), ns3::Icmpv6L4Protocol::SendErrorTooBig(), ns3::Icmpv6L4Protocol::SendRedirection(), and ns3::TcpTxBuffer::SplitItems().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Deserialize()

uint32_t ns3::Packet::Deserialize ( uint8_t const *  buffer,
uint32_t  size 
)
private

Deserializes a packet.

Parameters
[in]bufferthe input buffer.
[in]sizethe buffer size.
Returns
the number of deserialized bytes.
Todo:
Deserialize Tags

Definition at line 737 of file packet.cc.

References ns3::NixVector::Deserialize(), ns3::PacketMetadata::Deserialize(), ns3::Buffer::Deserialize(), m_buffer, m_metadata, m_nixVector, NS_ASSERT, and NS_LOG_FUNCTION.

Referenced by Packet().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ EnableChecking()

void ns3::Packet::EnableChecking ( void  )
static

Enable packets metadata checking.

The packet metadata is also used to perform extensive sanity checks at runtime when performing operations on a Packet. For example, this metadata is used to verify that when you remove a header from a packet, this same header was actually present at the front of the packet. These errors will be detected and will abort the program.

Definition at line 579 of file packet.cc.

References ns3::PacketMetadata::EnableChecking(), and NS_LOG_FUNCTION_NOARGS.

+ Here is the call graph for this function:

◆ EnablePrinting()

void ns3::Packet::EnablePrinting ( void  )
static

Enable printing packets metadata.

By default, packets do not keep around enough metadata to perform the operations requested by the Print methods. If you want to be able the Packet::Print method, you need to invoke this method at least once during the simulation setup and before any packet is created.

Definition at line 572 of file packet.cc.

References ns3::PacketMetadata::Enable(), and NS_LOG_FUNCTION_NOARGS.

Referenced by ns3::TcpGeneralTest::DoRun(), ns3::UanHelper::EnableAscii(), ns3::YansWavePhyHelper::EnableAsciiInternal(), ns3::FdNetDeviceHelper::EnableAsciiInternal(), ns3::PointToPointHelper::EnableAsciiInternal(), ns3::LrWpanHelper::EnableAsciiInternal(), ns3::CsmaHelper::EnableAsciiInternal(), ns3::WifiPhyHelper::EnableAsciiInternal(), ns3::WimaxHelper::EnableAsciiInternal(), ns3::InternetStackHelper::EnableAsciiIpv4Internal(), ns3::InternetStackHelper::EnableAsciiIpv6Internal(), and ns3::AnimationInterface::EnablePacketMetadata().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ FindFirstMatchingByteTag()

◆ GetByteTagIterator()

ByteTagIterator ns3::Packet::GetByteTagIterator ( void  ) const

Returns an iterator over the set of byte tags included in this packet.

Returns
an iterator over the set of byte tags included in this packet.

Definition at line 840 of file packet.cc.

References ns3::ByteTagList::Begin(), GetSize(), and m_byteTagList.

Referenced by PacketTest::DoCheck(), Ipv4FragmentationTest::DoRun(), Ipv6FragmentationTest::DoRun(), FindFirstMatchingByteTag(), ns3::AnimationInterface::GetAnimUidFromPacket(), and PrintByteTags().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetNixVector()

Ptr< NixVector > ns3::Packet::GetNixVector ( void  ) const

Get the packet nix-vector.

See the comment on SetNixVector

Returns
the Nix vector

Definition at line 250 of file packet.cc.

References m_nixVector.

Referenced by CreateFragment().

+ Here is the caller graph for this function:

◆ GetPacketTagIterator()

PacketTagIterator ns3::Packet::GetPacketTagIterator ( void  ) const

Returns an object which can be used to iterate over the list of packet tags.

Returns
an object which can be used to iterate over the list of packet tags.

Definition at line 921 of file packet.cc.

References ns3::PacketTagList::Head(), and m_packetTagList.

Referenced by PrintPacketTags().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetSerializedSize()

uint32_t ns3::Packet::GetSerializedSize ( void  ) const

Returns number of bytes required for packet serialization.

Returns
number of bytes required for packet serialization

For packet serialization, the total size is checked in order to determine the size of the buffer required for serialization

Todo:
Serialze Tags size

Definition at line 585 of file packet.cc.

References ns3::NixVector::GetSerializedSize(), ns3::PacketMetadata::GetSerializedSize(), ns3::Buffer::GetSerializedSize(), m_buffer, m_metadata, and m_nixVector.

Referenced by LrWpanPacketTestCase::DoRun(), ns3::GrantedTimeWindowMpiInterface::SendPacket(), and ns3::NullMessageMpiInterface::SendPacket().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetSize()

uint32_t ns3::Packet::GetSize ( void  ) const
inline

Returns the the size in bytes of the packet (including the zero-filled initial payload).

Returns
the size in bytes of the packet

Definition at line 852 of file packet.h.

References ns3::Buffer::GetSize(), and m_buffer.

Referenced by ns3::PendingData::Add(), ns3::TcpRxBuffer::Add(), ns3::TcpTxBuffer::Add(), AddAtEnd(), AddByteTag(), ns3::SixLowPanNetDevice::Fragments::AddFragment(), ns3::CsmaNetDevice::AddHeader(), ns3::MpduAggregator::AddHeaderAndPad(), AddPaddingAtEnd(), ns3::TcpSocketBase::AddSocketTags(), AddTrailer(), ns3::MsduAggregator::Aggregate(), ns3::MpduAggregator::Aggregate(), ns3::BSSchedulerRtps::BSSchedulerBasicConnection(), ns3::BSSchedulerRtps::BSSchedulerBEConnection(), ns3::BSSchedulerRtps::BSSchedulerBroadcastConnection(), ns3::BSSchedulerRtps::BSSchedulerInitialRangingConnection(), ns3::BSSchedulerRtps::BSSchedulerNRTPSConnection(), ns3::BSSchedulerRtps::BSSchedulerPrimaryConnection(), ns3::TcpTxBuffer::BytesInFlightRFC(), ns3::EthernetTrailer::CalcFcs(), ns3::UanPhyPerUmodem::CalcPer(), ns3::UanPhyPerCommonModes::CalcPer(), ns3::dot11s::AirtimeLinkMetricCalculator::CalculateMetric(), ns3::LrWpanPhy::CalculateTxTime(), ns3::EthernetTrailer::CheckFcs(), ns3::LrWpanMacTrailer::CheckFcs(), ns3::dsr::DsrRouting::CheckSendBuffer(), ns3::Ipv4FlowClassifier::Classify(), ns3::Ipv6FlowClassifier::Classify(), ns3::EpcTftClassifier::Classify(), ClientEmbeddedObjectReceived(), ClientMainObjectReceived(), ClientRx(), ThreeGppHttpObjectTestCase::ClientRxEmbeddedObjectPacketCallback(), ThreeGppHttpObjectTestCase::ClientRxMainObjectPacketCallback(), ThreeGppHttpObjectTestCase::ClientTxEmbeddedObjectRequestCallback(), ThreeGppHttpObjectTestCase::ClientTxMainObjectRequestCallback(), ns3::SixLowPanNetDevice::CompressLowPanHc1(), ns3::SixLowPanNetDevice::CompressLowPanIphc(), ns3::SixLowPanNetDevice::CompressLowPanNhc(), ns3::SixLowPanNetDevice::CompressLowPanUdpNhc(), ns3::SimpleOfdmWimaxPhy::ConvertBurstToBits(), ns3::PendingData::CopyFromOffset(), ns3::TcpTxBuffer::CopyFromSequence(), DataIndication(), ns3::MsduAggregator::Deaggregate(), ns3::MpduAggregator::Deaggregate(), ns3::SixLowPanNetDevice::DecompressLowPanHc1(), ns3::SixLowPanNetDevice::DecompressLowPanIphc(), ns3::SixLowPanNetDevice::DecompressLowPanNhc(), ns3::SixLowPanNetDevice::DecompressLowPanUdpNhc(), ns3::WimaxMacQueue::Dequeue(), ns3::dsr::DsrSendBuffer::Dequeue(), ns3::dsr::DsrErrorBuffer::Dequeue(), ns3::dsr::DsrPassiveBuffer::Dequeue(), ns3::dsr::DsrMaintainBuffer::Dequeue(), ThreeGppHttpObjectTestCase::DeviceDropCallback(), ns3::TcpTxBuffer::DiscardUpTo(), ns3::TcpGeneralErrorModel::DoCorrupt(), ns3::RateErrorModel::DoCorruptBit(), ns3::RateErrorModel::DoCorruptByte(), ns3::TcpSocketBase::DoForwardUp(), ns3::Ipv4L3Protocol::DoFragmentation(), ns3::SixLowPanNetDevice::DoFragmentation(), ns3::LteRlcUm::DoNotifyTxOpportunity(), ns3::LteRlcAm::DoNotifyTxOpportunity(), ns3::LteRlcTm::DoNotifyTxOpportunity(), ns3::LteRlcSm::DoNotifyTxOpportunity(), ns3::BaseStationNetDevice::DoReceive(), ns3::SubscriberStationNetDevice::DoReceive(), ns3::LteTestPdcp::DoReceivePdcpPdu(), ns3::LteTestRrc::DoReceivePdcpSdu(), ns3::LteRlcUm::DoReceivePdu(), ns3::LteRlcAm::DoReceivePdu(), ns3::LteRlcTm::DoReceivePdu(), ns3::LtePdcp::DoReceivePdu(), ns3::LteRlcSm::DoReceivePdu(), ns3::LteEnbRrc::DoRecvUeData(), LrWpanPlmeAndPdInterfaceTestCase::DoRun(), LrWpanPacketTestCase::DoRun(), Ns3WimaxFragmentationTestCase::DoRun(), DsdvHeaderTestCase::DoRun(), SixlowpanFragmentationTest::DoRun(), SixlowpanHc1ImplTest::DoRun(), Ipv6ForwardingTest::DoRun(), UdpSocketLoopbackTest::DoRun(), Ipv6RipngTest::DoRun(), Ipv4ForwardingTest::DoRun(), Ipv4RipTest::DoRun(), SixlowpanIphcImplTest::DoRun(), Ipv4StaticRoutingSlash32TestCase::DoRun(), Ipv6RawSocketImplTest::DoRun(), Ipv4HeaderTest::DoRun(), Ipv4RawSocketImplTest::DoRun(), Ipv4FragmentationTest::DoRun(), Udp6SocketLoopbackTest::DoRun(), Ipv6FragmentationTest::DoRun(), OlsrHelloTestCase::DoRun(), UdpSocketImplTest::DoRun(), OlsrTcTestCase::DoRun(), TwoLevelAggregationTest::DoRun(), OlsrHnaTestCase::DoRun(), Ipv4RipCountToInfinityTest::DoRun(), Ipv6RipngCountToInfinityTest::DoRun(), PacketTest::DoRun(), Udp6SocketImplTest::DoRun(), Ipv4GlobalRoutingSlash32TestCase::DoRun(), ns3::MeshPointDevice::DoSend(), ns3::SixLowPanNetDevice::DoSend(), ns3::BaseStationNetDevice::DoSend(), ns3::SubscriberStationNetDevice::DoSend(), ns3::LteUeRrc::DoSendData(), Ipv4RawSocketImplTest::DoSendData_IpHdr(), Ipv4HeaderTest::DoSendData_IpHdr_Dscp(), ns3::dsr::DsrOptionRerr::DoSendError(), ns3::EpcX2::DoSendHandoverPreparationFailure(), ns3::EpcX2::DoSendHandoverRequest(), ns3::EpcX2::DoSendHandoverRequestAck(), ns3::EpcX2::DoSendLoadInformation(), ns3::EpcX2::DoSendResourceStatusUpdate(), ns3::EpcX2::DoSendSnStatusTransfer(), ns3::UdpSocketImpl::DoSendTo(), ns3::EpcX2::DoSendUeContextRelease(), ns3::EpcX2::DoSendUeData(), ns3::LteRlcUm::DoTransmitPdcpPdu(), ns3::LteRlcAm::DoTransmitPdcpPdu(), ns3::LteRlcTm::DoTransmitPdcpPdu(), ns3::LtePdcp::DoTransmitPdcpSdu(), ns3::LteTestMac::DoTransmitPdu(), ns3::Ipv4FlowProbe::DropLogger(), ns3::Ipv6FlowProbe::DropLogger(), dstSocketRecv(), ns3::LrWpanPhy::EndRx(), ns3::UanMacCw::Enqueue(), ns3::BaseStationNetDevice::Enqueue(), ns3::SubscriberStationNetDevice::Enqueue(), ns3::TapBridge::Filter(), ns3::TcpTxBuffer::FindHighestSacked(), ns3::Icmpv6L4Protocol::ForgeEchoRequest(), ns3::Icmpv6L4Protocol::ForgeNA(), ns3::Icmpv6L4Protocol::ForgeNS(), ns3::Icmpv6L4Protocol::ForgeRS(), ns3::MeshWifiInterfaceMac::ForwardDown(), ns3::Ipv4FlowProbe::ForwardLogger(), ns3::Ipv6FlowProbe::ForwardLogger(), ns3::dot11s::HwmpProtocolMac::ForwardPerr(), ns3::dot11s::HwmpProtocol::ForwardUnicast(), ns3::UdpSocketImpl::ForwardUp(), ns3::PacketSocket::ForwardUp(), ns3::FdNetDevice::ForwardUp(), ns3::TcpSocketBase::ForwardUp(), ns3::UdpSocketImpl::ForwardUp6(), ns3::TcpSocketBase::ForwardUp6(), ns3::Ipv4FlowProbe::ForwardUpLogger(), ns3::Ipv6FlowProbe::ForwardUpLogger(), ns3::PacketSizeMinMaxAvgTotalCalculator::FrameUpdate(), GetByteTagIterator(), ns3::WimaxMacQueue::GetFirstPacketPayloadSize(), ns3::Ipv6ExtensionFragment::GetFragments(), ns3::WifiRemoteStationManager::GetFragmentSize(), ns3::TcpTxBuffer::GetNewSegment(), ns3::MsduAggregator::GetNextAmsdu(), ns3::QosTxop::GetNextTxopFragmentSize(), ns3::WifiRemoteStationManager::GetNFragments(), ns3::QosTxop::GetNTxopFragment(), ns3::Ipv4L3Protocol::Fragments::GetPacket(), ns3::TcpTxBuffer::GetPacketFromList(), ns3::Ipv4L3Protocol::Fragments::GetPartialPacket(), ns3::WifiPhy::GetReceptionStatus(), ns3::TcpTxItem::GetSeqSize(), ns3::Icmpv6DestinationUnreachable::GetSerializedSize(), ns3::Icmpv6TooBig::GetSerializedSize(), ns3::Icmpv6TimeExceeded::GetSerializedSize(), ns3::Icmpv6ParameterError::GetSerializedSize(), ns3::Icmpv6OptionRedirected::GetSerializedSize(), ns3::ArpQueueDiscItem::GetSize(), ns3::Ipv4QueueDiscItem::GetSize(), ns3::Ipv6QueueDiscItem::GetSize(), ns3::PacketBurst::GetSize(), ns3::QueueItem::GetSize(), ns3::WifiMacQueueItem::GetSize(), ns3::GetSize(), GetString(), ns3::TcpTxBuffer::GetTransmittedSegment(), ns3::QosTxop::GetTxopFragmentOffset(), ns3::QosTxop::GetTxopFragmentSize(), ns3::QosTxop::GotAck(), ns3::Txop::GotAck(), ns3::Icmpv6L4Protocol::HandleDestinationUnreachable(), ns3::Icmpv6L4Protocol::HandleEchoRequest(), ns3::MacRxMiddle::HandleFragments(), ns3::Ipv6ExtensionFragment::HandleFragmentsTimeout(), ns3::Ipv4L3Protocol::HandleFragmentsTimeout(), ns3::UdpEchoServer::HandleRead(), ns3::PacketSocketServer::HandleRead(), ns3::UdpServer::HandleRead(), ns3::PacketSink::HandleRead(), ns3::Ping6::HandleRead(), ns3::UdpEchoClient::HandleRead(), Ipv4DynamicGlobalRoutingTestCase::HandleRead(), ns3::IsAmpdu(), ns3::TcpTxBuffer::IsLostRFC(), BlockAckAggregationDisabledTest::L7Receive(), ns3::Ipv4L3Protocol::LocalDeliver(), SpectrumWifiPhyBasicTest::MakeSignal(), WifiPhyThresholdsTest::MakeWifiSignal(), ns3::LrWpanMac::McpsDataRequest(), ns3::TcpTxBuffer::MergeItems(), ns3::QosTxop::MissedAck(), ns3::Txop::MissedAck(), ns3::Txop::MissedCfPollResponse(), ns3::QosTxop::NeedFragmentation(), ns3::WifiRemoteStationManager::NeedFragmentation(), ns3::WifiRemoteStationManager::NeedRetransmission(), ns3::WifiRemoteStationManager::NeedRts(), ns3::TcpTxBuffer::NextSeg(), ns3::QosTxop::NotifyAccessGranted(), ns3::Txop::NotifyAccessGranted(), ns3::QosTxop::NotifyInternalCollision(), TestInterBssConstantObssPdAlgo::NotifyPhyRxEnd(), TestInterBssConstantObssPdAlgo::NotifyPhyTxBegin(), RoutingHelper::OnOffTrace(), ns3::operator<<(), ns3::TcpL4Protocol::PacketReceived(), PacketRx(), ns3::PacketSizeMinMaxAvgTotalCalculator::PacketUpdate(), ns3::PcapSniffTxRxEvent(), ns3::MpduAggregator::PeekAmpduSubframes(), ns3::TcpSocketBase::PeerClose(), PhyRxEndOkTrace(), WifiPhyStats::PhyTxTrace(), TcpBytesInFlightTest::PktDropped(), ns3::LrWpanMac::PlmeSetTRXStateConfirm(), ns3::WifiMacQueueItem::Print(), ns3::dot11s::HwmpProtocol::ProactivePathResolved(), ns3::Ipv6ExtensionFragment::Process(), ns3::dsr::DsrOptionRreq::Process(), ns3::dsr::DsrOptionSR::Process(), ns3::dsr::DsrOptionRerr::Process(), ns3::Ipv4L3Protocol::ProcessFragment(), ns3::SixLowPanNetDevice::ProcessFragment(), ns3::Ipv6Extension::ProcessOptions(), ns3::TcpSocketBase::ProcessWait(), ns3::dsr::DsrRouting::PromiscReceive(), ns3::dot11s::HwmpProtocol::ReactivePathResolved(), ns3::NscTcpSocketImpl::ReadPendingData(), ns3::LteRlcUm::ReassembleAndDeliver(), ns3::LteRlcAm::ReassembleAndDeliver(), ns3::flame::FlameProtocolMac::Receive(), ns3::UanTransducerHd::Receive(), ns3::dot11s::PeerManagementProtocolMac::Receive(), ns3::V4Ping::Receive(), Receiver::Receive(), ns3::ArpL3Protocol::Receive(), ns3::NscTcpL4Protocol::Receive(), ns3::Ipv6L3Protocol::Receive(), ns3::Ipv4L3Protocol::Receive(), ns3::ApWifiMac::Receive(), ns3::CsmaNetDevice::Receive(), ns3::MeshWifiInterfaceMac::Receive(), ns3::LteTestMac::Receive(), ns3::ThreeGppHttpClient::Receive(), ns3::dsr::DsrRouting::Receive(), Bug730TestCase::Receive(), ChannelAccessTestCase::Receive(), QosFragmentationTestCase::Receive(), AnnexC_TestCase::Receive(), ns3::dot11s::HwmpProtocolMac::ReceiveAction(), ns3::TcpSocketBase::ReceivedAck(), ns3::dot11s::HwmpProtocolMac::ReceiveData(), TcpSocketHalfAck::ReceivedData(), ns3::TcpSocketBase::ReceivedData(), ns3::ThreeGppHttpServer::ReceivedDataCallback(), ns3::ThreeGppHttpClient::ReceivedDataCallback(), ns3::TapBridge::ReceiveFromBridgedDevice(), ns3::MeshPointDevice::ReceiveFromDevice(), ns3::SixLowPanNetDevice::ReceiveFromDevice(), ns3::UanMacRc::ReceiveOkFromPhy(), NetAnimExperiment::ReceivePacket(), ReceivePacket(), RoutingExperiment::ReceivePacket(), Experiment::ReceivePacket(), DsdvManetExample::ReceivePacket(), ns3::UanMacRcGw::ReceivePacket(), ns3::TcpGeneralTest::ReceivePacket(), PacketSocketAppsTest::ReceivePkt(), Ipv4StaticRoutingSlash32TestCase::ReceivePkt(), UdpSocketLoopbackTest::ReceivePkt(), Ipv6ForwardingTest::ReceivePkt(), Ipv6RipngTest::ReceivePkt(), Ipv4ForwardingTest::ReceivePkt(), Ipv4RipTest::ReceivePkt(), SixlowpanHc1ImplTest::ReceivePkt(), SixlowpanIphcImplTest::ReceivePkt(), Ipv4HeaderTest::ReceivePkt(), Ipv6RawSocketImplTest::ReceivePkt(), Ipv4RawSocketImplTest::ReceivePkt(), Udp6SocketLoopbackTest::ReceivePkt(), UdpSocketImplTest::ReceivePkt(), Ipv6RipngCountToInfinityTest::ReceivePkt(), Ipv4RipCountToInfinityTest::ReceivePkt(), Udp6SocketImplTest::ReceivePkt(), Ipv4GlobalRoutingSlash32TestCase::ReceivePkt(), Ipv6RawSocketImplTest::ReceivePkt2(), Ipv4RawSocketImplTest::ReceivePkt2(), UdpSocketImplTest::ReceivePkt2(), Udp6SocketImplTest::ReceivePkt2(), Ipv6RipngSplitHorizonStrategyTest::ReceivePktProbe(), Ipv4RipSplitHorizonStrategyTest::ReceivePktProbe(), ns3::olsr::HelloRegressionTest::ReceivePktProbeA(), ns3::olsr::TcRegressionTest::ReceivePktProbeA(), ns3::olsr::HelloRegressionTest::ReceivePktProbeB(), ns3::olsr::TcRegressionTest::ReceivePktProbeB(), ns3::olsr::TcRegressionTest::ReceivePktProbeC(), RoutingHelper::ReceiveRoutingPacket(), ns3::NscTcpSocketImpl::Recv(), ns3::Socket::Recv(), ns3::UdpSocketImpl::RecvFrom(), ns3::PacketSocket::RecvFrom(), ns3::TcpSocketBase::RecvFrom(), ns3::Socket::RecvFrom(), ns3::EpcPgwApplication::RecvFromTunDevice(), ns3::EpcX2::RecvFromX2cSocket(), ns3::EpcX2::RecvFromX2uSocket(), ns3::ThreeGppHttpClient::RequestEmbeddedObject(), ns3::ThreeGppHttpClient::RequestMainObject(), ns3::dot11s::HwmpProtocol::RequestRoute(), ns3::flame::FlameProtocol::RequestRoute(), ns3::TcpTxBuffer::ResetLastSegmentSent(), ns3::dsdv::RoutingProtocol::RouteOutput(), ns3::TcpCloseWithLossTestCase::Rx(), TcpZeroWindowTest::Rx(), NodeStatistics::RxCallback(), Ipv4PacketInfoTagTest::RxCb(), Ipv6PacketInfoTagTest::RxCb(), TestSimpleFrameCaptureModel::RxDropped(), TestAmpduReception::RxDropped(), TestAmpduReception::RxFailure(), AcousticModemEnergyTestCase::RxPacket(), UanTest::RxPacket(), TestSimpleFrameCaptureModel::RxSuccess(), TestAmpduReception::RxSuccess(), ns3::SSScheduler::Schedule(), ns3::UanMacRc::ScheduleData(), ns3::NscTcpSocketImpl::Send(), ns3::Ping6::Send(), ns3::LrWpanNetDevice::Send(), ns3::Radvd::Send(), ns3::Ipv6L3Protocol::Send(), ns3::Ipv4L3Protocol::Send(), ns3::dsr::DsrRouting::Send(), ns3::TcpSocketBase::Send(), ns3::Txop::SendCfFrame(), ns3::LteTestRrc::SendData(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::TcpSocketBase::SendDataPacket(), ns3::Icmpv6L4Protocol::SendEchoReply(), ns3::Icmpv6L4Protocol::SendErrorDestinationUnreachable(), ns3::Icmpv6L4Protocol::SendErrorParameterError(), ns3::Icmpv6L4Protocol::SendErrorTimeExceeded(), ns3::Icmpv6L4Protocol::SendErrorTooBig(), ns3::SimpleNetDevice::SendFrom(), ns3::FdNetDevice::SendFrom(), ns3::MeshWifiInterfaceMac::SendManagementFrame(), ns3::Icmpv6L4Protocol::SendMessage(), ns3::Icmpv6L4Protocol::SendNA(), ns3::Icmpv6L4Protocol::SendNS(), SendOnePacket(), ns3::Ipv4FlowProbe::SendOutgoingLogger(), ns3::Ipv6FlowProbe::SendOutgoingLogger(), TestThresholdPreambleDetectionWithoutFrameCapture::SendPacket(), ns3::WifiPhy::SendPacket(), ns3::UanMacRcGw::SendPacket(), ns3::UanPhyGen::SendPacket(), ns3::UanMacRc::SendPacket(), ns3::olsr::RoutingProtocol::SendPacket(), TestThresholdPreambleDetectionWithFrameCapture::SendPacket(), TestSimpleFrameCaptureModel::SendPacket(), TestPhyHeadersReception::SendPacket(), ns3::dsr::DsrRouting::SendPacketFromBuffer(), ns3::TcpL4Protocol::SendPacketV4(), ns3::TcpL4Protocol::SendPacketV6(), ns3::dot11s::PeerManagementProtocolMac::SendPeerLinkManagementFrame(), ns3::dot11s::HwmpProtocolMac::SendPrep(), ns3::dot11s::HwmpProtocolMac::SendPreq(), ns3::olsr::RoutingProtocol::SendQueuedMessages(), ns3::Ipv4L3Protocol::SendRealOut(), ns3::Ipv6L3Protocol::SendRealOut(), ns3::Icmpv6L4Protocol::SendRedirection(), ns3::Icmpv6L4Protocol::SendRS(), ns3::Ipv4RawSocketImpl::SendTo(), ns3::Ipv6RawSocketImpl::SendTo(), ns3::PacketSocket::SendTo(), ns3::EpcEnbApplication::SendToLteSocket(), ns3::EpcSgwApplication::SendToS1uSocket(), ns3::EpcEnbApplication::SendToS1uSocket(), ns3::EpcPgwApplication::SendToS5uSocket(), ns3::EpcSgwApplication::SendToS5uSocket(), ns3::EpcPgwApplication::SendToTunDevice(), ns3::dsdv::RoutingProtocol::SendTriggeredUpdate(), ns3::dsr::DsrRouting::SendUnreachError(), ns3::Icmpv6DestinationUnreachable::Serialize(), ns3::Icmpv6TooBig::Serialize(), ns3::Icmpv6TimeExceeded::Serialize(), ns3::Icmpv6ParameterError::Serialize(), ns3::Icmpv6OptionRedirected::Serialize(), ThreeGppHttpObjectTestCase::ServerRxCallback(), ServerTx(), ns3::LrWpanMacTrailer::SetFcs(), ns3::Icmpv6DestinationUnreachable::SetPacket(), ns3::Icmpv6TooBig::SetPacket(), ns3::Icmpv6TimeExceeded::SetPacket(), ns3::Icmpv6ParameterError::SetPacket(), ns3::Icmpv6OptionRedirected::SetPacket(), ns3::PacketProbe::SetValue(), ns3::Ipv4PacketProbe::SetValue(), ns3::ApplicationPacketProbe::SetValue(), ns3::Ipv6PacketProbe::SetValue(), SinkRx(), Ns3TcpSocketTestCase1::SinkRx(), Ns3TcpNoDelayTestCase::SinkRx(), NscTcpLossTestCase1::SinkRx(), Ns3TcpSocketTestCase2::SinkRx(), NscTcpLossTestCase2::SinkRx(), SocketPrinter(), SocketRx(), TestUtils::sprintPacketContentsBin(), ns3::TestUtils::sprintPacketContentsBin(), TestUtils::sprintPacketContentsHex(), ns3::TestUtils::sprintPacketContentsHex(), srcSocketRecv(), ns3::ShannonSpectrumErrorModel::StartRx(), ns3::UanPhyGen::StartRxPacket(), ns3::HalfDuplexIdealPhy::StartTx(), PowerRateAdaptationTest::TestAparf(), PowerRateAdaptationTest::TestParf(), PowerRateAdaptationTest::TestRrpaa(), ns3::PyViz::TraceDevQueueDrop(), ns3::PyViz::TraceNetDevRxCommon(), ns3::PyViz::TraceNetDevTxCommon(), ns3::PacketProbe::TraceSink(), ns3::ApplicationPacketProbe::TraceSink(), ns3::Ipv4PacketProbe::TraceSink(), ns3::Ipv6PacketProbe::TraceSink(), ns3::UanTransducerHd::Transmit(), QosFragmentationTestCase::Transmit(), ns3::SimpleNetDevice::TransmitComplete(), ns3::PointToPointNetDevice::TransmitStart(), ns3::CsmaNetDevice::TransmitStart(), ns3::TcpCloseWithLossTestCase::Tx(), TcpZeroWindowTest::Tx(), TcpFastRetrTest::Tx(), TcpBytesInFlightTest::Tx(), ns3::TcpTxBuffer::UpdateLostCount(), ns3::dot11s::HwmpProtocolMac::UpdateOutcomingFrame(), ns3::flame::FlameProtocolMac::UpdateOutcomingFrame(), ns3::WifiPsdu::WifiPsdu(), ns3::PcapFile::Write(), and ns3::TcpTxBuffer::~TcpTxBuffer().

+ Here is the call graph for this function:

◆ GetUid()

uint64_t ns3::Packet::GetUid ( void  ) const

Returns the packet's Uid.

A packet is allocated a new uid when it is created empty or with zero-filled payload.

Note: This uid is an internal uid and cannot be counted on to provide an accurate counter of how many "simulated packets" of a particular protocol are in the system. It is not trivial to make this uid into such a counter, because of questions such as what should the uid be when the packet is sent over broadcast media, or when fragmentation occurs. If a user wants to trace actual packet counts, he or she should look at e.g. the IP ID field or transport sequence numbers, or other packet or frame counters at other protocol layers.

Returns
an integer identifier which uniquely identifies this packet.

Definition at line 390 of file packet.cc.

References ns3::PacketMetadata::GetUid(), and m_metadata.

Referenced by ns3::dsr::DsrPassiveBuffer::AllEqual(), LteIpv6RoutingTestCase::Checker(), ns3::dsdv::RoutingProtocol::DeferredRouteOutput(), ns3::aodv::RoutingProtocol::DeferredRouteOutput(), ns3::ListErrorModel::DoCorrupt(), CobaltQueueDiscBasicEnqueueDequeue::DoRun(), CoDelQueueDiscBasicEnqueueDequeue::DoRun(), PrioQueueDiscTestCase::DoRun(), FifoQueueDiscTestCase::DoRunFifoTest(), ns3::dsdv::RoutingProtocol::Drop(), ns3::dsr::DsrSendBuffer::Drop(), ns3::aodv::RequestQueue::Drop(), ns3::dsdv::PacketQueue::Drop(), ns3::dsr::DsrErrorBuffer::Drop(), ns3::dsr::DsrPassiveBuffer::Drop(), ns3::dsr::DsrErrorBuffer::DropLink(), ns3::dsr::DsrPassiveBuffer::DropLink(), LteIpv6RoutingTestCase::EnbToPgw(), ns3::dsr::DsrSendBuffer::Enqueue(), ns3::dsdv::PacketQueue::Enqueue(), ns3::aodv::RequestQueue::Enqueue(), ns3::dsr::DsrErrorBuffer::Enqueue(), ns3::dsr::DsrPassiveBuffer::Enqueue(), ns3::BridgeNetDevice::ForwardBroadcast(), ns3::aodv::RoutingProtocol::Forwarding(), ns3::BridgeNetDevice::ForwardUnicast(), ns3::PacketSocket::ForwardUp(), ns3::Icmpv6L4Protocol::HandleNS(), ns3::UdpServer::HandleRead(), ns3::aodv::DuplicatePacketDetection::IsDuplicate(), InterferenceExperiment::PacketDropped(), ns3::dsr::DsrRouting::PacketNewRoute(), ns3::dsr::DsrRouting::PromiscReceive(), ns3::CsmaChannel::PropagationCompleteEvent(), ns3::CsmaNetDevice::Receive(), ns3::dsr::DsrRouting::Receive(), ns3::TapBridge::ReceiveFromBridgedDevice(), ns3::MeshPointDevice::ReceiveFromDevice(), ns3::BridgeNetDevice::ReceiveFromDevice(), ns3::SixLowPanNetDevice::ReceiveFromDevice(), ns3::Node::ReceiveFromDevice(), ns3::aodv::RoutingProtocol::RecvAodv(), ns3::aodv::RoutingProtocol::RouteInput(), ns3::dsdv::RoutingProtocol::RouteInput(), ns3::dsdv::RoutingProtocol::RouteOutput(), RedQueueDiscTestCase::RunRedTest(), TbfQueueDiscTestCase::RunTbfTest(), ns3::UdpClient::Send(), EpsBearerTagUdpClient::Send(), ns3::PointToPointNetDevice::Send(), ns3::dsr::DsrRouting::Send(), ns3::FdNetDevice::SendFrom(), ns3::CsmaNetDevice::SendFrom(), ns3::dsdv::RoutingProtocol::SendPeriodicUpdate(), ns3::aodv::RoutingProtocol::SendReplyByIntermediateNode(), ns3::dsdv::RoutingProtocol::SendTriggeredUpdate(), ns3::dsr::DsrRouting::SendUnreachError(), ns3::PyViz::TraceDevQueueDrop(), ns3::PyViz::TraceNetDevRxCommon(), ns3::PyViz::TraceNetDevRxWifi(), ns3::PyViz::TraceNetDevTxCommon(), ns3::PyViz::TraceNetDevTxWifi(), ns3::CsmaNetDevice::TransmitAbort(), ns3::CsmaNetDevice::TransmitCompleteEvent(), ns3::CsmaChannel::TransmitEnd(), ns3::PointToPointRemoteChannel::TransmitStart(), ns3::PointToPointChannel::TransmitStart(), ns3::CsmaChannel::TransmitStart(), ns3::PointToPointNetDevice::TransmitStart(), ns3::CsmaNetDevice::TransmitStart(), and LteIpv6RoutingTestCase::TunToPgw().

+ Here is the call graph for this function:

◆ operator=()

Packet & ns3::Packet::operator= ( const Packet o)

Basic assignment.

Parameters
oobject to copy
Returns
the copied object

Definition at line 156 of file packet.cc.

References ns3::NixVector::Copy(), m_buffer, m_byteTagList, m_metadata, m_nixVector, and m_packetTagList.

+ Here is the call graph for this function:

◆ PeekHeader() [1/2]

uint32_t ns3::Packet::PeekHeader ( Header header) const

Deserialize but does not remove the header from the internal buffer.

s This method invokes Header::Deserialize.

Parameters
headera reference to the header to read from the internal buffer.
Returns
the number of bytes read from the packet.

Definition at line 290 of file packet.cc.

References ns3::Buffer::Begin(), ns3::Header::Deserialize(), ns3::ObjectBase::GetInstanceTypeId(), ns3::TypeId::GetName(), m_buffer, and NS_LOG_FUNCTION.

Referenced by ns3::UanPhyCalcSinrDual::CalcSinrDb(), ns3::SixLowPanNetDevice::CompressLowPanHc1(), ns3::SixLowPanNetDevice::CompressLowPanIphc(), ns3::SixLowPanNetDevice::CompressLowPanNhc(), ns3::SixLowPanNetDevice::CompressLowPanUdpNhc(), ns3::LteUeRrcProtocolReal::DoReceivePdcpPdu(), ns3::LteEnbRrcProtocolReal::DoReceivePdcpPdu(), ns3::LteUeRrcProtocolReal::DoReceivePdcpSdu(), ns3::LteEnbRrcProtocolReal::DoReceivePdcpSdu(), ns3::LteRlcUm::DoReceivePdu(), ns3::LteRlcAm::DoReceivePdu(), LteIpv6RoutingTestCase::EnbToPgw(), ns3::TapBridge::Filter(), ns3::Ipv4RawSocketImpl::ForwardUp(), ns3::Ipv6RawSocketImpl::ForwardUp(), ns3::TcpSocketBase::ForwardUp(), ns3::TcpSocketBase::ForwardUp6(), ns3::GetTid(), ns3::QosTxop::GotAck(), ns3::Icmpv4L4Protocol::HandleDestUnreach(), ns3::Icmpv4L4Protocol::HandleTimeExceeded(), ns3::Ipv6QueueDiscItem::Hash(), ns3::Ipv4QueueDiscItem::Hash(), ns3::IsAmpdu(), ns3::UanMacRc::IsPhy1Ok(), ns3::AnimationInterface::LrWpanPhyTxBeginTrace(), ns3::QosTxop::MissedAck(), ns3::QosTxop::MissedBlockAck(), ns3::QosTxop::NeedBarRetransmission(), WifiAcMappingTest::PacketEnqueuedInWifiMacQueue(), ns3::TcpL4Protocol::PacketReceived(), ns3::LrWpanMac::PdDataConfirm(), ns3::LrWpanMac::PdDataIndication(), ns3::MpduAggregator::PeekAmpduSubframes(), ns3::MpduAggregator::PeekMpduInAmpduSubframe(), NodeStatistics::PhyCallback(), OcbWifiMacTestCase::PhyTxTrace(), WaveNetDeviceExample::Receive(), ns3::LteNetDevice::Receive(), ns3::OcbWifiMac::Receive(), ns3::MeshWifiInterfaceMac::Receive(), ns3::UdpL4Protocol::Receive(), BlockAckAggregationDisabledTest::Receive(), LteIpv6RoutingTestCase::ReceivedAtClient(), ns3::ThreeGppHttpServer::ReceivedDataCallback(), ns3::UanMacRcGw::ReceivePacket(), Ipv4HeaderTest::ReceivePkt(), ns3::EpcSgwApplication::RecvFromS11Socket(), ns3::EpcMmeApplication::RecvFromS11Socket(), ns3::EpcPgwApplication::RecvFromS5cSocket(), ns3::EpcSgwApplication::RecvFromS5cSocket(), ns3::EpcPgwApplication::RecvFromTunDevice(), ns3::aodv::RoutingProtocol::RouteInput(), ns3::UanMacRcGw::SendPacket(), ns3::UanMacRc::SendPacket(), LteIpv6RoutingTestCase::SentAtClient(), SinkRx(), ns3::PyViz::TraceNetDevPromiscRxCsma(), ns3::PyViz::TraceNetDevRxCsma(), ns3::PyViz::TraceNetDevRxWifi(), ns3::PyViz::TraceNetDevTxCsma(), ns3::PyViz::TraceNetDevTxWifi(), BlockAckAggregationDisabledTest::Transmit(), QosFragmentationTestCase::Transmit(), LteIpv6RoutingTestCase::TunToPgw(), TxCallback(), ns3::dot11s::PeerManagementProtocolMac::UpdateOutcomingFrame(), ns3::AnimationInterface::WavePhyRxBeginTrace(), and ns3::AnimationInterface::WifiPhyRxBeginTrace().

+ Here is the call graph for this function:

◆ PeekHeader() [2/2]

uint32_t ns3::Packet::PeekHeader ( Header header,
uint32_t  size 
) const

Deserialize but does not remove the header from the internal buffer.

s This method invokes Header::Deserialize (begin, end) and should be used for variable-length headers (where the size is determined somehow by the caller).

Parameters
headera reference to the header to read from the internal buffer.
sizenumber of bytes to deserialize
Returns
the number of bytes read from the packet.

Definition at line 297 of file packet.cc.

References ns3::Buffer::Begin(), ns3::Header::Deserialize(), ns3::ObjectBase::GetInstanceTypeId(), ns3::TypeId::GetName(), m_buffer, ns3::Buffer::Iterator::Next(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ PeekPacketTag()

◆ PeekTrailer()

uint32_t ns3::Packet::PeekTrailer ( Trailer trailer)

Deserialize but does not remove a trailer from the internal buffer.

This method invokes the Trailer::Deserialize method.

Parameters
trailera reference to the trailer to read from the internal buffer.
Returns
the number of bytes read from the end of the packet.

Definition at line 327 of file packet.cc.

References ns3::Trailer::Deserialize(), ns3::Buffer::End(), ns3::ObjectBase::GetInstanceTypeId(), ns3::TypeId::GetName(), m_buffer, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ Print()

void ns3::Packet::Print ( std::ostream &  os) const

Print the packet contents.

Parameters
osoutput stream in which the data should be printed.

Iterate over the headers and trailers present in this packet, from the first header to the last trailer and invoke, for each of them, the user-provided method Header::DoPrint or Trailer::DoPrint methods.

Definition at line 434 of file packet.cc.

References ns3::PacketMetadata::BeginItem(), ns3::PacketMetadata::Item::current, ns3::PacketMetadata::Item::currentSize, ns3::PacketMetadata::Item::currentTrimedFromStart, ns3::Chunk::Deserialize(), ns3::ObjectBase::GetAttribute(), ns3::TypeId::GetAttributeN(), ns3::TypeId::GetConstructor(), ns3::TypeId::GetName(), ns3::TypeId::HasConstructor(), ns3::PacketMetadata::ItemIterator::HasNext(), ns3::PacketMetadata::Item::HEADER, ns3::PacketMetadata::Item::isFragment, m_buffer, m_metadata, ns3::Buffer::Iterator::Next(), ns3::PacketMetadata::ItemIterator::Next(), NS_ASSERT, ns3::PacketMetadata::Item::PAYLOAD, ns3::Chunk::Print(), visualizer.core::start(), ns3::PacketMetadata::Item::tid, ns3::PacketMetadata::Item::TRAILER, and ns3::PacketMetadata::Item::type.

Referenced by ns3::Ipv4L3Protocol::DoFragmentation(), LrWpanPacketTestCase::DoRun(), ns3::Ipv6ExtensionFragment::GetFragments(), ns3::AnimationInterface::GetPacketMetadata(), ns3::operator<<(), LrWpanCcaTestCase::PhyRxBegin(), LrWpanCcaTestCase::PhyRxDrop(), LrWpanCcaTestCase::PhyRxEnd(), LrWpanCcaTestCase::PhyTxBegin(), LrWpanCcaTestCase::PhyTxEnd(), and ToString().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ PrintByteTags()

void ns3::Packet::PrintByteTags ( std::ostream &  os) const

Iterate over the byte tags present in this packet, and invoke the Print method of each tag stored in the packet.

Parameters
osoutput stream in which the data should be printed.

Definition at line 396 of file packet.cc.

References GetByteTagIterator(), ns3::TypeId::GetConstructor(), ns3::ByteTagIterator::Item::GetEnd(), ns3::TypeId::GetName(), ns3::ByteTagIterator::Item::GetStart(), ns3::ByteTagIterator::Item::GetTag(), ns3::ByteTagIterator::Item::GetTypeId(), ns3::ByteTagIterator::HasNext(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::ByteTagIterator::Next(), NS_ASSERT, and ns3::Tag::Print().

+ Here is the call graph for this function:

◆ PrintPacketTags()

void ns3::Packet::PrintPacketTags ( std::ostream &  os) const

◆ RemoveAllByteTags()

◆ RemoveAllPacketTags()

◆ RemoveAtEnd()

void ns3::Packet::RemoveAtEnd ( uint32_t  size)

Remove size bytes from the end of the current packet.

It is safe to remove more bytes than are present in the packet.

Parameters
sizenumber of bytes from remove

Definition at line 355 of file packet.cc.

References m_buffer, m_metadata, NS_LOG_FUNCTION, ns3::PacketMetadata::RemoveAtEnd(), and ns3::Buffer::RemoveAtEnd().

Referenced by PacketTest::DoRun(), ns3::Ipv6ExtensionFragment::Process(), ns3::Ipv6L3Protocol::Receive(), ns3::Ipv4L3Protocol::Receive(), ns3::CsmaNetDevice::Receive(), and TcpSocketHalfAck::ReceivedData().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ RemoveAtStart()

void ns3::Packet::RemoveAtStart ( uint32_t  size)

◆ RemoveHeader() [1/2]

uint32_t ns3::Packet::RemoveHeader ( Header header)

Deserialize and remove the header from the internal buffer.

This method invokes Header::Deserialize (begin) and should be used for fixed-length headers.

Parameters
headera reference to the header to remove from the internal buffer.
Returns
the number of bytes removed from the packet.

Definition at line 280 of file packet.cc.

References ns3::ByteTagList::Adjust(), ns3::Buffer::Begin(), ns3::Header::Deserialize(), ns3::ObjectBase::GetInstanceTypeId(), ns3::TypeId::GetName(), m_buffer, m_byteTagList, m_metadata, NS_LOG_FUNCTION, ns3::Buffer::RemoveAtStart(), and ns3::PacketMetadata::RemoveHeader().

Referenced by ns3::dsr::DsrRouting::AddAckReqHeader(), benchA(), benchD(), benchFragment(), C1(), C2(), ns3::dsr::DsrRouting::CancelPacketTimerNextHop(), LteIpv6RoutingTestCase::Checker(), ns3::dsr::DsrRouting::CheckSendBuffer(), ns3::IpcsClassifier::Classify(), ClientEmbeddedObjectReceived(), ClientMainObjectReceived(), ns3::SixLowPanNetDevice::CompressLowPanHc1(), ns3::SixLowPanNetDevice::CompressLowPanIphc(), ns3::SixLowPanNetDevice::CompressLowPanNhc(), ns3::SixLowPanNetDevice::CompressLowPanUdpNhc(), ns3::MsduAggregator::Deaggregate(), ns3::MpduAggregator::Deaggregate(), ns3::SixLowPanNetDevice::DecompressLowPanHc1(), ns3::SixLowPanNetDevice::DecompressLowPanIphc(), ns3::SixLowPanNetDevice::DecompressLowPanNhc(), ns3::SixLowPanNetDevice::DecompressLowPanUdpNhc(), ns3::TcpGeneralErrorModel::DoCorrupt(), ns3::LteEnbRrcProtocolIdeal::DoDecodeHandoverCommand(), ns3::LteEnbRrcProtocolReal::DoDecodeHandoverCommand(), ns3::LteEnbRrcProtocolIdeal::DoDecodeHandoverPreparationInformation(), ns3::LteEnbRrcProtocolReal::DoDecodeHandoverPreparationInformation(), ns3::TcpSocketBase::DoForwardUp(), ns3::LteRlcAm::DoNotifyTxOpportunity(), ns3::BaseStationNetDevice::DoReceive(), ns3::SubscriberStationNetDevice::DoReceive(), ns3::LteUeRrcProtocolReal::DoReceivePdcpPdu(), ns3::LteEnbRrcProtocolReal::DoReceivePdcpPdu(), ns3::LteUeRrcProtocolReal::DoReceivePdcpSdu(), ns3::LteEnbRrcProtocolReal::DoReceivePdcpSdu(), ns3::LtePdcp::DoReceivePdu(), ns3::EpcSgwApplication::DoRecvCreateSessionRequest(), ns3::EpcPgwApplication::DoRecvCreateSessionRequest(), ns3::EpcMmeApplication::DoRecvCreateSessionResponse(), ns3::EpcSgwApplication::DoRecvCreateSessionResponse(), ns3::EpcSgwApplication::DoRecvDeleteBearerCommand(), ns3::EpcPgwApplication::DoRecvDeleteBearerCommand(), ns3::EpcMmeApplication::DoRecvDeleteBearerRequest(), ns3::EpcSgwApplication::DoRecvDeleteBearerRequest(), ns3::EpcSgwApplication::DoRecvDeleteBearerResponse(), ns3::EpcPgwApplication::DoRecvDeleteBearerResponse(), ns3::EpcSgwApplication::DoRecvModifyBearerRequest(), ns3::EpcPgwApplication::DoRecvModifyBearerRequest(), ns3::EpcMmeApplication::DoRecvModifyBearerResponse(), ns3::EpcSgwApplication::DoRecvModifyBearerResponse(), FlameHeaderTest::DoRun(), LrWpanPacketTestCase::DoRun(), DsaRequestTestCase::DoRun(), Ns3WimaxFragmentationTestCase::DoRun(), MeshHeaderTest::DoRun(), MeshInformationElementVectorBist::DoRun(), EpsGtpuHeaderTestCase::DoRun(), OlsrMidTestCase::DoRun(), DsdvHeaderTestCase::DoRun(), ns3::RlcAmStatusPduTestCase::DoRun(), Ns3WimaxSfTlvTestCase::DoRun(), OlsrHelloTestCase::DoRun(), PeerLinkFrameStartTest::DoRun(), OlsrTcTestCase::DoRun(), ns3::aodv::RrepAckHeaderTest::DoRun(), OlsrHnaTestCase::DoRun(), RrcConnectionRequestTestCase::DoRun(), RrcConnectionSetupTestCase::DoRun(), RrcConnectionSetupCompleteTestCase::DoRun(), PacketTest::DoRun(), RrcConnectionReconfigurationCompleteTestCase::DoRun(), RrcConnectionReconfigurationTestCase::DoRun(), HandoverPreparationInfoTestCase::DoRun(), RrcConnectionReestablishmentRequestTestCase::DoRun(), RrcConnectionReestablishmentTestCase::DoRun(), RrcConnectionReestablishmentCompleteTestCase::DoRun(), RrcConnectionRejectTestCase::DoRun(), MeasurementReportTestCase::DoRun(), ns3::dsr::DsrOptionRerr::DoSendError(), ns3::Rip::DoSendRouteUpdate(), ns3::RipNg::DoSendRouteUpdate(), ns3::LteTestMac::DoTransmitPdu(), ns3::TapBridge::Filter(), ns3::WifiNetDevice::ForwardUp(), ns3::FdNetDevice::ForwardUp(), ns3::WimaxNetDevice::ForwardUp(), ns3::WaveNetDevice::ForwardUp(), ns3::Ipv6ExtensionFragment::GetFragments(), ns3::WifiPhyHelper::GetRadiotapHeader(), ns3::GetTid(), ns3::QosTxop::GotAck(), ns3::Icmpv6L4Protocol::HandleDestinationUnreachable(), ns3::Icmpv4L4Protocol::HandleEcho(), ns3::Icmpv6L4Protocol::HandleEchoRequest(), ns3::Icmpv6L4Protocol::HandleNA(), ns3::Icmpv6L4Protocol::HandleNS(), ns3::Icmpv6L4Protocol::HandlePacketTooBig(), ns3::Icmpv6L4Protocol::HandleParameterError(), ns3::Icmpv6L4Protocol::HandleRA(), ns3::UdpServer::HandleRead(), ns3::Ping6::HandleRead(), ns3::Radvd::HandleRead(), ns3::Icmpv6L4Protocol::HandleRedirection(), ns3::Rip::HandleRequests(), ns3::RipNg::HandleRequests(), ns3::Icmpv6L4Protocol::HandleRS(), ns3::Icmpv6L4Protocol::HandleTimeExceeded(), Ns3TcpStateTestCase::Ipv4L3Rx(), Ns3TcpLossTestCase::Ipv4L3Tx(), Ns3TcpStateTestCase::Ipv4L3Tx(), Ns3TcpInteroperabilityTestCase::Ipv4L3Tx(), ns3::DhcpServer::NetHandler(), ns3::DhcpClient::NetHandler(), ns3::AlohaNoackNetDevice::NotifyReceptionEndOk(), WifiAcMappingTest::PacketEnqueuedInWifiMacQueue(), ns3::LrWpanMac::PdDataIndication(), ns3::UanMacCw::PhyRxPacketGood(), ns3::Ipv6OptionPad1::Process(), ns3::Ipv6OptionPadn::Process(), ns3::Ipv6ExtensionHopByHop::Process(), ns3::Ipv6OptionJumbogram::Process(), ns3::Ipv6ExtensionDestination::Process(), ns3::Ipv6OptionRouterAlert::Process(), ns3::Ipv6ExtensionFragment::Process(), ns3::dsr::DsrOptionPad1::Process(), ns3::dsr::DsrOptionPadn::Process(), ns3::dsr::DsrOptionRrep::Process(), ns3::dsr::DsrOptionSR::Process(), ns3::dsr::DsrOptionRerr::Process(), ns3::dsr::DsrOptionAckReq::Process(), ns3::dsr::DsrOptionAck::Process(), ns3::Ipv6ExtensionLooseRouting::Process(), ns3::UanMacRc::ProcessAck(), ns3::SixLowPanNetDevice::ProcessFragment(), ns3::PointToPointNetDevice::ProcessHeader(), ns3::dsr::DsrRouting::PromiscReceive(), ns3::LteRlcUm::ReassembleAndDeliver(), ns3::LteRlcAm::ReassembleAndDeliver(), ns3::olsr::Bug780Test::Receive(), ns3::dot11s::PeerManagementProtocolMac::Receive(), ns3::Icmpv4L4Protocol::Receive(), ns3::V4Ping::Receive(), ns3::Ipv6L3Protocol::Receive(), ns3::Ipv4L3Protocol::Receive(), ns3::ApWifiMac::Receive(), ns3::CsmaNetDevice::Receive(), ns3::OcbWifiMac::Receive(), ns3::StaWifiMac::Receive(), ns3::UdpL4Protocol::Receive(), ns3::Rip::Receive(), ns3::RipNg::Receive(), ns3::ThreeGppHttpClient::Receive(), ns3::RegularWifiMac::Receive(), ns3::dsr::DsrRouting::Receive(), ns3::dot11s::HwmpProtocolMac::ReceiveAction(), ns3::dot11s::HwmpProtocolMac::ReceiveData(), ns3::SixLowPanNetDevice::ReceiveFromDevice(), ns3::MacLow::ReceiveOk(), ns3::UanMacRc::ReceiveOkFromPhy(), ns3::UanMacRcGw::ReceivePacket(), Ipv6RipngSplitHorizonStrategyTest::ReceivePktProbe(), Ipv4RipSplitHorizonStrategyTest::ReceivePktProbe(), ns3::olsr::HelloRegressionTest::ReceivePktProbeA(), ns3::olsr::TcRegressionTest::ReceivePktProbeA(), ns3::olsr::HelloRegressionTest::ReceivePktProbeB(), ns3::olsr::TcRegressionTest::ReceivePktProbeB(), ns3::olsr::TcRegressionTest::ReceivePktProbeC(), ns3::aodv::RoutingProtocol::RecvAodv(), ns3::aodv::RoutingProtocol::RecvError(), ns3::EpcSgwApplication::RecvFromS1uSocket(), ns3::EpcEnbApplication::RecvFromS1uSocket(), ns3::EpcPgwApplication::RecvFromS5uSocket(), ns3::EpcSgwApplication::RecvFromS5uSocket(), ns3::EpcX2::RecvFromX2cSocket(), ns3::EpcX2::RecvFromX2uSocket(), ns3::aodv::RoutingProtocol::RecvReply(), ns3::aodv::RoutingProtocol::RecvRequest(), ns3::LrWpanMac::RemoveFirstTxQElement(), ns3::flame::FlameProtocol::RemoveRoutingStuff(), ns3::flame::FlameProtocol::RequestRoute(), ns3::dsr::DsrRouting::RouteRequestTimerExpire(), Bug2831TestCase::RxCallback(), Bug2470TestCase::RxCallback(), Bug2470TestCase::RxDropCallback(), ns3::UanMacAloha::RxPacketGood(), ns3::dsr::DsrRouting::SalvagePacket(), ns3::dsr::DsrRouting::SendPacketFromBuffer(), ns3::Ipv4RawSocketImpl::SendTo(), ns3::Ipv6RawSocketImpl::SendTo(), and ns3::WifiPhy::StartReceivePreamble().

+ Here is the call graph for this function:

◆ RemoveHeader() [2/2]

uint32_t ns3::Packet::RemoveHeader ( Header header,
uint32_t  size 
)

Deserialize and remove the header from the internal buffer.

This method invokes Header::Deserialize (begin, end) and should be used for variable-length headers (where the size is determined somehow by the caller).

Parameters
headera reference to the header to remove from the internal buffer.
sizenumber of bytes to deserialize
Returns
the number of bytes removed from the packet.

Definition at line 267 of file packet.cc.

References ns3::ByteTagList::Adjust(), ns3::Buffer::Begin(), ns3::Header::Deserialize(), ns3::ObjectBase::GetInstanceTypeId(), ns3::TypeId::GetName(), m_buffer, m_byteTagList, m_metadata, ns3::Buffer::Iterator::Next(), NS_LOG_FUNCTION, ns3::Buffer::RemoveAtStart(), and ns3::PacketMetadata::RemoveHeader().

+ Here is the call graph for this function:

◆ RemovePacketTag()

bool ns3::Packet::RemovePacketTag ( Tag tag)

Remove a packet tag.

Parameters
tagthe packet tag type to remove from this packet. The tag parameter is set to the value of the tag found.
Returns
true if the requested tag is found, false otherwise.

Definition at line 870 of file packet.cc.

References ns3::ObjectBase::GetInstanceTypeId(), ns3::TypeId::GetName(), ns3::Tag::GetSerializedSize(), m_packetTagList, NS_LOG_FUNCTION, and ns3::PacketTagList::Remove().

Referenced by benchD(), ns3::TcpSocketBase::DoForwardUp(), ns3::LteRlcUm::DoNotifyTxOpportunity(), ns3::LteRlcAm::DoNotifyTxOpportunity(), ns3::LteUeMac::DoReceivePhyPdu(), ns3::LteEnbMac::DoReceivePhyPdu(), PacketTest::DoRun(), ns3::UdpSocketImpl::DoSendTo(), ns3::MeshWifiInterfaceMac::ForwardDown(), ns3::Ipv4RawSocketImpl::ForwardUp(), ns3::Ipv6RawSocketImpl::ForwardUp(), ns3::UdpSocketImpl::ForwardUp(), ns3::PacketSocket::ForwardUp(), ns3::UdpSocketImpl::ForwardUp6(), ns3::Radvd::HandleRead(), ns3::Rip::HandleRequests(), ns3::RipNg::HandleRequests(), ns3::Ipv4L3Protocol::IpForward(), ns3::Ipv6L3Protocol::IpForward(), ns3::DhcpServer::NetHandler(), ns3::LrWpanPhy::PdDataRequest(), ns3::dot11s::HwmpProtocol::ProactivePathResolved(), ns3::Txop::Queue(), ns3::dot11s::HwmpProtocol::ReactivePathResolved(), ns3::StaWifiMac::Receive(), ns3::Rip::Receive(), ns3::RipNg::Receive(), ns3::MacLow::ReceiveOk(), ReceivePacket(), ns3::EpcEnbApplication::RecvFromLteSocket(), ns3::olsr::RoutingProtocol::RecvOlsr(), ns3::aodv::RoutingProtocol::RecvReply(), ns3::aodv::RoutingProtocol::RecvRequest(), ns3::dot11s::HwmpProtocol::RemoveRoutingStuff(), ns3::flame::FlameProtocol::RemoveRoutingStuff(), ns3::dot11s::HwmpProtocol::RequestRoute(), ns3::flame::FlameProtocol::RequestRoute(), Ipv4PacketInfoTagTest::RxCb(), Ipv6PacketInfoTagTest::RxCb(), ns3::Ipv6L3Protocol::Send(), ns3::Ipv4L3Protocol::Send(), ns3::LteEnbRrc::SendData(), ns3::SimpleNetDevice::SendFrom(), ns3::WifiPhy::SendPacket(), ns3::dsdv::RoutingProtocol::SendPacketFromQueue(), ns3::aodv::RoutingProtocol::SendPacketFromQueue(), ns3::Rip::SendRouteRequest(), ns3::RipNg::SendRouteRequest(), ns3::WifiPhy::StartReceivePreamble(), ns3::SimpleNetDevice::TransmitComplete(), ns3::dot11s::HwmpProtocolMac::UpdateOutcomingFrame(), and ns3::flame::FlameProtocolMac::UpdateOutcomingFrame().

+ Here is the call graph for this function:

◆ RemoveTrailer()

uint32_t ns3::Packet::RemoveTrailer ( Trailer trailer)

Remove a deserialized trailer from the internal buffer.

This method invokes the Deserialize method.

Parameters
trailera reference to the trailer to remove from the internal buffer.
Returns
the number of bytes removed from the end of the packet.

Definition at line 318 of file packet.cc.

References ns3::Trailer::Deserialize(), ns3::Buffer::End(), ns3::ObjectBase::GetInstanceTypeId(), ns3::TypeId::GetName(), m_buffer, m_metadata, NS_LOG_FUNCTION, ns3::Buffer::RemoveAtEnd(), and ns3::PacketMetadata::RemoveTrailer().

Referenced by LrWpanPacketTestCase::DoRun(), PacketTest::DoRun(), ns3::LrWpanMac::PdDataIndication(), ns3::CsmaNetDevice::Receive(), ns3::MacLow::ReceiveOk(), and ns3::MacLow::StoreMpduIfNeeded().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ReplacePacketTag()

bool ns3::Packet::ReplacePacketTag ( Tag tag)

Replace the value of a packet tag.

Parameters
tagthe packet tag type to replace. To get the old value of the tag, use PeekPacketTag first.
Returns
true if the requested tag is found, false otherwise. If the tag isn't found, Add is performed instead (so the packet is guaranteed to have the new tag value either way).

Definition at line 877 of file packet.cc.

References ns3::ObjectBase::GetInstanceTypeId(), ns3::TypeId::GetName(), ns3::Tag::GetSerializedSize(), m_packetTagList, NS_LOG_FUNCTION, and ns3::PacketTagList::Replace().

Referenced by ns3::TcpSocketBase::AddSocketTags(), ns3::LrWpanPhy::CheckInterference(), ns3::UdpSocketImpl::DoSendTo(), PrioQueueDiscTestItem::PrioQueueDiscTestItem(), ns3::MeshWifiInterfaceMac::Receive(), ns3::SelectQueueByDSField(), ns3::TcpSocketCongestedRouter::SendDataPacket(), ns3::Ipv4RawSocketImpl::SendTo(), ns3::PacketSocket::SendTo(), and ns3::WaveNetDevice::SendX().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Serialize()

uint32_t ns3::Packet::Serialize ( uint8_t *  buffer,
uint32_t  maxSize 
) const

Serialize a packet, tags, and metadata into a byte buffer.

Parameters
buffera raw byte buffer to which the packet will be serialized
maxSizethe max size of the buffer for bounds checking
Returns
one if all data were serialized, zero if buffer size was too small.
Todo:
Serialize Tags

Definition at line 628 of file packet.cc.

References ns3::NixVector::GetSerializedSize(), ns3::PacketMetadata::GetSerializedSize(), ns3::Buffer::GetSerializedSize(), m_buffer, m_metadata, m_nixVector, ns3::NixVector::Serialize(), ns3::PacketMetadata::Serialize(), and ns3::Buffer::Serialize().

Referenced by LrWpanPacketTestCase::DoRun(), ns3::GrantedTimeWindowMpiInterface::SendPacket(), and ns3::NullMessageMpiInterface::SendPacket().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetNixVector()

void ns3::Packet::SetNixVector ( Ptr< NixVector nixVector)

Set the packet nix-vector.

Note: This function supports a temporary solution to a specific problem in this generic class, i.e. how to associate something specific like nix-vector with a packet. This design methodology should not be followed, and is only here as an impetus to fix this general issue.

Parameters
nixVectorthe nix vector

Definition at line 244 of file packet.cc.

References m_nixVector.

Referenced by CreateFragment().

+ Here is the caller graph for this function:

◆ ToString()

std::string ns3::Packet::ToString ( void  ) const

Return a string representation of the packet.

An empty string is returned if you haven't called EnablePrinting ()

Returns
String representation

Definition at line 426 of file packet.cc.

References Print().

Referenced by ns3::WifiPhy::GetReceptionStatus().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ m_buffer

◆ m_byteTagList

ByteTagList ns3::Packet::m_byteTagList
private

◆ m_globalUid

uint32_t ns3::Packet::m_globalUid = 0
staticprivate

Global counter of packets Uid.

Definition at line 790 of file packet.h.

Referenced by Packet().

◆ m_metadata

◆ m_nixVector

Ptr<NixVector> ns3::Packet::m_nixVector
private

the packet's Nix vector

Definition at line 788 of file packet.h.

Referenced by Deserialize(), GetNixVector(), GetSerializedSize(), operator=(), Packet(), Serialize(), and SetNixVector().

◆ m_packetTagList

PacketTagList ns3::Packet::m_packetTagList
private

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