A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ns3::MultiLinkElement Class Reference

The Multi-Link element. More...

#include "multi-link-element.h"

+ Inheritance diagram for ns3::MultiLinkElement:
+ Collaboration diagram for ns3::MultiLinkElement:

Classes

class  PerStaProfileSubelement
 Per-STA Profile Subelement of Multi-Link element. More...
 

Public Types

using ContainingFrame
 Typedef for structure holding a reference to the containing frame.
 
enum  SubElementId : uint8_t { PER_STA_PROFILE_SUBELEMENT_ID = 0 }
 SubElement IDs. More...
 
enum  Variant : uint8_t { BASIC_VARIANT = 0 , UNSET }
 Multi-Link element variants. More...
 

Public Member Functions

 MultiLinkElement (ContainingFrame frame={})
 Construct a Multi-Link Element with no variant set.
 
 MultiLinkElement (Variant variant, ContainingFrame frame={})
 Constructor.
 
void AddPerStaProfileSubelement ()
 Add a Per-STA Profile Subelement in the Link Info field.
 
uint16_t DeserializeInformationField (Buffer::Iterator start, uint16_t length) override
 Deserialize information (i.e., the body of the IE, not including the Element ID and length octets)
 
WifiInformationElementId ElementId () const override
 Get the wifi information element ID.
 
WifiInformationElementId ElementIdExt () const override
 Get the wifi information element ID extension.
 
uint8_t GetBssParamsChangeCount () const
 Return the BSS Parameters Change Count subfield in the Common Info field.
 
CommonInfoBasicMleGetCommonInfoBasic ()
 
const CommonInfoBasicMleGetCommonInfoBasic () const
 
Time GetEmlsrPaddingDelay () const
 Get the EMLSR Padding Delay subfield of the EML Capabilities subfield in the Common Info field.
 
Time GetEmlsrTransitionDelay () const
 Get the EMLSR Transition Delay subfield of the EML Capabilities subfield in the Common Info field.
 
