From 48a5180375f876eea5a59f889b17b2e3f90132e6 Mon Sep 17 00:00:00 2001 From: tho <tho@wiback.org> Date: Mon, 26 Jan 2009 10:41:55 +0000 Subject: [PATCH] added MACAddress::uint64() --- Socket/Protocols/Raw/MACAddress.cci | 12 ++++++++++++ Socket/Protocols/Raw/MACAddress.hh | 3 ++- Socket/Protocols/Raw/MACAddress.test.cc | 2 ++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Socket/Protocols/Raw/MACAddress.cci b/Socket/Protocols/Raw/MACAddress.cci index 45eb66c38..a2ec2747e 100644 --- a/Socket/Protocols/Raw/MACAddress.cci +++ b/Socket/Protocols/Raw/MACAddress.cci @@ -108,6 +108,18 @@ prefix_ boost::uint64_t senf::MACAddress::eui64() (boost::uint64_t( (*this)[5] ) ); } +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)[5] ) ); +} + ///////////////////////////////cci.e/////////////////////////////////////// #undef prefix_ diff --git a/Socket/Protocols/Raw/MACAddress.hh b/Socket/Protocols/Raw/MACAddress.hh index 3b1e94c86..6d288871e 100644 --- a/Socket/Protocols/Raw/MACAddress.hh +++ b/Socket/Protocols/Raw/MACAddress.hh @@ -48,7 +48,7 @@ namespace senf { The following statements all create the same MAC address <code>00:1A:2B:3C:4D:5F</code> \code // Used to construct constant MAC addresses - MACAddress(0x001A2B3C4D5Flu) + MACAddress(0x001A2B3C4D5Fllu) // Construct a MAC address from it's string representation: MACAddress::from_string("00:1a:2b:3c:4d:5f") // case is ignored @@ -128,6 +128,7 @@ namespace senf { 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 std::string toString() const; ///< Return string representation of MAC address like 12:34:56:78:90:ab diff --git a/Socket/Protocols/Raw/MACAddress.test.cc b/Socket/Protocols/Raw/MACAddress.test.cc index a678df6c7..683139d67 100644 --- a/Socket/Protocols/Raw/MACAddress.test.cc +++ b/Socket/Protocols/Raw/MACAddress.test.cc @@ -84,6 +84,8 @@ BOOST_AUTO_UNIT_TEST(macAddress) BOOST_CHECK_EQUAL( mac, senf::MACAddress::from_eui64(0xa1b2c3fffed4e5f6llu) ); BOOST_CHECK_THROW( senf::MACAddress::from_eui64(0u), senf::AddressSyntaxException ); + + BOOST_CHECK_EQUAL( senf::MACAddress(0x1a2b3c4d5e6fULL).uint64(), 0x1a2b3c4d5e6fULL); } ///////////////////////////////cc.e//////////////////////////////////////// -- GitLab