ns-3
ns3::WifiInformationElement Class Reference

Information element, as defined in 802.11-2007 standardThe IEEE 802.11 standard includes the notion of Information Elements, which are encodings of management information to be communicated between STAs in the payload of various frames of type Management. Information Elements (IEs) have a common format, each starting with a single octet - the Element ID, which indicates the specific type of IE (a type to represent the options here is defined as WifiInformationElementId). The next octet is a length field and encodes the number of octets in the third and final field, which is the IE Information field. More...

#include <wifi-information-element.h>

Inheritance diagram for ns3::WifiInformationElement:
Collaboration diagram for ns3::WifiInformationElement:

List of all members.

Public Member Functions

Buffer::Iterator Serialize (Buffer::Iterator i) const
 Serialize entire IE including Element ID and length fields.
Buffer::Iterator Deserialize (Buffer::Iterator i)
Buffer::Iterator DeserializeIfPresent (Buffer::Iterator i)
uint16_t GetSerializedSize () const
Each subclass must implement
virtual WifiInformationElementId ElementId () const =0
 Own unique Element ID.
virtual uint8_t GetInformationFieldSize () const =0
virtual void SerializeInformationField (Buffer::Iterator start) const =0
virtual uint8_t DeserializeInformationField (Buffer::Iterator start, uint8_t length)=0
virtual void Print (std::ostream &os) const
 In addition, a subclass may optionally override the following...
virtual bool operator< (WifiInformationElement const &a) const
 Compare information elements using Element ID.
virtual bool operator== (WifiInformationElement const &a) const

Detailed Description

Information element, as defined in 802.11-2007 standard

The IEEE 802.11 standard includes the notion of Information Elements, which are encodings of management information to be communicated between STAs in the payload of various frames of type Management. Information Elements (IEs) have a common format, each starting with a single octet - the Element ID, which indicates the specific type of IE (a type to represent the options here is defined as WifiInformationElementId). The next octet is a length field and encodes the number of octets in the third and final field, which is the IE Information field.

The class ns3::WifiInformationElement provides a base for classes which represent specific Information Elements. This class defines pure virtual methods for serialisation (ns3::WifiInformationElement::SerializeInformationField) and deserialisation (ns3::WifiInformationElement::DeserializeInformationField) of IEs, from or to data members or other objects that simulation objects use to maintain the relevant state.

This class also provides an implementation of the equality operator, which operates by comparing the serialised versions of the two WifiInformationElement objects concerned.

Elements are defined to have a common general format consisting of a 1 octet Element ID field, a 1 octet length field, and a variable-length element-specific information field. Each element is assigned a unique Element ID as defined in this standard. The Length field specifies the number of octets in the Information field.

This class is pure virtual and acts as base for classes which know how to serialize specific IEs.


Member Function Documentation

Deserialize entire IE, which must be present. The iterator passed in must be pointing at the Element ID (i.e., the very first octet) of the correct type of information element, otherwise this method will generate a fatal error.

References DeserializeIfPresent(), ns3::Buffer::Iterator::GetDistanceFrom(), and NS_ASSERT.

Referenced by ns3::MgtAssocRequestHeader::Deserialize(), ns3::dot11s::PeerLinkFrameStart::Deserialize(), ns3::MgtAssocResponseHeader::Deserialize(), ns3::MgtProbeRequestHeader::Deserialize(), and ns3::MgtProbeResponseHeader::Deserialize().

Deserialize entire IE if it is present. The iterator passed in must be pointing at the Element ID of an information element. If the Element ID is not the one that the given class is interested in then it will return the same iterator.

References DeserializeInformationField(), ElementId(), ns3::Buffer::Iterator::Next(), and ns3::Buffer::Iterator::ReadU8().

Referenced by ns3::MgtAssocRequestHeader::Deserialize(), ns3::dot11s::PeerLinkFrameStart::Deserialize(), ns3::MgtAssocResponseHeader::Deserialize(), ns3::MgtProbeRequestHeader::Deserialize(), Deserialize(), and ns3::MgtProbeResponseHeader::Deserialize().

virtual uint8_t ns3::WifiInformationElement::GetInformationFieldSize ( ) const [pure virtual]

Length of serialized information (i.e., the length of the body of the IE, not including the Element ID and length octets. This is the value that will appear in the second octet of the entire IE - the length field)

Implemented in ns3::dot11s::IePreq, ns3::dot11s::IeConfiguration, ns3::SupportedRates, ns3::dot11s::IeBeaconTiming, ns3::dot11s::IePeerManagement, ns3::dot11s::IePrep, ns3::dot11s::IeRann, ns3::ExtendedSupportedRatesIE, ns3::dot11s::IeMeshId, ns3::dot11s::IePerr, ns3::dot11s::IeLinkMetricReport, ns3::Ssid, and ns3::dot11s::IePeeringProtocol.

Referenced by GetSerializedSize(), operator==(), and Serialize().

bool ns3::WifiInformationElement::operator== ( WifiInformationElement const &  a) const [virtual]

Compare two IEs for equality by ID & Length, and then through memcmp of serialised version

References ns3::Buffer::AddAtEnd(), ns3::Buffer::Begin(), ElementId(), GetInformationFieldSize(), ns3::Buffer::PeekData(), and SerializeInformationField().

void ns3::WifiInformationElement::Print ( std::ostream &  os) const [virtual]

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