Packets: Add StringParser ostream operation
[senf.git] / Socket / Protocols / Raw / MACAddress.cci
index d80d0e6..a2ec274 100644 (file)
@@ -1,6 +1,8 @@
-// Copyright (C) 2007 
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
+// $Id$
+//
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
 //     Stefan Bund <g0dil@berlios.de>
 //
 // This program is free software; you can redistribute it and/or modify
@@ -36,16 +38,26 @@ prefix_ senf::MACAddress::MACAddress()
     std::fill(begin(),end(),0u);
 }
 
-prefix_ senf::MACAddress::MACAddress(NoInit_t)
+prefix_ senf::MACAddress::MACAddress(senf::NoInit_t)
 {}
 
+prefix_ senf::MACAddress::MACAddress(boost::uint64_t v)
+{
+    (*this)[0] = boost::uint8_t( v>>40 );
+    (*this)[1] = boost::uint8_t( v>>32 );
+    (*this)[2] = boost::uint8_t( v>>24 );
+    (*this)[3] = boost::uint8_t( v>>16 );
+    (*this)[4] = boost::uint8_t( v>> 8 );
+    (*this)[5] = boost::uint8_t( v     );
+}
+
 prefix_ bool senf::MACAddress::local()
     const
 {
     return (*this)[0] & 0x02;
 }
 
-prefix_ bool senf::MACAddress::group()
+prefix_ bool senf::MACAddress::multicast()
     const
 {
     return (*this)[0] & 0x01;
@@ -96,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_