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

This class can contain 16 bit addresses. More...

#include "mac16-address.h"

Collaboration diagram for ns3::Mac16Address:

Public Member Functions

 Mac16Address ()=default
 Mac16Address (const char *str)
 Mac16Address (uint16_t addr)
Address ConvertTo () const
uint16_t ConvertToInt () const
void CopyFrom (const uint8_t buffer[2])
void CopyTo (uint8_t buffer[2]) const
bool IsBroadcast () const
 Checks if the address is a broadcast address according to 802.15.4 scheme (i.e., 0xFFFF).
bool IsMulticast () const
 Checks if the address is a multicast address according to RFC 4944 Section 9 (i.e., if its first 3 bits are 100).
 operator Address () const
constexpr std::strong_ordering operator<=> (const Mac16Address &other) const =default
 Spaceship comparison operator.

Static Public Member Functions

static Mac16Address Allocate ()
 Allocate a new Mac16Address.
static Mac16Address ConvertFrom (const Address &address)
static Mac16Address GetBroadcast ()
static Mac16Address GetMulticast (Ipv6Address address)
 Returns the multicast address associated with an IPv6 address according to RFC 4944 Section 9.
static bool IsMatchingType (const Address &address)
static void ResetAllocationIndex ()
 Reset the Mac16Address allocation index.

Static Private Member Functions

static uint8_t GetType ()
 Return the Type of address.

Private Attributes

std::array< uint8_t, 2 > m_address {}
 Address value.

Static Private Attributes

static uint64_t m_allocationIndex = 0
 Address allocation index.

Friends

std::ostream & operator<< (std::ostream &os, const Mac16Address &address)
 Stream insertion operator.
std::istream & operator>> (std::istream &is, Mac16Address &address)
 Stream extraction operator.

Detailed Description

This class can contain 16 bit addresses.

See also
Mac16Address Attribute

Definition at line 34 of file mac16-address.h.

Constructor & Destructor Documentation

◆ Mac16Address() [1/3]

ns3::Mac16Address::Mac16Address ( )
default

References Mac16Address().

Referenced by Mac16Address(), Allocate(), ConvertFrom(), GetBroadcast(), GetMulticast(), operator<<, operator<=>(), and operator>>.

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

◆ Mac16Address() [2/3]

ns3::Mac16Address::Mac16Address ( const char * str)
Parameters
stra string representing the new Mac16Address

The format of the string is "xx:xx"

Definition at line 29 of file mac16-address.cc.

References m_address, NS_ASSERT_MSG, and NS_LOG_FUNCTION.

◆ Mac16Address() [3/3]

ns3::Mac16Address::Mac16Address ( uint16_t addr)
Parameters
addrThe 16 bit unsigned integer used to create a Mac16Address object.

Create a Mac16Address from an 16 bit unsigned integer.

Definition at line 43 of file mac16-address.cc.

References m_address, and NS_LOG_FUNCTION.

Member Function Documentation

◆ Allocate()

Mac16Address ns3::Mac16Address::Allocate ( )
static

Allocate a new Mac16Address.

Returns
newly allocated mac16Address

Definition at line 104 of file mac16-address.cc.

References Mac16Address(), m_allocationIndex, NS_LOG_FUNCTION_NOARGS, ResetAllocationIndex(), and ns3::Simulator::ScheduleDestroy().

Here is the call graph for this function:

◆ ConvertFrom()

Mac16Address ns3::Mac16Address::ConvertFrom ( const Address & address)
static
Parameters
addressa polymorphic address
Returns
a new Mac16Address from the polymorphic address

This function performs a type check and asserts if the type of the input address is not compatible with an Mac16Address.

Definition at line 78 of file mac16-address.cc.

References Mac16Address(), GetType(), m_address, NS_ASSERT, and NS_LOG_FUNCTION.

Referenced by ns3::Ipv6Address::MakeAutoconfiguredAddress(), ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(), ns3::Ipv6AddressHelper::NewAddress(), ns3::SixLowPanMesh::Print(), ns3::SixLowPanNetDevice::ReceiveFromDevice(), ns3::lrwpan::LrWpanNetDevice::Send(), and ns3::lrwpan::LrWpanNetDevice::SetAddress().

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

◆ ConvertTo()

Address ns3::Mac16Address::ConvertTo ( ) const
Returns
a new Address instance