uint16_t GetInformationFieldSize () const override
 Length of serialized information (i.e., the length of the body of the IE, not including the Element ID and length octets.
 
uint8_t GetLinkIdInfo () const
 Return the Link ID Info subfield in the Common Info field.
 
Mac48Address GetMldMacAddress () const
 Return the MLD MAC Address subfield in the Common Info field.
 
std::size_t GetNPerStaProfileSubelements () const
 Return the number of Per-STA Profile Subelement in the Link Info field.
 
PerStaProfileSubelementGetPerStaProfile (std::size_t i)
 Get a reference to the i-th Per-STA Profile Subelement in the Link Info field.
 
const PerStaProfileSubelementGetPerStaProfile (std::size_t i) const
 Get a reference to the i-th Per-STA Profile Subelement in the Link Info field.
 
Time GetTransitionTimeout () const
 Get the Transition Timeout subfield of the EML Capabilities subfield in the Common Info field.
 
Variant GetVariant () const
 Get the Multi-Link element variant.
 
bool HasBssParamsChangeCount () const
 Return true if the BSS Parameters Change Count subfield in the Common Info field is present and false otherwise.
 
bool HasEmlCapabilities () const
 Return true if the EML Capabilities subfield in the Common Info field is present and false otherwise.
 
bool HasLinkIdInfo () const
 Return true if the Link ID Info subfield in the Common Info field is present and false otherwise.
 
bool IsEmlsrSupported () const
 Return true if the EMLSR Support subfield of the EML Capabilities subfield in the Common Info field is set to 1 and false otherwise.
 
void SerializeInformationField (Buffer::Iterator start) const override
 Serialize information (i.e., the body of the IE, not including the Element ID and length octets)
 
void SetBssParamsChangeCount (uint8_t count)
 Set the BSS Parameters Change Count subfield in the Common Info field.
 
void SetEmlsrPaddingDelay (Time delay)
 Set the EMLSR Padding Delay subfield of the EML Capabilities subfield in the Common Info field.
 
void SetEmlsrSupported (bool supported)
 Set the EMLSR Support subfield of the EML Capabilities subfield in the Common Info field to 1 if EMLSR mode is supported and set it to 0 otherwise.
 
void SetEmlsrTransitionDelay (Time delay)
 Set the EMLSR Transition Delay subfield of the EML Capabilities subfield in the Common Info field.
 
void SetLinkIdInfo (uint8_t linkIdInfo)
 Set the Link ID Info subfield in the Common Info field.
 
void SetMldMacAddress (Mac48Address address)
 Set the MLD MAC Address subfield in the Common Info field.
 
void SetTransitionTimeout (Time timeout)
 Set the Transition Timeout subfield of the EML Capabilities subfield in the Common Info field.
 
- Public Member Functions inherited from ns3::WifiInformationElement
virtual ~WifiInformationElement ()
 
Buffer::Iterator Deserialize (Buffer::Iterator i)
 Deserialize entire IE (which may possibly be fragmented into multiple elements), which must be present.
 
Buffer::Iterator DeserializeIfPresent (Buffer::Iterator i)
 Deserialize entire IE (which may possibly be fragmented into multiple elements) if it is present.
 
uint16_t GetSerializedSize () const
 Get the size of the serialized IE including Element ID and length fields (for every element this IE is possibly fragmented into).
 
virtual bool operator== (const WifiInformationElement &a) const
 Compare two IEs for equality by ID & Length, and then through memcmp of serialised version.
 
virtual void Print (std::ostream &os) const
 Generate human-readable form of IE.
 
Buffer::Iterator Serialize (Buffer::Iterator i) const
 Serialize entire IE including Element ID and length fields.
 
- Public Member Functions inherited from ns3::SimpleRefCount< WifiInformationElement >
 SimpleRefCount ()
 Default constructor.
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor.
 
uint32_t GetReferenceCount () const
 Get the reference count of the object.
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator.
 
void Ref () const
 Increment the reference count.
 
void Unref () const
 Decrement the reference count.
 

Public Attributes

ContainingFrame m_containingFrame
 reference to the mgt frame containing this MLE
 

Private Types

using CommonInfo
 Typedef for structure holding a Common Info field.
 

Private Member Functions

void SetVariant (Variant variant)
 Set the variant of this Multi-Link Element.
 

Private Attributes

CommonInfo m_commonInfo
 Common Info field.
 
std::vector< PerStaProfileSubelementm_perStaProfileSubelements
 Per-STA Profile Subelements.
 

Detailed Description

The Multi-Link element.

The 802.11be Multi-Link element (see Sec.9.4.2.312 of 802.11be D1.5)

TODO:

  • Add setters/getters for EML Capabilities and MLD Capabilities subfields of the Common Info field of the Basic variant of a Multi-Link Element.
  • Add support for variants other than the Basic one.

Definition at line 193 of file multi-link-element.h.

Member Typedef Documentation

◆ CommonInfo

Initial value:
std::variant<CommonInfoBasicMle,
std::monostate >

Typedef for structure holding a Common Info field.

Definition at line 599 of file multi-link-element.h.

◆ ContainingFrame

Initial value:
std::variant<std::monostate,
std::reference_wrapper<const MgtAssocRequestHeader>,
std::reference_wrapper<const MgtReassocRequestHeader>,
std::reference_wrapper<const MgtAssocResponseHeader>>

Typedef for structure holding a reference to the containing frame.

Definition at line 225 of file multi-link-element.h.

Constructor & Destructor Documentation

◆ MultiLinkElement() [1/2]

ns3::MultiLinkElement::MultiLinkElement ( ContainingFrame frame = {})

Construct a Multi-Link Element with no variant set.

MultiLinkElement.

Parameters
framethe management frame containing this Multi-Link Element

Definition at line 287 of file multi-link-element.cc.

◆ MultiLinkElement() [2/2]

ns3::MultiLinkElement::MultiLinkElement ( Variant variant,
ContainingFrame frame = {} )

Constructor.

Parameters
variantthe Multi-Link element variant (cannot be UNSET)
framethe management frame containing this Multi-Link Element

Definition at line 293 of file multi-link-element.cc.

References NS_ASSERT, SetVariant(), and UNSET.

+ Here is the call graph for this function:

Member Function Documentation

◆ AddPerStaProfileSubelement()

void ns3::MultiLinkElement::AddPerStaProfileSubelement ( )

Add a Per-STA Profile Subelement in the Link Info field.

Definition at line 794 of file multi-link-element.cc.

References GetVariant(), m_perStaProfileSubelements, NS_ABORT_IF, and UNSET.

Referenced by DeserializeInformationField(), BasicMultiLinkElementTest::GetMultiLinkElement(), ns3::ApWifiMac::GetMultiLinkElement(), and ns3::StaWifiMac::GetMultiLinkElement().

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

◆ DeserializeInformationField()

uint16_t ns3::MultiLinkElement::DeserializeInformationField ( Buffer::Iterator start,
uint16_t length )
overridevirtual

Deserialize information (i.e., the body of the IE, not including the Element ID and length octets)

Parameters
startan iterator which points to where the information should be written.
lengththe expected number of bytes to read
Returns
the number of bytes read

Implements ns3::WifiInformationElement.

Definition at line 877 of file multi-link-element.cc.

References AddPerStaProfileSubelement(), ns3::Buffer::Iterator::GetDistanceFrom(), GetNPerStaProfileSubelements(), GetPerStaProfile(), m_commonInfo, m_containingFrame, ns3::Buffer::Iterator::Next(), NS_ABORT_MSG, ns3::Buffer::Iterator::PeekU8(), PER_STA_PROFILE_SUBELEMENT_ID, ns3::Buffer::Iterator::ReadLsbtohU16(), and SetVariant().

+ Here is the call graph for this function:

◆ ElementId()

WifiInformationElementId ns3::MultiLinkElement::ElementId ( ) const
overridevirtual

Get the wifi information element ID.

Returns
the wifi information element ID

Implements ns3::WifiInformationElement.

Definition at line 301 of file multi-link-element.cc.

References IE_EXTENSION.

◆ ElementIdExt()

WifiInformationElementId ns3::MultiLinkElement::ElementIdExt ( ) const
overridevirtual

Get the wifi information element ID extension.

Returns
the wifi information element ID extension

Reimplemented from ns3::WifiInformationElement.

Definition at line 307 of file multi-link-element.cc.

References IE_EXT_MULTI_LINK_ELEMENT.

◆ GetBssParamsChangeCount()

uint8_t ns3::MultiLinkElement::GetBssParamsChangeCount ( ) const

Return the BSS Parameters Change Count subfield in the Common Info field.

Make sure that this is a Basic Multi-Link Element and the BSS Parameters Change Count subfield is present.

Returns
the BSS Parameters Change Count subfield in the Common Info field

Definition at line 389 of file multi-link-element.cc.

References m_commonInfo.

◆ GetCommonInfoBasic() [1/2]

CommonInfoBasicMle & ns3::MultiLinkElement::GetCommonInfoBasic ( )
Returns
a reference to the Common Info field (the MLE variant must be Basic)

Definition at line 335 of file multi-link-element.cc.

References m_commonInfo.

Referenced by BasicMultiLinkElementTest::GetMultiLinkElement(), ns3::ApWifiMac::GetMultiLinkElement(), and ns3::StaWifiMac::GetMultiLinkElement().

+ Here is the caller graph for this function:

◆ GetCommonInfoBasic() [2/2]

const CommonInfoBasicMle & ns3::MultiLinkElement::GetCommonInfoBasic ( ) const
Returns
a const reference to the Common Info field (the MLE variant must be Basic)

Definition at line 341 of file multi-link-element.cc.

References m_commonInfo.

◆ GetEmlsrPaddingDelay()

Time ns3::MultiLinkElement::GetEmlsrPaddingDelay ( ) const

Get the EMLSR Padding Delay subfield of the EML Capabilities subfield in the Common Info field.

Make sure that this is a Basic Multi-Link Element and the EML Capabilities subfield is present.

Returns
the EMLSR Padding Delay

Definition at line 469 of file multi-link-element.cc.

References ns3::CommonInfoBasicMle::DecodeEmlsrPaddingDelay(), m_commonInfo, and NS_ASSERT.

+ Here is the call graph for this function:

◆ GetEmlsrTransitionDelay()

Time ns3::MultiLinkElement::GetEmlsrTransitionDelay ( ) const

Get the EMLSR Transition Delay subfield of the EML Capabilities subfield in the Common Info field.

Make sure that this is a Basic Multi-Link Element and the EML Capabilities subfield is present.

Returns
the EMLSR Transition Delay

Definition at line 477 of file multi-link-element.cc.

References ns3::CommonInfoBasicMle::DecodeEmlsrTransitionDelay(), m_commonInfo, and NS_ASSERT.

+ Here is the call graph for this function:

◆ GetInformationFieldSize()

uint16_t ns3::MultiLinkElement::GetInformationFieldSize ( ) const
overridevirtual

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 - if the IE is not fragmented)

