// Custom includes
#include <algorithm>
#include <boost/lambda/lambda.hpp>
+#include "EUI64.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MACAddress
prefix_ senf::MACAddress::MACAddress()
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];
}
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] ) );
}
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_
-\f
+
// Local Variables:
// mode: c++
// fill-column: 100