senf::MACAddress Struct Reference
[Addressing classes]

Ethernet MAC address. More...

#include <senf/Socket/Protocols/Raw/MACAddress.hh>

Inheritance diagram for senf::MACAddress:
Inheritance graph
[legend]

List of all members.


Detailed Description

Ethernet MAC address.

The Ethernet MAC is modeled as a fixed-size container/sequence of 6 bytes. A MACAddress can be converted from/to the following representations

boost::uint64_t senf::MACAddress(0x112233445566ull)
mac.uint64()
std::string senf::MACAddress::from_string("11:22:33:44:55:66")
senf::str(mac)
raw data
    (6 bytes)
senf::MACAddress::from_data(iterator)
mac.begin()
senf::EUI64 senf::MACAddress::from_eui64(eui64)
senf::EUI64::from_mac(mac)

Since MACAddress is based on boost::array, you can access the raw data bytes of the address using begin(), end() or operator[]:

senf::MACAddress mac (...);
std::vector<char> data;
data.resize(6);
std::copy(mac.begin(), mac.end(), data.begin()); // Copy 6 bytes
Implementation note:
We awkwardly need to use static named constructors (from_ members) instead of ordinarily overloaded constructors for one simple reason: char * doubles as string literal and as arbitrary data iterator. The iterator constructor can therefore not be distinguished from initialization with a string literal. Therefore we need to disambiguate using the named constructors.

Definition at line 82 of file MACAddress.hh.


Public Member Functions

  MACAddress ()
  Construct zero-initialized address.
  MACAddress (senf::NoInit_t)
  Construct uninitialized (!) address.
  MACAddress (boost::uint64_t v)
  Construct MACAddress constants.
bool  local () const
  true, if address is locally administered
bool  multicast () const
  true, if address is a group/multicast address
bool  broadcast () const
  true, if address is the broadcast address
bool  boolean_test () const
  true, if address is not the zero address
boost::uint32_t  oui () const
  Return first 3 bytes of the address.
boost::uint32_t  nic () const
  Return last 3 bytes of the address.
boost::uint64_t  eui64 () const
  Build EUI-64 from the MAC address.
boost::uint64_t  uint64 () const
  Return MAC address as uint64 value.

Static Public Member Functions

static MACAddress  from_string (std::string const &s)
  Construct address from string representation.
template<class InputIterator >
static MACAddress  from_data (InputIterator i)
  Construct address from raw data.
static MACAddress  from_eui64 (senf::EUI64 const &eui)
  Construct address from EUI-64.

Static Public Attributes

static MACAddress const  Broadcast = senf::MACAddress(0xFFFFFFFFFFFFull)
  The broadcast address.
static MACAddress const  None
  The empty (0) address.

Related Functions

(Note that these are not member functions.)

std::ostream &  operator<< (std::ostream &os, MACAddress const &mac)
  Output MAC instance as it's string representation.
std::istream &  operator>> (std::istream &os, MACAddress &mac)
  Try to initialize MACAddress instance from a string representation sets std::ios::failbit on the stream if an error occurred.

Constructor & Destructor Documentation

senf::MACAddress::
MACAddress ()

Construct zero-initialized address.

Definition at line 37 of file MACAddress.cci.

senf::MACAddress::
MACAddress ( senf::NoInit_t  )

Construct uninitialized (!) address.

Definition at line 42 of file MACAddress.cci.

senf::MACAddress::
MACAddress ( boost::uint64_t  v )

Construct MACAddress constants.

Definition at line 45 of file MACAddress.cci.


Member Function Documentation

bool senf::MACAddress::
boolean_test ()

true, if address is not the zero address

Definition at line 74 of file MACAddress.cci.

bool senf::MACAddress::
broadcast ()

true, if address is the broadcast address

Definition at line 67 of file MACAddress.cci.

boost::uint64_t senf::MACAddress::
eui64 ()

Build EUI-64 from the MAC address.

Definition at line 99 of file MACAddress.cci.

template<class InputIterator >
senf::MACAddress senf::MACAddress::
from_data ( InputIterator  i )

Construct address from raw data.

Copies the data from i into the MAC address.

Precondition:
The input range at i must have a size of at least 6 elements.

Definition at line 38 of file MACAddress.ct.

senf::MACAddress senf::MACAddress::
from_eui64 ( senf::EUI64 const &  eui )

Construct address from EUI-64.

This constructor takes an EUI-64 value and converts it to a MAC address. This conversion is only possible, if the EUI-64 is MAC compatible: the 4th/5th byte (in transmission order) must be 0xFFFE.

Exceptions:
AddressSyntaxException  if eui is not a MAC compatible EUI-64.

Definition at line 50 of file MACAddress.cc.

senf::MACAddress senf::MACAddress::
from_string ( std::string const &  s )

Construct address from string representation.

The string representation must exactly match the form dd:dd:dd:dd:dd:dd where d is any hexadecimal digit. In place of ':', '-' is also accepted as a delimiter.

Exceptions:
AddressSyntaxException 

Definition at line 43 of file MACAddress.cc.

bool senf::MACAddress::
local ()

true, if address is locally administered

Definition at line 55 of file MACAddress.cci.

bool senf::MACAddress::
multicast ()

true, if address is a group/multicast address

Definition at line 61 of file MACAddress.cci.

boost::uint32_t senf::MACAddress::
nic ()

Return last 3 bytes of the address.

Definition at line 90 of file MACAddress.cci.

boost::uint32_t senf::MACAddress::
oui ()

Return first 3 bytes of the address.

Definition at line 81 of file MACAddress.cci.

boost::uint64_t senf::MACAddress::
uint64 ()

Return MAC address as uint64 value.

Definition at line 112 of file MACAddress.cci.


Friends And Related Function Documentation

std::ostream &
operator<< ( std::ostream &  os,
MACAddress const &  mac )

Output MAC instance as it's string representation.

std::istream &
operator>> ( std::istream &  os,
MACAddress mac )

Try to initialize MACAddress instance from a string representation sets std::ios::failbit on the stream if an error occurred.

See also:
MACAddress from_string()

Member Data Documentation

senf::MACAddress const senf::MACAddress::Broadcast = senf::MACAddress(0xFFFFFFFFFFFFull)
[static]

The broadcast address.

Definition at line 86 of file MACAddress.hh.

The empty (0) address.

Definition at line 87 of file MACAddress.hh.


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