Returns
the length of serialized information

Implements ns3::WifiInformationElement.

Definition at line 820 of file multi-link-element.cc.

References m_commonInfo, m_containingFrame, m_perStaProfileSubelements, and NS_ABORT_MSG.

◆ GetLinkIdInfo()

uint8_t ns3::MultiLinkElement::GetLinkIdInfo ( ) const

Return the Link ID Info subfield in the Common Info field.

Make sure that this is a Basic Multi-Link Element and the Link ID Info subfield is present.

Returns
the Link ID Info subfield in the Common Info field

Definition at line 371 of file multi-link-element.cc.

References m_commonInfo.

◆ GetMldMacAddress()

Mac48Address ns3::MultiLinkElement::GetMldMacAddress ( ) const

Return the MLD MAC Address subfield in the Common Info field.

Make sure that this is a Basic Multi-Link Element.

Returns
the MLD MAC Address subfield in the Common Info field.

Definition at line 353 of file multi-link-element.cc.

References m_commonInfo.

◆ GetNPerStaProfileSubelements()

std::size_t ns3::MultiLinkElement::GetNPerStaProfileSubelements ( ) const

Return the number of Per-STA Profile Subelement in the Link Info field.

Returns
the number of Per-STA Profile Subelement in the Link Info field

Definition at line 802 of file multi-link-element.cc.

