48 uint32_t maxSize = aggregatedPacket->
GetSize ();
49 uint16_t extractedLength;
51 uint32_t deserialized = 0;
53 while (deserialized < maxSize)
57 extractedMsdu = aggregatedPacket->
CreateFragment (0, static_cast<uint32_t> (extractedLength));
59 deserialized += extractedLength;
61 padding = (4 - ((extractedLength + 14) % 4 )) % 4;
63 if (padding > 0 && deserialized < maxSize)
66 deserialized += padding;
70 set.push_back (packetHdr);
72 NS_LOG_INFO (
"Deaggreated A-MSDU: extracted " << set.size () <<
" MSDUs");
uint32_t RemoveHeader(Header &header)
Deserialize and remove the header from the internal buffer.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
static DeaggregatedMsdus Deaggregate(Ptr< Packet > aggregatedPacket)
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function.
Ptr< Packet > CreateFragment(uint32_t start, uint32_t length) const
Create a new packet which contains a fragment of the original packet.
void RemoveAtStart(uint32_t size)
Remove size bytes from the start of the current packet.
static TypeId GetTypeId(void)
std::list< std::pair< Ptr< Packet >, AmsduSubframeHeader > > DeaggregatedMsdus
Every class exported by the ns3 library is enclosed in the ns3 namespace.
A base class which provides memory management and object aggregation.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)