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
@@ -31,157 +31,159 @@
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.
@@ -201,155 +203,158 @@ class ONetworkInterface : public QObject
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.