References m_perStaProfileSubelements.

Referenced by DeserializeInformationField(), ns3::ApWifiMac::GetMultiLinkElement(), and ns3::StaWifiMac::GetMultiLinkElement().

+ Here is the caller graph for this function:

◆ GetPerStaProfile() [1/2]

MultiLinkElement::PerStaProfileSubelement & ns3::MultiLinkElement::GetPerStaProfile ( std::size_t i)

Get a reference to the i-th Per-STA Profile Subelement in the Link Info field.

Parameters
ithe index of the Per-STA Profile Subelement in the Link Info field
Returns
a reference to the i-th Per-STA Profile Subelement in the Link Info field

Definition at line 808 of file multi-link-element.cc.

References m_perStaProfileSubelements.

Referenced by DeserializeInformationField(), BasicMultiLinkElementTest::GetMultiLinkElement(), ns3::ApWifiMac::GetMultiLinkElement(), and ns3::StaWifiMac::GetMultiLinkElement().

+ Here is the caller graph for this function:

◆ GetPerStaProfile() [2/2]

const MultiLinkElement::PerStaProfileSubelement & ns3::MultiLinkElement::GetPerStaProfile ( std::size_t i) const

Get a reference to the i-th Per-STA Profile Subelement in the Link Info field.

Parameters
ithe index of the Per-STA Profile Subelement in the Link Info field
Returns
a reference to the i-th Per-STA Profile Subelement in the Link Info field

Definition at line 814 of file multi-link-element.cc.

References m_perStaProfileSubelements.

◆ GetTransitionTimeout()

Time ns3::MultiLinkElement::GetTransitionTimeout ( ) const

Get the Transition Timeout subfield of the EML Capabilities subfield in the Common Info field.

Make sure that this is a Basic Multi-Link Element and the EML Capabilities subfield is present.

Returns
the Transition Timeout

Definition at line 485 of file multi-link-element.cc.

