summaryrefslogtreecommitdiff
path: root/libopie2/opienet
authormickeyl <mickeyl>2003-05-01 23:06:29 (UTC)
committer mickeyl <mickeyl>2003-05-01 23:06:29 (UTC)
commit49dfb55bd22f5027fcbcbc55648efd4bce6c8fd6 (patch) (unidiff)
tree503a7fe9fba8e297b15c07398fbf2ee215294f1c /libopie2/opienet
parent8266da96576ad43a768da37000cef4e8eba000ac (diff)
downloadopie-49dfb55bd22f5027fcbcbc55648efd4bce6c8fd6.zip
opie-49dfb55bd22f5027fcbcbc55648efd4bce6c8fd6.tar.gz
opie-49dfb55bd22f5027fcbcbc55648efd4bce6c8fd6.tar.bz2
more work on a higher level listview interface
Diffstat (limited to 'libopie2/opienet') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opienet/onetwork.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/libopie2/opienet/onetwork.h b/libopie2/opienet/onetwork.h
index a29b29d..1b38d02 100644
--- a/libopie2/opienet/onetwork.h
+++ b/libopie2/opienet/onetwork.h
@@ -1,533 +1,538 @@
1/* 1/*
2                 This file is part of the Opie Project 2                 This file is part of the Opie Project
3              Copyright (C) 2003 by the Wellenreiter team: 3              Copyright (C) 2003 by the Wellenreiter team:
4 Martin J. Muench <mjm@remote-exploit.org> 4 Martin J. Muench <mjm@remote-exploit.org>
5 Max Moser <mmo@remote-exploit.org 5 Max Moser <mmo@remote-exploit.org
6 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> 6 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de>
7 =. 7 =.
8 .=l. 8 .=l.
9           .>+-= 9           .>+-=
10 _;:,     .>    :=|. This program is free software; you can 10 _;:,     .>    :=|. This program is free software; you can
11.> <`_,   >  .   <= redistribute it and/or modify it under 11.> <`_,   >  .   <= redistribute it and/or modify it under
12:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 12:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
13.="- .-=="i,     .._ License as published by the Free Software 13.="- .-=="i,     .._ License as published by the Free Software
14 - .   .-<_>     .<> Foundation; either version 2 of the License, 14 - .   .-<_>     .<> Foundation; either version 2 of the License,
15     ._= =}       : or (at your option) any later version. 15     ._= =}       : or (at your option) any later version.
16    .%`+i>       _;_. 16    .%`+i>       _;_.
17    .i_,=:_.      -<s. This program is distributed in the hope that 17    .i_,=:_.      -<s. This program is distributed in the hope that
18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
19    : ..    .:,     . . . without even the implied warranty of 19    : ..    .:,     . . . without even the implied warranty of
20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
22..}^=.=       =       ; Library General Public License for more 22..}^=.=       =       ; Library General Public License for more
23++=   -.     .`     .: details. 23++=   -.     .`     .: details.
24 :     =  ...= . :.=- 24 :     =  ...= . :.=-
25 -.   .:....=;==+<; You should have received a copy of the GNU 25 -.   .:....=;==+<; You should have received a copy of the GNU
26  -_. . .   )=.  = Library General Public License along with 26  -_. . .   )=.  = Library General Public License along with
27    --        :-=` this library; see the file COPYING.LIB. 27    --        :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31 31
32*/ 32*/
33 33
34#ifndef ONETWORK_H 34#ifndef ONETWORK_H
35#define ONETWORK_H 35#define ONETWORK_H
36 36
37/* OPIE */ 37/* OPIE */
38 38
39#include <opie2/onetutils.h> 39#include <opie2/onetutils.h>
40 40
41/* QT */ 41/* QT */
42 42
43#include <qvaluelist.h> 43#include <qvaluelist.h>
44#include <qdict.h> 44#include <qdict.h>
45#include <qmap.h> 45#include <qmap.h>
46#include <qobject.h> 46#include <qobject.h>
47#include <qhostaddress.h> 47#include <qhostaddress.h>
48 48
49#ifndef IFNAMSIZ 49#ifndef IFNAMSIZ
50#define IFNAMSIZ 16 50#define IFNAMSIZ 16
51#endif 51#endif
52#ifndef IW_MAX_PRIV_DEF 52#ifndef IW_MAX_PRIV_DEF
53#define IW_MAX_PRIV_DEF 128 53#define IW_MAX_PRIV_DEF 128
54#endif 54#endif
55 55
56// ML: Yeah, I hate to include kernel headers, but it's necessary here 56// ML: Yeah, I hate to include kernel headers, but it's necessary here
57// ML: Here comes an ugly hack to prevent <linux/wireless.h> including <linux/if.h> 57// ML: Here comes an ugly hack to prevent <linux/wireless.h> including <linux/if.h>
58// ML: which conflicts with the user header <net/if.h> 58// ML: which conflicts with the user header <net/if.h>
59// ML: We really need a user header for the Wireless Extensions, something like <net/wireless.h> 59// ML: We really need a user header for the Wireless Extensions, something like <net/wireless.h>
60// ML: I will drop Jean a mail on that subject 60// ML: I will drop Jean a mail on that subject
61 61
62#include <net/if.h> 62#include <net/if.h>
63#define _LINUX_IF_H 63#define _LINUX_IF_H
64#include <linux/wireless.h> 64#include <linux/wireless.h>
65 65
66class ONetworkInterface; 66class ONetworkInterface;
67class OWirelessNetworkInterface; 67class OWirelessNetworkInterface;
68class OChannelHopper; 68class OChannelHopper;
69class OMonitoringInterface; 69class OMonitoringInterface;
70 70
71/*====================================================================================== 71/*======================================================================================
72 * ONetwork 72 * ONetwork
73 *======================================================================================*/ 73 *======================================================================================*/
74 74
75/** 75/**
76 * @brief A container class for all network interfaces 76 * @brief A container class for all network interfaces
77 * 77 *
78 * This class provides access to all available network interfaces of your computer. 78 * This class provides access to all available network interfaces of your computer.
79 *
79 * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> 80 * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de>
80 */ 81 */
81class ONetwork : public QObject 82class ONetwork : public QObject
82{ 83{
83 Q_OBJECT 84 Q_OBJECT
84 85
85 public: 86 public:
86 typedef QDict<ONetworkInterface> InterfaceMap; 87 typedef QDict<ONetworkInterface> InterfaceMap;
87 typedef QDictIterator<ONetworkInterface> InterfaceIterator; 88 typedef QDictIterator<ONetworkInterface> InterfaceIterator;
88 89
89 public: 90 public:
90 /** 91 /**
91 * @returns the number of available interfaces 92 * @returns the number of available interfaces
92 */ 93 */
93 int count() const; 94 int count() const;
94 /** 95 /**
95 * @returns a pointer to the (one and only) @ref ONetwork instance. 96 * @returns a pointer to the (one and only) @ref ONetwork instance.
96 */ 97 */
97 static ONetwork* instance(); 98 static ONetwork* instance();
98 /** 99 /**
99 * @returns an iterator usable for iterating through all network interfaces. 100 * @returns an iterator usable for iterating through all network interfaces.
100 */ 101 */
101 InterfaceIterator iterator() const; 102 InterfaceIterator iterator() const;
102 /** 103 /**
103 * @returns true, if the @a interface supports the wireless extension protocol. 104 * @returns true, if the @a interface supports the wireless extension protocol.
104 */ 105 */
105 // FIXME QString? -zecke 106 // FIXME QString? -zecke
106 bool isWirelessInterface( const char* interface ) const; 107 bool isWirelessInterface( const char* interface ) const;
107 /** 108 /**
108 * @returns a pointer to the @ref ONetworkInterface object for the specified @a interface or 0, if not found 109 * @returns a pointer to the @ref ONetworkInterface object for the specified @a interface or 0, if not found
109 * @see ONetworkInterface 110 * @see ONetworkInterface
110 */ 111 */
111 // FIXME: const QString& is prefered over QString!!! -zecke 112 // FIXME: const QString& is prefered over QString!!! -zecke
112 ONetworkInterface* interface( const QString& interface ) const; 113 ONetworkInterface* interface( const QString& interface ) const;
113 /** 114 /**
114 * @internal Rebuild the internal interface database 115 * @internal Rebuild the internal interface database
115 * @note Sometimes it might be useful to call this from client code, 116 * @note Sometimes it might be useful to call this from client code,
116 * e.g. after issuing a cardctl insert 117 * e.g. after issuing a cardctl insert
117 */ 118 */
118 void synchronize(); 119 void synchronize();
119 120
120 protected: 121 protected:
121 ONetwork(); 122 ONetwork();
122 123
123 private: 124 private:
124 static ONetwork* _instance; 125 static ONetwork* _instance;
125 InterfaceMap _interfaces; 126 InterfaceMap _interfaces;
126}; 127};
127 128
128 129
129/*====================================================================================== 130/*======================================================================================
130 * ONetworkInterface 131 * ONetworkInterface
131 *======================================================================================*/ 132 *======================================================================================*/
132 133
133/** 134/**
134 * @brief A network interface wrapper. 135 * @brief A network interface wrapper.
135 * 136 *
136 * This class provides a wrapper for a network interface. All the cumbersume details of 137 * This class provides a wrapper for a network interface. All the cumbersume details of
137 * Linux ioctls are hidden under a convenient high-level interface. 138 * Linux ioctls are hidden under a convenient high-level interface.
138 * @warning Most of the setting methods contained in this class require the appropriate 139 * @warning Most of the setting methods contained in this class require the appropriate
139 * process permissions to work. 140 * process permissions to work.
141 *
140 * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> 142 * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de>
141 */ 143 */
142class ONetworkInterface : public QObject 144class ONetworkInterface : public QObject
143{ 145{
144 friend class OMonitoringInterface; 146 friend class OMonitoringInterface;
145 friend class OCiscoMonitoringInterface; 147 friend class OCiscoMonitoringInterface;
146 friend class OWlanNGMonitoringInterface; 148 friend class OWlanNGMonitoringInterface;
147 friend class OHostAPMonitoringInterface; 149 friend class OHostAPMonitoringInterface;
148 friend class OOrinocoMonitoringInterface; 150 friend class OOrinocoMonitoringInterface;
149 151
150 public: 152 public:
151 /** 153 /**
152 * Constructor. Normally you don't create @ref ONetworkInterface objects yourself, 154 * Constructor. Normally you don't create @ref ONetworkInterface objects yourself,
153 * but access them via @ref ONetwork::interface(). 155 * but access them via @ref ONetwork::interface().
154 */ 156 */
155 ONetworkInterface( QObject* parent, const char* name ); 157 ONetworkInterface( QObject* parent, const char* name );
156 /** 158 /**
157 * Destructor. 159 * Destructor.
158 */ 160 */
159 virtual ~ONetworkInterface(); 161 virtual ~ONetworkInterface();
160 /** 162 /**
161 * Associates a @a monitoring interface with this network interface. 163 * Associates a @a monitoring interface with this network interface.
162 * @note This is currently only useful with @ref OWirelessNetworkInterface objects. 164 * @note This is currently only useful with @ref OWirelessNetworkInterface objects.
163 */ 165 */
164 void setMonitoring( OMonitoringInterface* monitoring ); 166 void setMonitoring( OMonitoringInterface* monitoring );
165 /** 167 /**
166 * @returns the currently associated monitoring interface or 0, if no monitoring is associated. 168 * @returns the currently associated monitoring interface or 0, if no monitoring is associated.
167 */ 169 */
168 OMonitoringInterface* monitoring() const; 170 OMonitoringInterface* monitoring() const;
169 /** 171 /**
170 * Setting an interface to promiscuous mode enables the device to receive 172 * Setting an interface to promiscuous mode enables the device to receive
171 * all packets on the shared medium - as opposed to packets which are addressed to this interface. 173 * all packets on the shared medium - as opposed to packets which are addressed to this interface.
172 */ 174 */
173 bool setPromiscuousMode( bool ); 175 bool setPromiscuousMode( bool );
174 /** 176 /**
175 * @returns true if the interface is set to promiscuous mode. 177 * @returns true if the interface is set to promiscuous mode.
176 */ 178 */
177 bool promiscuousMode() const; 179 bool promiscuousMode() const;
178 /** 180 /**
179 * Setting an interface to up enables it to receive packets. 181 * Setting an interface to up enables it to receive packets.
180 */ 182 */
181 bool setUp( bool ); 183 bool setUp( bool );
182 /** 184 /**
183 * @returns true if the interface is up. 185 * @returns true if the interface is up.
184 */ 186 */
185 bool isUp() const; 187 bool isUp() const;
186 /** 188 /**
187 * @returns true if the interface is a loopback interface. 189 * @returns true if the interface is a loopback interface.
188 */ 190 */
189 bool isLoopback() const; 191 bool isLoopback() const;
190 /** 192 /**
191 * @returns true if the interface is featuring supports the wireless extension protocol. 193 * @returns true if the interface is featuring supports the wireless extension protocol.
192 */ 194 */
193 bool isWireless() const; 195 bool isWireless() const;
194 /** 196 /**
195 * Associate the IP address @ addr with the interface. 197 * Associate the IP address @ addr with the interface.
196 */ 198 */
197 void setIPV4Address( const QHostAddress& addr ); 199 void setIPV4Address( const QHostAddress& addr );
198 /** 200 /**
199 * @returns the IPv4 address associated with the interface. 201 * @returns the IPv4 address associated with the interface.
200 */ 202 */
201 QString ipV4Address() const; //TODO: make this return an OHostAddress 203 QString ipV4Address() const; //TODO: make this return an OHostAddress
202 /** 204 /**
203 * Associate the MAC address @a addr with the interface. 205 * Associate the MAC address @a addr with the interface.
204 * @note It can be necessary to shut down the interface prior to calling this method. 206 * @note It can be necessary to shut down the interface prior to calling this method.
205 * @warning This is not supported by all drivers. 207 * @warning This is not supported by all drivers.
206 */ 208 */
207 void setMacAddress( const OMacAddress& addr ); 209 void setMacAddress( const OMacAddress& addr );
208 /** 210 /**
209 * @returns the MAC address associated with the interface. 211 * @returns the MAC address associated with the interface.
210 */ 212 */
211 OMacAddress macAddress() const; 213 OMacAddress macAddress() const;
212 /** 214 /**
213 * Associate the IPv4 @a netmask with the interface. 215 * Associate the IPv4 @a netmask with the interface.
214 */ 216 */
215 void setIPV4Netmask( const QHostAddress& netmask ); 217 void setIPV4Netmask( const QHostAddress& netmask );
216 /** 218 /**
217 * @returns the IPv4 netmask associated with the interface. 219 * @returns the IPv4 netmask associated with the interface.
218 */ 220 */
219 QString ipV4Netmask() const; //TODO: make this return an OHostAddress 221 QString ipV4Netmask() const; //TODO: make this return an OHostAddress
220 /** 222 /**
221 * @returns the data link type currently associated with the interface. 223 * @returns the data link type currently associated with the interface.
222 * @see #include <net/if_arp.h> for possible values. 224 * @see #include <net/if_arp.h> for possible values.
223 */ 225 */
224 int dataLinkType() const; 226 int dataLinkType() const;
225 227
226 protected: 228 protected:
227 const int _sfd; 229 const int _sfd;
228 mutable ifreq _ifr; 230 mutable ifreq _ifr;
229 OMonitoringInterface* _mon; 231 OMonitoringInterface* _mon;
230 232
231 protected: 233 protected:
232 struct ifreq& ifr() const; 234 struct ifreq& ifr() const;
233 virtual void init(); 235 virtual void init();
234 bool ioctl( int call ) const; 236 bool ioctl( int call ) const;
235 bool ioctl( int call, struct ifreq& ) const; 237 bool ioctl( int call, struct ifreq& ) const;
236}; 238};
237 239
238/*====================================================================================== 240/*======================================================================================
239 * OChannelHopper 241 * OChannelHopper
240 *======================================================================================*/ 242 *======================================================================================*/
241 243
242/** 244/**
243 * @brief A radio frequency channel hopper. 245 * @brief A radio frequency channel hopper.
244 * 246 *
245 * This class provides a channel hopper for radio frequencies. A channel hopper frequently 247 * This class provides a channel hopper for radio frequencies. A channel hopper frequently
246 * changes the radio frequency channel of its associated @ref OWirelessNetworkInterface. 248 * changes the radio frequency channel of its associated @ref OWirelessNetworkInterface.
247 * This is necessary when in monitoring mode and scanning for other devices, because 249 * This is necessary when in monitoring mode and scanning for other devices, because
248 * the radio frequency hardware can only detect packets sent on the same frequency. 250 * the radio frequency hardware can only detect packets sent on the same frequency.
251 *
249 * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> 252 * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de>
250 */ 253 */
251class OChannelHopper : public QObject 254class OChannelHopper : public QObject
252{ 255{
253 Q_OBJECT 256 Q_OBJECT
254 257
255 public: 258 public:
256 /** 259 /**
257 * Constructor. 260 * Constructor.
258 */ 261 */
259 OChannelHopper( OWirelessNetworkInterface* ); 262 OChannelHopper( OWirelessNetworkInterface* );
260 /** 263 /**
261 * Destructor. 264 * Destructor.
262 */ 265 */
263 virtual ~OChannelHopper(); 266 virtual ~OChannelHopper();
264 /** 267 /**
265 * @returns true, if the channel hopper is hopping channels 268 * @returns true, if the channel hopper is hopping channels
266 */ 269 */
267 bool isActive() const; 270 bool isActive() const;
268 /** 271 /**
269 * @returns the last hopped channel 272 * @returns the last hopped channel
270 */ 273 */
271 int channel() const; 274 int channel() const;
272 /** 275 /**
273 * Set the channel hopping @a interval. 276 * Set the channel hopping @a interval.
274 * An interval of 0 deactivates the channel hopper. 277 * An interval of 0 deactivates the channel hopper.
275 */ 278 */
276 void setInterval( int interval ); 279 void setInterval( int interval );
277 /** 280 /**
278 * @returns the channel hopping interval 281 * @returns the channel hopping interval
279 */ 282 */
280 int interval() const; 283 int interval() const;
281 284
282 signals: 285 signals:
283 /** 286 /**
284 * This signal is emitted right after the channel hopper performed a hop 287 * This signal is emitted right after the channel hopper performed a hop
285 */ 288 */
286 void hopped( int ); 289 void hopped( int );
287 290
288 protected: 291 protected:
289 virtual void timerEvent( QTimerEvent* ); 292 virtual void timerEvent( QTimerEvent* );
290 293
291 private: 294 private:
292 OWirelessNetworkInterface* _iface; 295 OWirelessNetworkInterface* _iface;
293 int _interval; 296 int _interval;
294 int _tid; 297 int _tid;
295 QValueList<int> _channels; 298 QValueList<int> _channels;
296 QValueList<int>::Iterator _channel; 299 QValueList<int>::Iterator _channel;
297}; 300};
298 301
299 302
300/*====================================================================================== 303/*======================================================================================
301 * OWirelessNetworkInterface 304 * OWirelessNetworkInterface
302 *======================================================================================*/ 305 *======================================================================================*/
303 306
304/** 307/**
305 * @brief A network interface wrapper for interfaces supporting the wireless extensions protocol. 308 * @brief A network interface wrapper for interfaces supporting the wireless extensions protocol.
306 * 309 *
307 * This class provides a high-level encapsulation of the Linux wireless extension API. 310 * This class provides a high-level encapsulation of the Linux wireless extension API.
311 *
312 * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de>
308 */ 313 */
309class OWirelessNetworkInterface : public ONetworkInterface 314class OWirelessNetworkInterface : public ONetworkInterface
310{ 315{
311 friend class OMonitoringInterface; 316 friend class OMonitoringInterface;
312 friend class OCiscoMonitoringInterface; 317 friend class OCiscoMonitoringInterface;
313 friend class OWlanNGMonitoringInterface; 318 friend class OWlanNGMonitoringInterface;
314 friend class OHostAPMonitoringInterface; 319 friend class OHostAPMonitoringInterface;
315 friend class OOrinocoMonitoringInterface; 320 friend class OOrinocoMonitoringInterface;
316 321
317 friend class OPrivateIOCTL; 322 friend class OPrivateIOCTL;
318 323
319 public: 324 public:
320 /** 325 /**
321 * Constructor. 326 * Constructor.
322 */ 327 */
323 OWirelessNetworkInterface( QObject* parent, const char* name ); 328 OWirelessNetworkInterface( QObject* parent, const char* name );
324 /** 329 /**
325 * Destructor. 330 * Destructor.
326 */ 331 */
327 virtual ~OWirelessNetworkInterface(); 332 virtual ~OWirelessNetworkInterface();
328 /** 333 /**
329 * Setting the @a channel of the interface changes the radio frequency (RF) 334 * Setting the @a channel of the interface changes the radio frequency (RF)
330 * of the corresponding wireless network device. 335 * of the corresponding wireless network device.
331 */ 336 */
332 virtual void setChannel( int channel ) const; 337 virtual void setChannel( int channel ) const;
333 /** 338 /**
334 * @returns the channel index of the current radio frequency. 339 * @returns the channel index of the current radio frequency.
335 */ 340 */
336 virtual int channel() const; 341 virtual int channel() const;
337 /** 342 /**
338 * @returns the current radio frequency (in MHz). 343 * @returns the current radio frequency (in MHz).
339 */ 344 */
340 virtual double frequency() const; 345 virtual double frequency() const;
341 /** 346 /**
342 * @returns the number of radio frequency channels for the 347 * @returns the number of radio frequency channels for the
343 * corresponding wireless network device. 348 * corresponding wireless network device.
344 * @note European devices usually have 14 channels, while American typically feature 11 channels. 349 * @note European devices usually have 14 channels, while American typically feature 11 channels.
345 */ 350 */
346 virtual int channels() const; 351 virtual int channels() const;
347 /** 352 /**
348 * Set the IEEE 802.11 operation @a mode. 353 * Set the IEEE 802.11 operation @a mode.
349 * Valid values are <ul><li>adhoc<li>managed<li>monitor<li>master 354 * Valid values are <ul><li>adhoc<li>managed<li>monitor<li>master
350 * @warning Not all drivers support the all modes. 355 * @warning Not all drivers support the all modes.
351 * @note You might have to change the SSID to get the operation mode change into effect. 356 * @note You might have to change the SSID to get the operation mode change into effect.
352 */ 357 */
353 virtual void setMode( const QString& mode ); 358 virtual void setMode( const QString& mode );
354 /** 359 /**
355 * @returns the current IEEE 802.11 operation mode. 360 * @returns the current IEEE 802.11 operation mode.
356 * Possible values are <ul><li>adhoc<li>managed<li>monitor<li>master or <li>unknown 361 * Possible values are <ul><li>adhoc<li>managed<li>monitor<li>master or <li>unknown
357 */ 362 */
358 virtual QString mode() const; 363 virtual QString mode() const;
359 /** 364 /**
360 * Setting the monitor mode on a wireless network interface enables 365 * Setting the monitor mode on a wireless network interface enables
361 * listening to IEEE 802.11 data and management frames which normally 366 * listening to IEEE 802.11 data and management frames which normally
362 * are handled by the device firmware. This can be used to detect 367 * are handled by the device firmware. This can be used to detect
363 * other wireless network devices, e.g. Access Points or Ad-hoc stations. 368 * other wireless network devices, e.g. Access Points or Ad-hoc stations.
364 * @warning Standard wireless network drives don't support the monitor mode. 369 * @warning Standard wireless network drives don't support the monitor mode.
365 * @warning You need a patched driver for this to work. 370 * @warning You need a patched driver for this to work.
366 * @note Enabling the monitor mode is highly driver dependent and requires 371 * @note Enabling the monitor mode is highly driver dependent and requires
367 * the proper @ref OMonitoringInterface to be associated with the interface. 372 * the proper @ref OMonitoringInterface to be associated with the interface.
368 * @see OMonitoringInterface 373 * @see OMonitoringInterface
369 */ 374 */
370 virtual void setMonitorMode( bool ); //FIXME: ==> setMode( "monitor" ); 375 virtual void setMonitorMode( bool ); //FIXME: ==> setMode( "monitor" );
371 /** 376 /**
372 * @returns true if the device is listening in IEEE 802.11 monitor mode 377 * @returns true if the device is listening in IEEE 802.11 monitor mode
373 */ 378 */
374 virtual bool monitorMode() const; //FIXME: ==> mode() 379 virtual bool monitorMode() const; //FIXME: ==> mode()
375 /** 380 /**
376 * Set the channel hopping @a interval. An @a interval of 0 disables channel hopping. 381 * Set the channel hopping @a interval. An @a interval of 0 disables channel hopping.
377 * @see OChannelHopper 382 * @see OChannelHopper
378 */ 383 */
379 virtual void setChannelHopping( int interval = 0 ); 384 virtual void setChannelHopping( int interval = 0 );
380 /** 385 /**
381 * @returns the channel hopping interval or 0, if channel hopping is disabled. 386 * @returns the channel hopping interval or 0, if channel hopping is disabled.
382 */ 387 */
383 virtual int channelHopping() const; 388 virtual int channelHopping() const;
384 /** 389 /**
385 * @returns the @ref OChannelHopper of this interface or 0, if channel hopping has not been activated before 390 * @returns the @ref OChannelHopper of this interface or 0, if channel hopping has not been activated before
386 */ 391 */
387 virtual OChannelHopper* channelHopper() const; 392 virtual OChannelHopper* channelHopper() const;
388 /** 393 /**
389 * Set the station @a nickname. 394 * Set the station @a nickname.
390 */ 395 */
391 virtual void setNickName( const QString& nickname ); 396 virtual void setNickName( const QString& nickname );
392 /** 397 /**
393 * @returns the current station nickname. 398 * @returns the current station nickname.
394 */ 399 */
395 virtual QString nickName() const; 400 virtual QString nickName() const;
396 /** 401 /**
397 * Invoke the private IOCTL @a command with a @number of parameters on the network interface. 402 * Invoke the private IOCTL @a command with a @number of parameters on the network interface.
398 * @see OPrivateIOCTL 403 * @see OPrivateIOCTL
399 */ 404 */
400 virtual void setPrivate( const QString& command, int number, ... ); 405 virtual void setPrivate( const QString& command, int number, ... );
401 /** 406 /**
402 * @returns true if the interface is featuring the private IOCTL @command. 407 * @returns true if the interface is featuring the private IOCTL @command.
403 */ 408 */
404 virtual bool hasPrivate( const QString& command ); 409 virtual bool hasPrivate( const QString& command );
405 virtual void getPrivate( const QString& command ); //FIXME: Implement and document this 410 virtual void getPrivate( const QString& command ); //FIXME: Implement and document this
406 411
407 virtual bool isAssociated() const {}; //FIXME: Implement and document this 412 virtual bool isAssociated() const {}; //FIXME: Implement and document this
408 /** 413 /**
409 * @returns the MAC address of the Access Point if the 414 * @returns the MAC address of the Access Point if the
410 * device is in infrastructure mode. @returns a (more or less random) CELL 415 * device is in infrastructure mode. @returns a (more or less random) CELL
411 * address if the device is in adhoc mode. 416 * address if the device is in adhoc mode.
412 */ 417 */
413 virtual QString associatedAP() const; 418 virtual QString associatedAP() const;
414 /** 419 /**
415 * Set the @a ssid (Service Set ID) string. This is used to decide 420 * Set the @a ssid (Service Set ID) string. This is used to decide
416 * which network to associate with (use "any" to let the driver decide). 421 * which network to associate with (use "any" to let the driver decide).
417 */ 422 */
418 virtual void setSSID( const QString& ssid ); 423 virtual void setSSID( const QString& ssid );
419 /** 424 /**
420 * @returns the current SSID (Service Set ID). 425 * @returns the current SSID (Service Set ID).
421 */ 426 */
422 virtual QString SSID() const; 427 virtual QString SSID() const;
423 428
424 protected: 429 protected:
425 void buildChannelList(); 430 void buildChannelList();
426 void buildPrivateList(); 431 void buildPrivateList();
427 virtual void init(); 432 virtual void init();
428 struct iwreq& iwr() const; 433 struct iwreq& iwr() const;
429 bool wioctl( int call ) const; 434 bool wioctl( int call ) const;
430 bool wioctl( int call, struct iwreq& ) const; 435 bool wioctl( int call, struct iwreq& ) const;
431 436
432 protected: 437 protected:
433 mutable struct iwreq _iwr; 438 mutable struct iwreq _iwr;
434 QMap<int,int> _channels; 439 QMap<int,int> _channels;
435 440
436 private: 441 private:
437 OChannelHopper* _hopper; 442 OChannelHopper* _hopper;
438}; 443};
439 444
440 445
441/*====================================================================================== 446/*======================================================================================
442 * OMonitoringInterface 447 * OMonitoringInterface
443 *======================================================================================*/ 448 *======================================================================================*/
444 449
445 450
446class OMonitoringInterface 451class OMonitoringInterface
447{ 452{
448 public: 453 public:
449 OMonitoringInterface(); 454 OMonitoringInterface();
450 OMonitoringInterface( ONetworkInterface* ); 455 OMonitoringInterface( ONetworkInterface* );
451 virtual ~OMonitoringInterface(); 456 virtual ~OMonitoringInterface();
452 457
453 public: 458 public:
454 virtual void setEnabled( bool ); 459 virtual void setEnabled( bool );
455 virtual bool enabled() const; 460 virtual bool enabled() const;
456 virtual void setChannel( int ); 461 virtual void setChannel( int );
457 462
458 virtual QString name() const = 0; 463 virtual QString name() const = 0;
459 464
460 protected: 465 protected:
461 OWirelessNetworkInterface* _if; 466 OWirelessNetworkInterface* _if;
462 467
463}; 468};
464 469
465 470
466/*====================================================================================== 471/*======================================================================================
467 * OCiscoMonitoring 472 * OCiscoMonitoring
468 *======================================================================================*/ 473 *======================================================================================*/
469 474
470 475
471class OCiscoMonitoringInterface : public OMonitoringInterface 476class OCiscoMonitoringInterface : public OMonitoringInterface
472{ 477{
473 public: 478 public:
474 OCiscoMonitoringInterface( ONetworkInterface* ); 479 OCiscoMonitoringInterface( ONetworkInterface* );
475 virtual ~OCiscoMonitoringInterface(); 480 virtual ~OCiscoMonitoringInterface();
476 481
477 virtual void setEnabled( bool ); 482 virtual void setEnabled( bool );
478 virtual QString name() const; 483 virtual QString name() const;
479 virtual void setChannel( int ); 484 virtual void setChannel( int );
480 485
481}; 486};
482 487
483/*====================================================================================== 488/*======================================================================================
484 * OWlanNGMonitoringInterface 489 * OWlanNGMonitoringInterface
485 *======================================================================================*/ 490 *======================================================================================*/
486 491
487class OWlanNGMonitoringInterface : public OMonitoringInterface 492class OWlanNGMonitoringInterface : public OMonitoringInterface
488{ 493{
489 public: 494 public:
490 OWlanNGMonitoringInterface( ONetworkInterface* ); 495 OWlanNGMonitoringInterface( ONetworkInterface* );
491 virtual ~OWlanNGMonitoringInterface(); 496 virtual ~OWlanNGMonitoringInterface();
492 497
493 public: 498 public:
494 virtual void setEnabled( bool ); 499 virtual void setEnabled( bool );
495 virtual QString name() const; 500 virtual QString name() const;
496 virtual void setChannel( int ); 501 virtual void setChannel( int );
497 502
498}; 503};
499 504
500/*====================================================================================== 505/*======================================================================================
501 * OHostAPMonitoringInterface 506 * OHostAPMonitoringInterface
502 *======================================================================================*/ 507 *======================================================================================*/
503 508
504class OHostAPMonitoringInterface : public OMonitoringInterface 509class OHostAPMonitoringInterface : public OMonitoringInterface
505{ 510{
506 public: 511 public:
507 OHostAPMonitoringInterface( ONetworkInterface* ); 512 OHostAPMonitoringInterface( ONetworkInterface* );
508 virtual ~OHostAPMonitoringInterface(); 513 virtual ~OHostAPMonitoringInterface();
509 514
510 public: 515 public:
511 virtual void setEnabled( bool ); 516 virtual void setEnabled( bool );
512 virtual QString name() const; 517 virtual QString name() const;
513 }; 518 };
514 519
515/*====================================================================================== 520/*======================================================================================
516 * OOrinocoMonitoringInterface 521 * OOrinocoMonitoringInterface
517 *======================================================================================*/ 522 *======================================================================================*/
518 523
519class OOrinocoMonitoringInterface : public OMonitoringInterface 524class OOrinocoMonitoringInterface : public OMonitoringInterface
520{ 525{
521 public: 526 public:
522 OOrinocoMonitoringInterface( ONetworkInterface* ); 527 OOrinocoMonitoringInterface( ONetworkInterface* );
523 virtual ~OOrinocoMonitoringInterface(); 528 virtual ~OOrinocoMonitoringInterface();
524 529
525 public: 530 public:
526 virtual void setChannel( int ); 531 virtual void setChannel( int );
527 virtual void setEnabled( bool ); 532 virtual void setEnabled( bool );
528 virtual QString name() const; 533 virtual QString name() const;
529 534
530}; 535};
531 536
532#endif // ONETWORK_H 537#endif // ONETWORK_H
533 538