Diffstat (limited to 'libopie2/opienet/onetutils.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libopie2/opienet/onetutils.cpp | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/libopie2/opienet/onetutils.cpp b/libopie2/opienet/onetutils.cpp new file mode 100644 index 0000000..8006f41 --- a/dev/null +++ b/libopie2/opienet/onetutils.cpp @@ -0,0 +1,101 @@ +/* + This file is part of the Opie Project + + (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> + =. + .=l. + .>+-= + _;:, .> :=|. This program is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU Library General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -<s. This program is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU +..}^=.= = ; Library General Public License for more +++= -. .` .: details. + : = ...= . :.=- + -. .:....=;==+<; You should have received a copy of the GNU + -_. . . )=. = Library General Public License along with + -- :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#include <opie2/onetutils.h> + +#include <net/if.h> + +#include <cstdio> +using namespace std; + +/*====================================================================================== + * OMacAddress + *======================================================================================*/ + +// static initializer for broadcast and unknown MAC Adresses +const unsigned char __broadcast[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; +const OMacAddress& OMacAddress::broadcast = OMacAddress( __broadcast ); +const unsigned char __unknown[6] = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 }; +const OMacAddress& OMacAddress::unknown = OMacAddress( __unknown ); + + +//TODO: Incorporate Ethernet Manufacturer database here! + +OMacAddress::OMacAddress( unsigned char* p ) +{ + memcpy( _bytes, p, 6 ); // D'OH! memcpy in my sources... eeek... +} + + +OMacAddress::OMacAddress( const unsigned char* p ) +{ + memcpy( _bytes, p, 6 ); +} + + +OMacAddress::OMacAddress( struct ifreq& ifr ) +{ + memcpy( _bytes, ifr.ifr_hwaddr.sa_data, 6 ); +} + + +OMacAddress::~OMacAddress() +{ +} + + +QString OMacAddress::toString() const +{ + QString s; + s.sprintf( "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", + _bytes[0]&0xff, _bytes[1]&0xff, _bytes[2]&0xff, + _bytes[3]&0xff, _bytes[4]&0xff, _bytes[5]&0xff ); + return s; +} + + +bool operator==( const OMacAddress &m1, const OMacAddress &m2 ) +{ + return memcmp( &m1._bytes, &m2._bytes, 6 ) == 0; +} + +void dumpBytes( const unsigned char* data, int num ) +{ + printf( "Dumping %d bytes @ %0x", num, data ); + printf( "-------------------------------------------\n" ); + + for ( int i = 0; i < num; ++i ) + { + printf( "%02x ", data[i] ); + if ( !((i+1) % 32) ) printf( "\n" ); + } + printf( "\n\n" ); +} |