References m_commonInfo, ns3::MicroSeconds(), and NS_ASSERT.

+ Here is the call graph for this function:

◆ GetVariant()

MultiLinkElement::Variant ns3::MultiLinkElement::GetVariant ( ) const

Get the Multi-Link element variant.

Returns
the Multi-Link element variant

Definition at line 313 of file multi-link-element.cc.

References m_commonInfo.

Referenced by AddPerStaProfileSubelement(), SerializeInformationField(), and SetVariant().

+ Here is the caller graph for this function:

◆ HasBssParamsChangeCount()

bool ns3::MultiLinkElement::HasBssParamsChangeCount ( ) const

Return true if the BSS Parameters Change Count subfield in the Common Info field is present and false otherwise.

Make sure that this is a Basic Multi-Link Element.

Returns
true if the BSS Parameters Change Count subfield in the Common Info field is present and false otherwise

Definition at line 383 of file multi-link-element.cc.

References m_commonInfo.

◆ HasEmlCapabilities()

bool ns3::MultiLinkElement::HasEmlCapabilities ( ) const

Return true if the EML Capabilities subfield in the Common Info field is present and false otherwise.

Make sure that this is a Basic Multi-Link Element.

Returns
whether the EML Capabilities subfield in the Common Info field is present

Definition at line 457 of file multi-link-element.cc.

References m_commonInfo.

◆ HasLinkIdInfo()

bool ns3::MultiLinkElement::HasLinkIdInfo ( ) const

Return true if the Link ID Info subfield in the Common Info field is present and false otherwise.

Make sure that this is a Basic Multi-Link Element.

Returns
true if the Link ID Info subfield in the Common Info field is present and false otherwise

Definition at line 365 of file multi-link-element.cc.

References m_commonInfo.

◆ IsEmlsrSupported()

bool ns3::MultiLinkElement::IsEmlsrSupported ( ) const

Return true if the EMLSR Support subfield of the EML Capabilities subfield in the Common Info field is set to 1 and false otherwise.

Make sure that this is a Basic Multi-Link Element and the EML Capabilities subfield is present.

Returns
whether the EMLSR Support subfield is set to 1

Definition at line 463 of file multi-link-element.cc.

References m_commonInfo.

◆ SerializeInformationField()

void ns3::MultiLinkElement::SerializeInformationField ( Buffer::Iterator start) const
overridevirtual

Serialize information (i.e., the body of the IE, not including the Element ID and length octets)

Parameters
startan iterator which points to where the information should be written.

Implements ns3::WifiInformationElement.

Definition at line 850 of file multi-link-element.cc.

References GetVariant(), m_commonInfo, m_perStaProfileSubelements, and NS_ABORT_MSG.

+ Here is the call graph for this function:

◆ SetBssParamsChangeCount()

void ns3::MultiLinkElement::SetBssParamsChangeCount ( uint8_t count)

Set the BSS Parameters Change Count subfield in the Common Info field.

Make sure that this is a Basic Multi-Link Element.

Parameters
countthe BSS Parameters Change Count

Definition at line 377 of file multi-link-element.cc.

References m_commonInfo.

Referenced by BasicMultiLinkElementTest::GetMultiLinkElement(), and ns3::ApWifiMac::GetMultiLinkElement().

+ Here is the caller graph for this function:

◆ SetEmlsrPaddingDelay()

void ns3::MultiLinkElement::SetEmlsrPaddingDelay ( Time delay)

Set the EMLSR Padding Delay subfield of the EML Capabilities subfield in the Common Info field.

Make sure that this is a Basic Multi-Link Element.

Parameters
delaythe EMLSR Padding delay (0us, 32us, 64us, 128us or 256us)

Definition at line 406 of file multi-link-element.cc.

References ns3::CommonInfoBasicMle::EmlCapabilities::emlsrPaddingDelay, ns3::CommonInfoBasicMle::EncodeEmlsrPaddingDelay(), and m_commonInfo.

Referenced by BasicMultiLinkElementTest::GetMultiLinkElement(), and ns3::StaWifiMac::GetMultiLinkElement().

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

