22 #include "ns3/sequence-number.h" 23 #include "ns3/packet.h" 45 typedef std::list<Ptr<const Packet> >::const_iterator
FragmentsCI;
252 ", size=" << packet->
GetSize ());
286 ", size=" << packet->
GetSize ());
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
void AccumulateFirstFragment(Ptr< const Packet > packet)
We have received a first fragmented packet.
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
uint16_t m_lastSequenceControl
last sequence control
void SetForwardCallback(ForwardUpCallback callback)
Set a callback to forward the packet up.
Fragments m_fragments
fragments
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
std::map< std::pair< Mac48Address, uint8_t >, OriginatorRxStatus *, std::less< std::pair< Mac48Address, uint8_t > > >::iterator QosOriginatorsI
typedef for an iterator for QosOriginators
bool IsNextFragment(uint16_t sequenceControl) const
Check if the sequence control (i.e.
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function.
void Receive(Ptr< Packet > packet, const WifiMacHeader *hdr)
Receive a packet.
Ptr< Packet > HandleFragments(Ptr< Packet > packet, const WifiMacHeader *hdr, OriginatorRxStatus *originator)
Check if the received packet is a fragment and handle it appropriately.
std::map< Mac48Address, OriginatorRxStatus *, std::less< Mac48Address > >::iterator OriginatorsI
typedef for an iterator for Originators
void AccumulateFragment(Ptr< const Packet > packet)
We received a fragmented packet (not first and not last).
void AddAtEnd(Ptr< const Packet > packet)
Concatenate the input packet at the end of the current packet.
uint16_t GetLastSequenceControl(void) const
Return the last sequence control we received.
OriginatorRxStatus * Lookup(const WifiMacHeader *hdr)
Look up for OriginatorRxStatus associated with the sender address (by looking at ADDR2 field in the h...
Originators m_originatorStatus
originator status
void SetPcfCallback(Callback< void > callback)
Set a callback to trigger the next PCF frame.
bool IsDuplicate(const WifiMacHeader *hdr, OriginatorRxStatus *originator) const
Check if we have already received the packet from the sender before (by looking at the sequence contr...
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Generic "sequence number" class.
Ptr< Packet > AccumulateLastFragment(Ptr< const Packet > packet)
We have received a last fragment of the fragmented packets (indicated by the no more fragment field)...
void SetSequenceControl(uint16_t sequenceControl)
Set the last sequence control we received.
Callback< void > m_pcfCallback
PCF callback.
bool m_defragmenting
flag to indicate whether we are defragmenting
std::list< Ptr< const Packet > > Fragments
typedef for a list of fragments (i.e.
ForwardUpCallback m_callback
forward up callback
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
std::list< Ptr< const Packet > >::const_iterator FragmentsCI
typedef for a const iterator for Fragments
bool IsNull(void) const
Check for null implementation.
bool IsDeFragmenting(void) const
Check if we are de-fragmenting packets.
A class to keep track of the packet originator status.
QosOriginators m_qosOriginatorStatus
QOS originator status.