This class can contain 16 bit addresses. More...
#include "mac16-address.h"
Public Member Functions | |
Mac16Address () | |
Mac16Address (const char *str) | |
void | CopyFrom (const uint8_t buffer[2]) |
void | CopyTo (uint8_t buffer[2]) const |
bool | IsBroadcast (void) const |
Checks if the address is a broadcast address according to 802.15.4 scheme (i.e., 0xFFFF). More... | |
bool | IsMulticast (void) const |
Checks if the address is a multicast address according to RFC 4944 Section 9 (i.e., if its first 3 bits are 100). More... | |
operator Address () const | |
Static Public Member Functions | |
static Mac16Address | Allocate (void) |
Allocate a new Mac16Address. More... | |
static Mac16Address | ConvertFrom (const Address &address) |
static Mac16Address | GetBroadcast (void) |
static Mac16Address | GetMulticast (Ipv6Address address) |
Returns the multicast address associated with an IPv6 address according to RFC 4944 Section 9. More... | |
static bool | IsMatchingType (const Address &address) |
Private Member Functions | |
Address | ConvertTo (void) const |
Static Private Member Functions | |
static uint8_t | GetType (void) |
Return the Type of address. More... | |
Private Attributes | |
uint8_t | m_address [2] |
address value More... | |
Friends | |
bool | operator!= (const Mac16Address &a, const Mac16Address &b) |
Not equal to operator. More... | |
bool | operator< (const Mac16Address &a, const Mac16Address &b) |
Less than operator. More... | |
std::ostream & | operator<< (std::ostream &os, const Mac16Address &address) |
Stream insertion operator. More... | |
bool | operator== (const Mac16Address &a, const Mac16Address &b) |
Equal to operator. More... | |
std::istream & | operator>> (std::istream &is, Mac16Address &address) |
Stream extraction operator. More... | |
This class can contain 16 bit addresses.
Definition at line 41 of file mac16-address.h.
ns3::Mac16Address::Mac16Address | ( | ) |
Definition at line 60 of file mac16-address.cc.
References m_address, and NS_LOG_FUNCTION.
Referenced by GetBroadcast().
ns3::Mac16Address::Mac16Address | ( | const char * | str | ) |
str | a string representing the new Mac16Address |
Definition at line 66 of file mac16-address.cc.
References ASCII_a, ASCII_COLON, ASCII_ZERO, ns3::AsciiToLowCase(), m_address, NS_ASSERT, and NS_LOG_FUNCTION.
|
static |
Allocate a new Mac16Address.
Definition at line 140 of file mac16-address.cc.
References first::address, and NS_LOG_FUNCTION_NOARGS.
|
static |
address | a 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 124 of file mac16-address.cc.
References first::address, 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::LrWpanNetDevice::Send(), and ns3::LrWpanNetDevice::SetAddress().
|
private |
Convert an instance of this class to a polymorphic Address instance.
Definition at line 133 of file mac16-address.cc.
References GetType(), m_address, and NS_LOG_FUNCTION.
void ns3::Mac16Address::CopyFrom | ( | const uint8_t | buffer[2] | ) |
buffer | address in network order |
Copy the input address to our internal buffer.
Definition at line 99 of file mac16-address.cc.
References m_address, and NS_LOG_FUNCTION.
Referenced by ns3::SixLowPanNetDevice::Get16MacFrom48Mac(), GetMulticast(), ns3::ReadFrom(), ns3::LrWpanNetDevice::Send(), and ns3::LrWpanNetDevice::SetAddress().
void ns3::Mac16Address::CopyTo | ( | uint8_t | buffer[2] | ) | const |
buffer | address in network order |
Copy the internal address to the input buffer.
Definition at line 105 of file mac16-address.cc.
References m_address, and NS_LOG_FUNCTION.
Referenced by ns3::LrWpanNetDevice::BuildPseudoMacAddress(), ns3::Ipv6Address::MakeAutoconfiguredAddress(), ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(), and ns3::WriteTo().
|
static |
Definition at line 161 of file mac16-address.cc.
References Mac16Address(), and NS_LOG_FUNCTION_NOARGS.
Referenced by ns3::LrWpanNetDevice::GetBroadcast(), and ns3::MockNetDevice::GetBroadcast().
|
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).
address | base IPv6 address |
Definition at line 170 of file mac16-address.cc.
References first::address, CopyFrom(), and NS_LOG_FUNCTION.
Referenced by ns3::MockNetDevice::GetMulticast(), and ns3::LrWpanNetDevice::GetMulticast().
|
staticprivate |
Return the Type of address.
Definition at line 152 of file mac16-address.cc.
References NS_LOG_FUNCTION_NOARGS, and ns3::Address::Register().
Referenced by ConvertFrom(), ConvertTo(), and IsMatchingType().
bool ns3::Mac16Address::IsBroadcast | ( | void | ) | const |
Checks if the address is a broadcast address according to 802.15.4 scheme (i.e., 0xFFFF).
Definition at line 189 of file mac16-address.cc.
References m_address, and NS_LOG_FUNCTION.
Referenced by LrWpanDataIfsTestCase::DataReceivedDev0(), LrWpanDataIfsTestCase::DataReceivedDev1(), ns3::LrWpanMac::McpsDataRequest(), ns3::LrWpanMac::PdDataIndication(), ns3::SixLowPanNetDevice::ReceiveFromDevice(), and ns3::LrWpanMac::RemoveFirstTxQElement().
|
static |
address | address to test |
Definition at line 112 of file mac16-address.cc.
References first::address, GetType(), and NS_LOG_FUNCTION.
Referenced by ns3::MockNetDevice::GetBroadcast(), ns3::MockNetDevice::GetMulticast(), ns3::Ipv6Address::MakeAutoconfiguredAddress(), ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(), ns3::Ipv6AddressHelper::NewAddress(), ns3::SixLowPanNetDevice::ReceiveFromDevice(), ns3::LrWpanNetDevice::SetAddress(), ns3::SixLowPanMesh::SetFinalDst(), and ns3::SixLowPanMesh::SetOriginator().
bool ns3::Mac16Address::IsMulticast | ( | void | ) | const |
Checks if the address is a multicast address according to RFC 4944 Section 9 (i.e., if its first 3 bits are 100).
Definition at line 200 of file mac16-address.cc.
References m_address, and NS_LOG_FUNCTION.
Referenced by ns3::LrWpanMac::McpsDataRequest(), ns3::LrWpanMac::PdDataIndication(), ns3::SixLowPanNetDevice::ReceiveFromDevice(), and ns3::LrWpanMac::RemoveFirstTxQElement().
ns3::Mac16Address::operator Address | ( | ) | const |
Convert an instance of this class to a polymorphic Address instance.
Definition at line 118 of file mac16-address.cc.
|
friend |
Not equal to operator.
a | the first operand |
b | the first operand |
Definition at line 203 of file mac16-address.h.
|
friend |
Less than operator.
a | the first operand |
b | the first operand |
Definition at line 207 of file mac16-address.h.
|
friend |
Stream insertion operator.
os | the stream |
address | the address |
Definition at line 212 of file mac16-address.cc.
|
friend |
Equal to operator.
a | the first operand |
b | the first operand |
Definition at line 199 of file mac16-address.h.
|
friend |
Stream extraction operator.
is | the stream |
address | the address |
Definition at line 230 of file mac16-address.cc.
|
private |
address value
Definition at line 194 of file mac16-address.h.
Referenced by Mac16Address(), ConvertFrom(), ConvertTo(), CopyFrom(), CopyTo(), IsBroadcast(), and IsMulticast().