◆ SetEmlsrSupported()

void ns3::MultiLinkElement::SetEmlsrSupported ( bool supported)

Set the EMLSR Support subfield of the EML Capabilities subfield in the Common Info field to 1 if EMLSR mode is supported and set it to 0 otherwise.

Make sure that this is a Basic Multi-Link Element.

Parameters
supportedwhether EMLSR mode is supported

Definition at line 395 of file multi-link-element.cc.

References ns3::CommonInfoBasicMle::EmlCapabilities::emlsrSupport, and m_commonInfo.

Referenced by ns3::ApWifiMac::GetMultiLinkElement(), and ns3::StaWifiMac::GetMultiLinkElement().

+ Here is the caller graph for this function:

◆ SetEmlsrTransitionDelay()

void ns3::MultiLinkElement::SetEmlsrTransitionDelay ( Time delay)

Set the EMLSR Transition Delay subfield of the EML Capabilities subfield in the Common Info field.

Make sure that this is a Basic Multi-Link Element.

Parameters
delaythe EMLSR Transition delay (0us, 16us, 32us, 64us, 128us or 256us)

Definition at line 417 of file multi-link-element.cc.

References ns3::CommonInfoBasicMle::EmlCapabilities::emlsrTransitionDelay, ns3::CommonInfoBasicMle::EncodeEmlsrTransitionDelay(), and m_commonInfo.

Referenced by BasicMultiLinkElementTest::GetMultiLinkElement(), and ns3::StaWifiMac::GetMultiLinkElement().

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

◆ SetLinkIdInfo()

void ns3::MultiLinkElement::SetLinkIdInfo ( uint8_t linkIdInfo)

Set the Link ID Info subfield in the Common Info field.

Make sure that this is a Basic Multi-Link Element.

Parameters
linkIdInfothe link ID information

Definition at line 359 of file multi-link-element.cc.

References m_commonInfo.

Referenced by BasicMultiLinkElementTest::GetMultiLinkElement(), and ns3::ApWifiMac::GetMultiLinkElement().

+ Here is the caller graph for this function:

◆ SetMldMacAddress()

void ns3::MultiLinkElement::SetMldMacAddress ( Mac48Address address)

Set the MLD MAC Address subfield in the Common Info field.

Make sure that this is a Basic Multi-Link Element.

Parameters
addressthe MLD MAC address

Definition at line 347 of file multi-link-element.cc.

References m_commonInfo.

Referenced by BasicMultiLinkElementTest::GetMultiLinkElement(), ns3::ApWifiMac::GetMultiLinkElement(), and ns3::StaWifiMac::GetMultiLinkElement().

+ Here is the caller graph for this function:

◆ SetTransitionTimeout()

void ns3::MultiLinkElement::SetTransitionTimeout ( Time timeout)

Set the Transition Timeout subfield of the EML Capabilities subfield in the Common Info field.

Make sure that this is a Basic Multi-Link Element.

Parameters
timeoutthe Transition Timeout (0us or 2^n us, with n=7..16)

Definition at line 428 of file multi-link-element.cc.

References ns3::Time::As(), ns3::Time::GetMicroSeconds(), m_commonInfo, NS_ABORT_MSG_IF, timeout, and ns3::Time::US.

Referenced by BasicMultiLinkElementTest::GetMultiLinkElement(), and ns3::ApWifiMac::GetMultiLinkElement().

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

◆ SetVariant()

void ns3::MultiLinkElement::SetVariant ( Variant variant)
private

Set the variant of this Multi-Link Element.

Parameters
variantthe variant of this Multi-Link Element

Definition at line 319 of file multi-link-element.cc.

References BASIC_VARIANT, GetVariant(), m_commonInfo, NS_ABORT_MSG, NS_ABORT_MSG_IF, and UNSET.

Referenced by MultiLinkElement(), and DeserializeInformationField().

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

Member Data Documentation

◆ m_commonInfo

◆ m_containingFrame

◆ m_perStaProfileSubelements

std::vector<PerStaProfileSubelement> ns3::MultiLinkElement::m_perStaProfileSubelements
private

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