Convert an instance of this class to a polymorphic Address instance.

Definition at line 88 of file mac16-address.cc.

References GetType(), m_address, and NS_LOG_FUNCTION.

Referenced by operator Address().

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

◆ ConvertToInt()

uint16_t ns3::Mac16Address::ConvertToInt ( ) const
Returns
the mac address in a 16 bit unsigned integer

Convert an instance of this class to a 16 bit unsigned integer.

Definition at line 95 of file mac16-address.cc.

References m_address.

Referenced by ns3::zigbee::ZigbeeNwk::FindNextHop(), ns3::zigbee::ZigbeeNwk::McpsDataIndication(), and ns3::zigbee::ZigbeeNwk::ReceiveMulticastMemberFrame().

Here is the caller graph for this function:

◆ CopyFrom()

void ns3::Mac16Address::CopyFrom ( const uint8_t buffer[2])
Parameters
bufferaddress in network order

Copy the input address to our internal buffer.

Definition at line 51 of file mac16-address.cc.

References m_address, and NS_LOG_FUNCTION.

Referenced by AssociateIndication(), ns3::LrWpanHelper::CreateAssociatedPan(), ns3::SixLowPanNetDevice::Get16MacFrom48Mac(), GetMulticast(), ns3::ReadFrom(), ns3::lrwpan::LrWpanNetDevice::Send(), and ns3::lrwpan::LrWpanNetDevice::SetAddress().

Here is the caller graph for this function:

◆ CopyTo()

void ns3::Mac16Address::CopyTo ( uint8_t buffer[2]) const
Parameters
bufferaddress in network order

Copy the internal address to the input buffer.

Definition at line 58 of file mac16-address.cc.

References m_address, and NS_LOG_FUNCTION.

Referenced by ns3::lrwpan::LrWpanNetDevice::BuildPseudoMacAddress(), ns3::Ipv6Address::MakeAutoconfiguredAddress(), ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(), and ns3::WriteTo().

Here is the caller graph for this function:

◆ GetBroadcast()

Mac16Address ns3::Mac16Address::GetBroadcast ( )
static
Returns
the broadcast address (0xFFFF)

Definition at line 137 of file mac16-address.cc.

References Mac16Address(), and NS_LOG_FUNCTION_NOARGS.

Referenced by LrWpanAckTestCase::DoRun(), ns3::lrwpan::LrWpanNetDevice::GetBroadcast(), ns3::MockNetDevice::GetBroadcast(), and ns3::zigbee::ZigbeeNwk::SendRREQ().

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

◆ GetMulticast()

Mac16Address ns3::Mac16Address::GetMulticast ( Ipv6Address address)
static

Returns the multicast address associated with an IPv6 address according to RFC 4944 Section 9.

An IPv6 packet with a multicast destination address (DST), consisting of the sixteen octets DST[1] through DST[16], is transmitted to the following 802.15.4 16-bit multicast address:

  0                   1
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |1 0 0|DST[15]* |   DST[16]     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Here, DST[15]* refers to the last 5 bits in octet DST[15], that is, bits 3-7 within DST[15]. The initial 3-bit pattern of "100" follows the 16-bit address format for multicast addresses (Section 12).

Parameters
addressbase IPv6 address
Returns
the multicast 16-bit address.

Definition at line 146 of file mac16-address.cc.

References Mac16Address(), CopyFrom(), and NS_LOG_FUNCTION.

Referenced by LrWpanAckTestCase::DoRun(), ns3::lrwpan::LrWpanNetDevice::GetMulticast(), ns3::MockNetDevice::GetMulticast(), and ns3::MockNetDevice::GetMulticast().

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

◆ GetType()

uint8_t ns3::Mac16Address::GetType ( )
staticprivate

Return the Type of address.

Returns
type of address

Definition at line 128 of file mac16-address.cc.

References NS_LOG_FUNCTION_NOARGS, and ns3::Address::Register().

Referenced by ConvertFrom(), ConvertTo(), and IsMatchingType().

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

◆ IsBroadcast()

bool ns3::Mac16Address::IsBroadcast ( ) const

Checks if the address is a broadcast address according to 802.15.4 scheme (i.e., 0xFFFF).

Returns
true if the address is 0xFFFF

Definition at line 165 of file mac16-address.cc.

