X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FSocket%2FProtocols%2FRaw%2FMACAddress.cci;h=4772dec70074d1e57ee6dde52365c36890436a59;hb=e3179a2123ad51d0d9eb63834a581145c4f77c92;hp=a2ec2747e5f631a9b44d9b451e4d68aecde4e251;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Socket/Protocols/Raw/MACAddress.cci b/senf/Socket/Protocols/Raw/MACAddress.cci index a2ec274..4772dec 100644 --- a/senf/Socket/Protocols/Raw/MACAddress.cci +++ b/senf/Socket/Protocols/Raw/MACAddress.cci @@ -26,11 +26,12 @@ // Custom includes #include #include +#include "EUI64.hh" #define prefix_ inline -///////////////////////////////cci.p/////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::MACAddress prefix_ senf::MACAddress::MACAddress() @@ -80,18 +81,18 @@ prefix_ bool senf::MACAddress::boolean_test() prefix_ boost::uint32_t senf::MACAddress::oui() const { - return - (boost::uint32_t((*this)[0])<<16) | - (boost::uint32_t((*this)[1])<<8) | + return + (boost::uint32_t((*this)[0])<<16) | + (boost::uint32_t((*this)[1])<<8) | (*this)[2]; } prefix_ boost::uint32_t senf::MACAddress::nic() const { - return - (boost::uint32_t((*this)[3])<<16) | - (boost::uint32_t((*this)[4])<<8) | + return + (boost::uint32_t((*this)[3])<<16) | + (boost::uint32_t((*this)[4])<<8) | (*this)[5]; } @@ -99,12 +100,12 @@ prefix_ boost::uint64_t senf::MACAddress::eui64() const { return - (boost::uint64_t( (*this)[0] ) << 56) | - (boost::uint64_t( (*this)[1] ) << 48) | - (boost::uint64_t( (*this)[2] ) << 40) | + (boost::uint64_t( (*this)[0] ) << 56) | + (boost::uint64_t( (*this)[1] ) << 48) | + (boost::uint64_t( (*this)[2] ) << 40) | (boost::uint64_t( 0xfffe ) << 24) | - (boost::uint64_t( (*this)[3] ) << 16) | - (boost::uint64_t( (*this)[4] ) << 8) | + (boost::uint64_t( (*this)[3] ) << 16) | + (boost::uint64_t( (*this)[4] ) << 8) | (boost::uint64_t( (*this)[5] ) ); } @@ -112,18 +113,30 @@ prefix_ boost::uint64_t senf::MACAddress::uint64() const { return - (boost::uint64_t( (*this)[0] ) << 40) | - (boost::uint64_t( (*this)[1] ) << 32) | - (boost::uint64_t( (*this)[2] ) << 24) | - (boost::uint64_t( (*this)[3] ) << 16) | - (boost::uint64_t( (*this)[4] ) << 8) | + (boost::uint64_t( (*this)[0] ) << 40) | + (boost::uint64_t( (*this)[1] ) << 32) | + (boost::uint64_t( (*this)[2] ) << 24) | + (boost::uint64_t( (*this)[3] ) << 16) | + (boost::uint64_t( (*this)[4] ) << 8) | (boost::uint64_t( (*this)[5] ) ); } -///////////////////////////////cci.e/////////////////////////////////////// +prefix_ bool senf::operator==(MACAddress const & mac, EUI64 const & eui64) +{ + return eui64.isMACCompatible() + && std::equal(eui64.begin(), eui64.begin()+3, mac.begin()) + && std::equal(eui64.begin()+5, eui64.end(), mac.begin()+3); +} + +prefix_ bool senf::operator==(EUI64 const & eui64, MACAddress const & mac) +{ + return mac == eui64; +} + +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_ - + // Local Variables: // mode: c++ // fill-column: 100