summaryrefslogtreecommitdiff
path: root/libopie2
Unidiff
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opienet/onetutils.cpp12
1 files changed, 0 insertions, 12 deletions
diff --git a/libopie2/opienet/onetutils.cpp b/libopie2/opienet/onetutils.cpp
index 236f108..e05efc2 100644
--- a/libopie2/opienet/onetutils.cpp
+++ b/libopie2/opienet/onetutils.cpp
@@ -1,221 +1,209 @@
1/* 1/*
2                 This file is part of the Opie Project 2                 This file is part of the Opie Project
3 3
4              (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> 4              (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de>
5 =. 5 =.
6 .=l. 6 .=l.
7           .>+-= 7           .>+-=
8 _;:,     .>    :=|. This program is free software; you can 8 _;:,     .>    :=|. This program is free software; you can
9.> <`_,   >  .   <= redistribute it and/or modify it under 9.> <`_,   >  .   <= redistribute it and/or modify it under
10:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 10:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
11.="- .-=="i,     .._ License as published by the Free Software 11.="- .-=="i,     .._ License as published by the Free Software
12 - .   .-<_>     .<> Foundation; either version 2 of the License, 12 - .   .-<_>     .<> Foundation; either version 2 of the License,
13     ._= =}       : or (at your option) any later version. 13     ._= =}       : or (at your option) any later version.
14    .%`+i>       _;_. 14    .%`+i>       _;_.
15    .i_,=:_.      -<s. This program is distributed in the hope that 15    .i_,=:_.      -<s. This program is distributed in the hope that
16     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 16     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
17    : ..    .:,     . . . without even the implied warranty of 17    : ..    .:,     . . . without even the implied warranty of
18    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 18    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
19  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 19  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
20..}^=.=       =       ; Library General Public License for more 20..}^=.=       =       ; Library General Public License for more
21++=   -.     .`     .: details. 21++=   -.     .`     .: details.
22 :     =  ...= . :.=- 22 :     =  ...= . :.=-
23 -.   .:....=;==+<; You should have received a copy of the GNU 23 -.   .:....=;==+<; You should have received a copy of the GNU
24  -_. . .   )=.  = Library General Public License along with 24  -_. . .   )=.  = Library General Public License along with
25    --        :-=` this library; see the file COPYING.LIB. 25    --        :-=` this library; see the file COPYING.LIB.
26 If not, write to the Free Software Foundation, 26 If not, write to the Free Software Foundation,
27 Inc., 59 Temple Place - Suite 330, 27 Inc., 59 Temple Place - Suite 330,
28 Boston, MA 02111-1307, USA. 28 Boston, MA 02111-1307, USA.
29 29
30*/ 30*/
31 31
32#include <opie2/onetutils.h> 32#include <opie2/onetutils.h>
33#include <opie2/onetwork.h> 33#include <opie2/onetwork.h>
34#include <opie2/omanufacturerdb.h> 34#include <opie2/omanufacturerdb.h>
35 35
36#include <net/if.h> 36#include <net/if.h>
37 37
38#include <cstdio> 38#include <cstdio>
39using namespace std; 39using namespace std;
40 40
41#define IW_PRIV_TYPE_MASK 0x7000 41#define IW_PRIV_TYPE_MASK 0x7000
42#define IW_PRIV_TYPE_NONE 0x0000 42#define IW_PRIV_TYPE_NONE 0x0000
43#define IW_PRIV_TYPE_BYTE 0x1000 43#define IW_PRIV_TYPE_BYTE 0x1000
44#define IW_PRIV_TYPE_CHAR 0x2000 44#define IW_PRIV_TYPE_CHAR 0x2000
45#define IW_PRIV_TYPE_INT 0x4000 45#define IW_PRIV_TYPE_INT 0x4000
46#define IW_PRIV_TYPE_FLOAT 0x5000 46#define IW_PRIV_TYPE_FLOAT 0x5000
47#define IW_PRIV_TYPE_ADDR 0x6000 47#define IW_PRIV_TYPE_ADDR 0x6000
48#define IW_PRIV_SIZE_FIXED 0x0800 48#define IW_PRIV_SIZE_FIXED 0x0800
49#define IW_PRIV_SIZE_MASK 0x07FF 49#define IW_PRIV_SIZE_MASK 0x07FF
50 50
51/*====================================================================================== 51/*======================================================================================
52 * OMacAddress 52 * OMacAddress
53 *======================================================================================*/ 53 *======================================================================================*/
54 54
55// static initializer for broadcast and unknown MAC Adresses 55// static initializer for broadcast and unknown MAC Adresses
56const unsigned char __broadcast[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; 56const unsigned char __broadcast[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
57const OMacAddress& OMacAddress::broadcast = OMacAddress( __broadcast ); 57const OMacAddress& OMacAddress::broadcast = OMacAddress( __broadcast );
58const unsigned char __unknown[6] = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 }; 58const unsigned char __unknown[6] = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 };
59const OMacAddress& OMacAddress::unknown = OMacAddress( __unknown ); 59const OMacAddress& OMacAddress::unknown = OMacAddress( __unknown );
60 60
61 61
62//TODO: Incorporate Ethernet Manufacturer database here! 62//TODO: Incorporate Ethernet Manufacturer database here!
63 63
64OMacAddress::OMacAddress( unsigned char* p ) 64OMacAddress::OMacAddress( unsigned char* p )
65{ 65{
66 memcpy( _bytes, p, 6 ); 66 memcpy( _bytes, p, 6 );
67} 67}
68 68
69 69
70OMacAddress::OMacAddress( const unsigned char* p ) 70OMacAddress::OMacAddress( const unsigned char* p )
71{ 71{
72 memcpy( _bytes, p, 6 ); 72 memcpy( _bytes, p, 6 );
73} 73}
74 74
75 75
76OMacAddress::OMacAddress( struct ifreq& ifr ) 76OMacAddress::OMacAddress( struct ifreq& ifr )
77{ 77{
78 memcpy( _bytes, ifr.ifr_hwaddr.sa_data, 6 ); 78 memcpy( _bytes, ifr.ifr_hwaddr.sa_data, 6 );
79} 79}
80 80
81 81
82OMacAddress::~OMacAddress() 82OMacAddress::~OMacAddress()
83{ 83{
84} 84}
85 85
86 86
87//#ifdef QT_NO_DEBUG 87//#ifdef QT_NO_DEBUG
88//inline 88//inline
89//#endif 89//#endif
90const unsigned char* OMacAddress::native() const 90const unsigned char* OMacAddress::native() const
91{ 91{
92 return (const unsigned char*) &_bytes; 92 return (const unsigned char*) &_bytes;
93} 93}
94 94
95 95
96OMacAddress OMacAddress::fromString( const QString& str ) 96OMacAddress OMacAddress::fromString( const QString& str )
97{ 97{
98 QString addr( str ); 98 QString addr( str );
99 unsigned char buf[6]; 99 unsigned char buf[6];
100 bool ok = true; 100 bool ok = true;
101 int index = 14; 101 int index = 14;
102 for ( int i = 5; i >= 0; --i ) 102 for ( int i = 5; i >= 0; --i )
103 { 103 {
104 buf[i] = addr.right( 2 ).toUShort( &ok, 16 ); 104 buf[i] = addr.right( 2 ).toUShort( &ok, 16 );
105 if ( !ok ) return OMacAddress::unknown; 105 if ( !ok ) return OMacAddress::unknown;
106 addr.truncate( index ); 106 addr.truncate( index );
107 index -= 3; 107 index -= 3;
108 } 108 }
109 return (const unsigned char*) &buf; 109 return (const unsigned char*) &buf;
110} 110}
111 111
112 112
113QString OMacAddress::toString( bool substitute ) const 113QString OMacAddress::toString( bool substitute ) const
114{ 114{
115 QString manu; 115 QString manu;
116 manu.sprintf( "%.2X:%.2X:%.2X", _bytes[0]&0xff, _bytes[1]&0xff, _bytes[2]&0xff ); 116 manu.sprintf( "%.2X:%.2X:%.2X", _bytes[0]&0xff, _bytes[1]&0xff, _bytes[2]&0xff );
117 QString serial; 117 QString serial;
118 serial.sprintf( ":%.2X:%.2X:%.2X", _bytes[3]&0xff, _bytes[4]&0xff, _bytes[5]&0xff ); 118 serial.sprintf( ":%.2X:%.2X:%.2X", _bytes[3]&0xff, _bytes[4]&0xff, _bytes[5]&0xff );
119 if ( !substitute ) return manu+serial; 119 if ( !substitute ) return manu+serial;
120 // fallback - if no vendor is found, just use the number 120 // fallback - if no vendor is found, just use the number
121 QString textmanu = OManufacturerDB::instance()->lookup( manu ); 121 QString textmanu = OManufacturerDB::instance()->lookup( manu );
122 return textmanu.isNull() ? manu+serial : textmanu + serial; 122 return textmanu.isNull() ? manu+serial : textmanu + serial;
123} 123}
124 124
125 125
126QString OMacAddress::manufacturer() const 126QString OMacAddress::manufacturer() const
127{ 127{
128 return OManufacturerDB::instance()->lookup( toString() ); 128 return OManufacturerDB::instance()->lookup( toString() );
129} 129}
130 130
131bool operator==( const OMacAddress &m1, const OMacAddress &m2 ) 131bool operator==( const OMacAddress &m1, const OMacAddress &m2 )
132{ 132{
133 return memcmp( &m1._bytes, &m2._bytes, 6 ) == 0; 133 return memcmp( &m1._bytes, &m2._bytes, 6 ) == 0;
134} 134}
135 135
136 136
137/*====================================================================================== 137/*======================================================================================
138 * OHostAddress 138 * OHostAddress
139 *======================================================================================*/ 139 *======================================================================================*/
140 140
141 141
142/*====================================================================================== 142/*======================================================================================
143 * OPrivateIOCTL 143 * OPrivateIOCTL
144 *======================================================================================*/ 144 *======================================================================================*/
145 145
146OPrivateIOCTL::OPrivateIOCTL( QObject* parent, const char* name, int cmd, int getargs, int setargs ) 146OPrivateIOCTL::OPrivateIOCTL( QObject* parent, const char* name, int cmd, int getargs, int setargs )
147 :QObject( parent, name ), _ioctl( cmd ), _getargs( getargs ), _setargs( setargs ) 147 :QObject( parent, name ), _ioctl( cmd ), _getargs( getargs ), _setargs( setargs )
148{ 148{
149} 149}
150 150
151 151
152OPrivateIOCTL::~OPrivateIOCTL() 152OPrivateIOCTL::~OPrivateIOCTL()
153{ 153{
154} 154}
155 155
156 156
157#ifdef QT_NO_DEBUG
158inline
159#endif
160int OPrivateIOCTL::numberGetArgs() const 157int OPrivateIOCTL::numberGetArgs() const
161{ 158{
162 return _getargs & IW_PRIV_SIZE_MASK; 159 return _getargs & IW_PRIV_SIZE_MASK;
163} 160}
164 161
165 162
166#ifdef QT_NO_DEBUG
167inline
168#endif
169int OPrivateIOCTL::typeGetArgs() const 163int OPrivateIOCTL::typeGetArgs() const
170{ 164{
171 return _getargs & IW_PRIV_TYPE_MASK >> 12; 165 return _getargs & IW_PRIV_TYPE_MASK >> 12;
172} 166}
173 167
174 168
175#ifdef QT_NO_DEBUG
176inline
177#endif
178int OPrivateIOCTL::numberSetArgs() const 169int OPrivateIOCTL::numberSetArgs() const
179{ 170{
180 return _setargs & IW_PRIV_SIZE_MASK; 171 return _setargs & IW_PRIV_SIZE_MASK;
181} 172}
182 173
183 174
184#ifdef QT_NO_DEBUG
185inline
186#endif
187int OPrivateIOCTL::typeSetArgs() const 175int OPrivateIOCTL::typeSetArgs() const
188{ 176{
189 return _setargs & IW_PRIV_TYPE_MASK >> 12; 177 return _setargs & IW_PRIV_TYPE_MASK >> 12;
190} 178}
191 179
192 180
193void OPrivateIOCTL::invoke() const 181void OPrivateIOCTL::invoke() const
194{ 182{
195 ( (OWirelessNetworkInterface*) parent() )->wioctl( _ioctl ); 183 ( (OWirelessNetworkInterface*) parent() )->wioctl( _ioctl );
196} 184}
197 185
198 186
199void OPrivateIOCTL::setParameter( int num, u_int32_t value ) 187void OPrivateIOCTL::setParameter( int num, u_int32_t value )
200{ 188{
201 u_int32_t* arglist = (u_int32_t*) &( (OWirelessNetworkInterface*) parent() )->_iwr.u.name; 189 u_int32_t* arglist = (u_int32_t*) &( (OWirelessNetworkInterface*) parent() )->_iwr.u.name;
202 arglist[num] = value; 190 arglist[num] = value;
203} 191}
204 192
205/*====================================================================================== 193/*======================================================================================
206 * assorted functions 194 * assorted functions
207 *======================================================================================*/ 195 *======================================================================================*/
208 196
209void dumpBytes( const unsigned char* data, int num ) 197void dumpBytes( const unsigned char* data, int num )
210{ 198{
211 printf( "Dumping %d bytes @ %0x", num, data ); 199 printf( "Dumping %d bytes @ %0x", num, data );
212 printf( "-------------------------------------------\n" ); 200 printf( "-------------------------------------------\n" );
213 201
214 for ( int i = 0; i < num; ++i ) 202 for ( int i = 0; i < num; ++i )
215 { 203 {
216 printf( "%02x ", data[i] ); 204 printf( "%02x ", data[i] );
217 if ( !((i+1) % 32) ) printf( "\n" ); 205 if ( !((i+1) % 32) ) printf( "\n" );
218 } 206 }
219 printf( "\n\n" ); 207 printf( "\n\n" );
220} 208}
221 209