References m_address, and NS_LOG_FUNCTION.

Referenced by LrWpanDataIfsTestCase::DataReceivedDev0(), LrWpanDataIfsTestCase::DataReceivedDev1(), ns3::lrwpan::LrWpanMac::McpsDataRequest(), ns3::lrwpan::LrWpanMac::PdDataIndication(), ns3::SixLowPanNetDevice::ReceiveFromDevice(), ns3::zigbee::ZigbeeNwk::ReceiveMulticastNonMemberFrame(), and ns3::lrwpan::LrWpanMac::RemoveFirstTxQElement().

Here is the caller graph for this function:

◆ IsMatchingType()

bool ns3::Mac16Address::IsMatchingType ( const Address & address)
static
Parameters
addressaddress to test
Returns
true if the address matches, false otherwise.

Definition at line 65 of file mac16-address.cc.

References GetType(), and NS_LOG_FUNCTION.

Referenced by ns3::MockNetDevice::GetBroadcast(), ns3::MockNetDevice::GetMulticast(), ns3::MockNetDevice::GetMulticast(), ns3::Ipv6Address::MakeAutoconfiguredAddress(), ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(), ns3::Ipv6AddressHelper::NewAddress(), ns3::SixLowPanNetDevice::ReceiveFromDevice(), ns3::lrwpan::LrWpanNetDevice::SetAddress(), ns3::SixLowPanMesh::SetFinalDst(), and ns3::SixLowPanMesh::SetOriginator().

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

◆ IsMulticast()

bool ns3::Mac16Address::IsMulticast ( ) const

Checks if the address is a multicast address according to RFC 4944 Section 9 (i.e., if its first 3 bits are 100).

Returns
true if the address is in the range 0x8000 - 0x9FFF

Definition at line 172 of file mac16-address.cc.

References m_address, and NS_LOG_FUNCTION.

Referenced by ns3::lrwpan::LrWpanMac::McpsDataRequest(), ns3::lrwpan::LrWpanMac::PdDataIndication(), ns3::SixLowPanNetDevice::ReceiveFromDevice(), and ns3::lrwpan::LrWpanMac::RemoveFirstTxQElement().

Here is the caller graph for this function:

◆ operator Address()

ns3::Mac16Address::operator Address ( ) const
Returns
a new Address instance

Convert an instance of this class to a polymorphic Address instance.

Definition at line 71 of file mac16-address.cc.

References ConvertTo().

Here is the call graph for this function:

◆ operator<=>()

std::strong_ordering ns3::Mac16Address::operator<=> ( const Mac16Address & other) const
constexprdefault

Spaceship comparison operator.

All the other comparison operators are automatically generated from this one.

Parameters
otheraddress to compare to this one
Returns
The result of the comparison.

References Mac16Address().

Here is the call graph for this function:

◆ ResetAllocationIndex()

void ns3::Mac16Address::ResetAllocationIndex ( )
static

Reset the Mac16Address allocation index.

This function resets (to zero) the global integer that is used for unique address allocation. It is automatically called whenever

SimulatorDestroy ();

is called. It may also be optionally called by user code if there is a need to force a reset of this allocation index.

Definition at line 121 of file mac16-address.cc.

References m_allocationIndex, and NS_LOG_FUNCTION_NOARGS.

Referenced by Allocate().

Here is the caller graph for this function:

◆ operator<<

std::ostream & operator<< ( std::ostream & os,
const Mac16Address & address )
friend

Stream insertion operator.

Parameters
osthe stream
addressthe address
Returns
a reference to the stream

Definition at line 180 of file mac16-address.cc.

References Mac16Address().

◆ operator>>

std::istream & operator>> ( std::istream & is,
Mac16Address & address )
friend

Stream extraction operator.

Parameters
isthe stream
addressthe address
Returns
a reference to the stream

Definition at line 197 of file mac16-address.cc.

References Mac16Address(), and v.

Member Data Documentation

◆ m_address

std::array<uint8_t, 2> ns3::Mac16Address::m_address {}
private

◆ m_allocationIndex

uint64_t ns3::Mac16Address::m_allocationIndex = 0
staticprivate

Address allocation index.

Definition at line 204 of file mac16-address.h.

Referenced by Allocate(), ns3::Mac16AddressValue::Copy(), and ResetAllocationIndex().


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