-rw-r--r-- | libopie2/opienet/onetwork.h | 30 | ||||
-rw-r--r-- | libopie2/opienet/opcap.h | 5 |
2 files changed, 28 insertions, 7 deletions
diff --git a/libopie2/opienet/onetwork.h b/libopie2/opienet/onetwork.h index 2348bbc..f052317 100644 --- a/libopie2/opienet/onetwork.h +++ b/libopie2/opienet/onetwork.h | |||
@@ -84,65 +84,65 @@ class ONetwork : public QObject | |||
84 | 84 | ||
85 | public: | 85 | public: |
86 | typedef QDict<ONetworkInterface> InterfaceMap; | 86 | typedef QDict<ONetworkInterface> InterfaceMap; |
87 | typedef QDictIterator<ONetworkInterface> InterfaceIterator; | 87 | typedef QDictIterator<ONetworkInterface> InterfaceIterator; |
88 | 88 | ||
89 | public: | 89 | public: |
90 | /** | 90 | /** |
91 | * @returns the number of available interfaces | 91 | * @returns the number of available interfaces |
92 | */ | 92 | */ |
93 | int count() const; | 93 | int count() const; |
94 | /** | 94 | /** |
95 | * @returns a pointer to the (one and only) @ref ONetwork instance. | 95 | * @returns a pointer to the (one and only) @ref ONetwork instance. |
96 | */ | 96 | */ |
97 | static ONetwork* instance(); | 97 | static ONetwork* instance(); |
98 | /** | 98 | /** |
99 | * @returns an iterator usable for iterating through all network interfaces. | 99 | * @returns an iterator usable for iterating through all network interfaces. |
100 | */ | 100 | */ |
101 | InterfaceIterator iterator() const; | 101 | InterfaceIterator iterator() const; |
102 | /** | 102 | /** |
103 | * @returns true, if the @p interface supports the wireless extension protocol. | 103 | * @returns true, if the @p interface supports the wireless extension protocol. |
104 | */ | 104 | */ |
105 | // FIXME QString? -zecke | 105 | // FIXME QString? -zecke |
106 | bool isWirelessInterface( const char* interface ) const; | 106 | bool isWirelessInterface( const char* interface ) const; |
107 | /** | 107 | /** |
108 | * @returns a pointer to the @ref ONetworkInterface object for the specified @p interface or 0, if not found | 108 | * @returns a pointer to the @ref ONetworkInterface object for the specified @p interface or 0, if not found |
109 | * @see ONetworkInterface | 109 | * @see ONetworkInterface |
110 | */ | 110 | */ |
111 | // FIXME: const QString& is prefered over QString!!! -zecke | 111 | // FIXME: const QString& is prefered over QString!!! -zecke |
112 | ONetworkInterface* interface( const QString& interface ) const; | 112 | ONetworkInterface* interface( const QString& interface ) const; |
113 | /** | 113 | /** |
114 | * @internal Rebuild the internal interface database | 114 | * @internal Rebuild the internal interface database |
115 | * @note Sometimes it might be useful to call this from client code, | 115 | * @note Sometimes it might be useful to call this from client code, |
116 | * e.g. after cardctl insert | 116 | * e.g. after issuing a cardctl insert |
117 | */ | 117 | */ |
118 | void synchronize(); | 118 | void synchronize(); |
119 | 119 | ||
120 | protected: | 120 | protected: |
121 | ONetwork(); | 121 | ONetwork(); |
122 | 122 | ||
123 | private: | 123 | private: |
124 | static ONetwork* _instance; | 124 | static ONetwork* _instance; |
125 | InterfaceMap _interfaces; | 125 | InterfaceMap _interfaces; |
126 | }; | 126 | }; |
127 | 127 | ||
128 | 128 | ||
129 | /*====================================================================================== | 129 | /*====================================================================================== |
130 | * ONetworkInterface | 130 | * ONetworkInterface |
131 | *======================================================================================*/ | 131 | *======================================================================================*/ |
132 | 132 | ||
133 | /** | 133 | /** |
134 | * @brief A network interface wrapper. | 134 | * @brief A network interface wrapper. |
135 | * | 135 | * |
136 | * This class provides a wrapper for a network interface. All the cumbersume details of | 136 | * 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. | 137 | * Linux ioctls are hidden under a convenient high-level interface. |
138 | * @warning Most of the setting methods contained in this class require the appropriate | 138 | * @warning Most of the setting methods contained in this class require the appropriate |
139 | * process permissions to work. | 139 | * process permissions to work. |
140 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 140 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
141 | */ | 141 | */ |
142 | class ONetworkInterface : public QObject | 142 | class ONetworkInterface : public QObject |
143 | { | 143 | { |
144 | friend class OMonitoringInterface; | 144 | friend class OMonitoringInterface; |
145 | friend class OCiscoMonitoringInterface; | 145 | friend class OCiscoMonitoringInterface; |
146 | friend class OWlanNGMonitoringInterface; | 146 | friend class OWlanNGMonitoringInterface; |
147 | friend class OHostAPMonitoringInterface; | 147 | friend class OHostAPMonitoringInterface; |
148 | friend class OOrinocoMonitoringInterface; | 148 | friend class OOrinocoMonitoringInterface; |
@@ -224,75 +224,99 @@ class ONetworkInterface : public QObject | |||
224 | int dataLinkType() const; | 224 | int dataLinkType() const; |
225 | 225 | ||
226 | protected: | 226 | protected: |
227 | const int _sfd; | 227 | const int _sfd; |
228 | mutable ifreq _ifr; | 228 | mutable ifreq _ifr; |
229 | OMonitoringInterface* _mon; | 229 | OMonitoringInterface* _mon; |
230 | 230 | ||
231 | protected: | 231 | protected: |
232 | struct ifreq& ifr() const; | 232 | struct ifreq& ifr() const; |
233 | virtual void init(); | 233 | virtual void init(); |
234 | bool ioctl( int call ) const; | 234 | bool ioctl( int call ) const; |
235 | bool ioctl( int call, struct ifreq& ) const; | 235 | bool ioctl( int call, struct ifreq& ) const; |
236 | }; | 236 | }; |
237 | 237 | ||
238 | /*====================================================================================== | 238 | /*====================================================================================== |
239 | * OChannelHopper | 239 | * OChannelHopper |
240 | *======================================================================================*/ | 240 | *======================================================================================*/ |
241 | 241 | ||
242 | /** | 242 | /** |
243 | * @brief A radio frequency channel hopper. | 243 | * @brief A radio frequency channel hopper. |
244 | * | 244 | * |
245 | * This class provides a channel hopper for radio frequencies. A channel hopper frequently | 245 | * This class provides a channel hopper for radio frequencies. A channel hopper frequently |
246 | * changes the radio frequency channel of its associated @ref OWirelessNetworkInterface. | 246 | * changes the radio frequency channel of its associated @ref OWirelessNetworkInterface. |
247 | * This is necessary when in monitoring mode and scanning for other devices, because | 247 | * 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. | 248 | * the radio frequency hardware can only detect packets sent on the same frequency. |
249 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 249 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
250 | */ | 250 | */ |
251 | class OChannelHopper : public QObject | 251 | class OChannelHopper : public QObject |
252 | { | 252 | { |
253 | Q_OBJECT | 253 | Q_OBJECT |
254 | 254 | ||
255 | public: | 255 | public: |
256 | /** | ||
257 | * Constructor. | ||
258 | */ | ||
256 | OChannelHopper( OWirelessNetworkInterface* ); | 259 | OChannelHopper( OWirelessNetworkInterface* ); |
260 | /** | ||
261 | * Destructor. | ||
262 | */ | ||
257 | virtual ~OChannelHopper(); | 263 | virtual ~OChannelHopper(); |
264 | /** | ||
265 | * @returns true, if the channel hopper is hopping channels | ||
266 | */ | ||
258 | bool isActive() const; | 267 | bool isActive() const; |
268 | /** | ||
269 | * @returns the last hopped channel | ||
270 | */ | ||
259 | int channel() const; | 271 | int channel() const; |
260 | virtual void timerEvent( QTimerEvent* ); | 272 | /** |
261 | void setInterval( int ); | 273 | * Set the channel hopping @a interval. |
274 | * An interval of 0 deactivates the channel hopper. | ||
275 | */ | ||
276 | void setInterval( int interval ); | ||
277 | /** | ||
278 | * @returns the channel hopping interval | ||
279 | */ | ||
262 | int interval() const; | 280 | int interval() const; |
263 | 281 | ||
264 | signals: | 282 | signals: |
283 | /** | ||
284 | * This signal is emitted right after the channel hopper performed a hop | ||
285 | */ | ||
265 | void hopped( int ); | 286 | void hopped( int ); |
266 | 287 | ||
288 | protected: | ||
289 | virtual void timerEvent( QTimerEvent* ); | ||
290 | |||
267 | private: | 291 | private: |
268 | OWirelessNetworkInterface* _iface; | 292 | OWirelessNetworkInterface* _iface; |
269 | int _interval; | 293 | int _interval; |
270 | int _tid; | 294 | int _tid; |
271 | QValueList<int> _channels; | 295 | QValueList<int> _channels; |
272 | QValueList<int>::Iterator _channel; | 296 | QValueList<int>::Iterator _channel; |
273 | }; | 297 | }; |
274 | 298 | ||
275 | 299 | ||
276 | /*====================================================================================== | 300 | /*====================================================================================== |
277 | * OWirelessNetworkInterface | 301 | * OWirelessNetworkInterface |
278 | *======================================================================================*/ | 302 | *======================================================================================*/ |
279 | 303 | ||
280 | /** | 304 | /** |
281 | * @brief A network interface wrapper for interfaces supporting the wireless extensions protocol. | 305 | * @brief A network interface wrapper for interfaces supporting the wireless extensions protocol. |
282 | * | 306 | * |
283 | * This class provides a high-level encapsulation of the Linux wireless extension API. | 307 | * This class provides a high-level encapsulation of the Linux wireless extension API. |
284 | */ | 308 | */ |
285 | class OWirelessNetworkInterface : public ONetworkInterface | 309 | class OWirelessNetworkInterface : public ONetworkInterface |
286 | { | 310 | { |
287 | friend class OMonitoringInterface; | 311 | friend class OMonitoringInterface; |
288 | friend class OCiscoMonitoringInterface; | 312 | friend class OCiscoMonitoringInterface; |
289 | friend class OWlanNGMonitoringInterface; | 313 | friend class OWlanNGMonitoringInterface; |
290 | friend class OHostAPMonitoringInterface; | 314 | friend class OHostAPMonitoringInterface; |
291 | friend class OOrinocoMonitoringInterface; | 315 | friend class OOrinocoMonitoringInterface; |
292 | 316 | ||
293 | friend class OPrivateIOCTL; | 317 | friend class OPrivateIOCTL; |
294 | 318 | ||
295 | public: | 319 | public: |
296 | enum Mode { AdHoc, Managed, Monitor }; | 320 | enum Mode { AdHoc, Managed, Monitor }; |
297 | 321 | ||
298 | /** | 322 | /** |
diff --git a/libopie2/opienet/opcap.h b/libopie2/opienet/opcap.h index 83f7115..bee0ca0 100644 --- a/libopie2/opienet/opcap.h +++ b/libopie2/opienet/opcap.h | |||
@@ -124,84 +124,82 @@ class OPacket : public QObject | |||
124 | int caplen() const; | 124 | int caplen() const; |
125 | int len() const; | 125 | int len() const; |
126 | QString dump( int = 32 ) const; | 126 | QString dump( int = 32 ) const; |
127 | 127 | ||
128 | void updateStats( QMap<QString,int>&, QObjectList* ); | 128 | void updateStats( QMap<QString,int>&, QObjectList* ); |
129 | 129 | ||
130 | private: | 130 | private: |
131 | const packetheaderstruct _hdr; // pcap packet header | 131 | const packetheaderstruct _hdr; // pcap packet header |
132 | const unsigned char* _data; // pcap packet data | 132 | const unsigned char* _data; // pcap packet data |
133 | const unsigned char* _end; // end of pcap packet data | 133 | const unsigned char* _end; // end of pcap packet data |
134 | }; | 134 | }; |
135 | 135 | ||
136 | /*====================================================================================== | 136 | /*====================================================================================== |
137 | * OEthernetPacket - DLT_EN10MB frame | 137 | * OEthernetPacket - DLT_EN10MB frame |
138 | *======================================================================================*/ | 138 | *======================================================================================*/ |
139 | 139 | ||
140 | class OEthernetPacket : public QObject | 140 | class OEthernetPacket : public QObject |
141 | { | 141 | { |
142 | Q_OBJECT | 142 | Q_OBJECT |
143 | 143 | ||
144 | public: | 144 | public: |
145 | OEthernetPacket( const unsigned char*, const struct ether_header*, QObject* parent = 0 ); | 145 | OEthernetPacket( const unsigned char*, const struct ether_header*, QObject* parent = 0 ); |
146 | virtual ~OEthernetPacket(); | 146 | virtual ~OEthernetPacket(); |
147 | 147 | ||
148 | OMacAddress sourceAddress() const; | 148 | OMacAddress sourceAddress() const; |
149 | OMacAddress destinationAddress() const; | 149 | OMacAddress destinationAddress() const; |
150 | int type() const; | 150 | int type() const; |
151 | 151 | ||
152 | private: | 152 | private: |
153 | const struct ether_header* _ether; | 153 | const struct ether_header* _ether; |
154 | }; | 154 | }; |
155 | 155 | ||
156 | |||
157 | /*====================================================================================== | 156 | /*====================================================================================== |
158 | * OPrismHeaderPacket - DLT_PRISM_HEADER frame | 157 | * OPrismHeaderPacket - DLT_PRISM_HEADER frame |
159 | *======================================================================================*/ | 158 | *======================================================================================*/ |
160 | 159 | ||
161 | class OPrismHeaderPacket : public QObject | 160 | class OPrismHeaderPacket : public QObject |
162 | { | 161 | { |
163 | Q_OBJECT | 162 | Q_OBJECT |
164 | 163 | ||
165 | public: | 164 | public: |
166 | OPrismHeaderPacket( const unsigned char*, const struct prism_hdr*, QObject* parent = 0 ); | 165 | OPrismHeaderPacket( const unsigned char*, const struct prism_hdr*, QObject* parent = 0 ); |
167 | virtual ~OPrismHeaderPacket(); | 166 | virtual ~OPrismHeaderPacket(); |
168 | 167 | ||
169 | unsigned int signalStrength() const; | 168 | unsigned int signalStrength() const; |
170 | 169 | ||
171 | private: | 170 | private: |
172 | const struct prism_hdr* _header; | 171 | const struct prism_hdr* _header; |
173 | }; | 172 | }; |
174 | 173 | ||
175 | |||
176 | /*====================================================================================== | 174 | /*====================================================================================== |
177 | * OWaveLanPacket - DLT_IEEE802_11 frame | 175 | * OWaveLanPacket - DLT_IEEE802_11 frame |
178 | *======================================================================================*/ | 176 | *======================================================================================*/ |
179 | 177 | ||
180 | class OWaveLanPacket : public QObject | 178 | class OWaveLanPacket : public QObject |
181 | { | 179 | { |
182 | Q_OBJECT | 180 | Q_OBJECT |
183 | 181 | ||
184 | public: | 182 | public: |
185 | OWaveLanPacket( const unsigned char*, const struct ieee_802_11_header*, QObject* parent = 0 ); | 183 | OWaveLanPacket( const unsigned char*, const struct ieee_802_11_header*, QObject* parent = 0 ); |
186 | virtual ~OWaveLanPacket(); | 184 | virtual ~OWaveLanPacket(); |
187 | 185 | ||
188 | int duration() const; | 186 | int duration() const; |
189 | bool fromDS() const; | 187 | bool fromDS() const; |
190 | bool toDS() const; | 188 | bool toDS() const; |
191 | virtual OMacAddress macAddress1() const; | 189 | virtual OMacAddress macAddress1() const; |
192 | virtual OMacAddress macAddress2() const; | 190 | virtual OMacAddress macAddress2() const; |
193 | virtual OMacAddress macAddress3() const; | 191 | virtual OMacAddress macAddress3() const; |
194 | virtual OMacAddress macAddress4() const; | 192 | virtual OMacAddress macAddress4() const; |
195 | bool usesPowerManagement() const; | 193 | bool usesPowerManagement() const; |
196 | int type() const; | 194 | int type() const; |
197 | int subType() const; | 195 | int subType() const; |
198 | int version() const; | 196 | int version() const; |
199 | bool usesWep() const; | 197 | bool usesWep() const; |
200 | 198 | ||
201 | private: | 199 | private: |
202 | const struct ieee_802_11_header* _wlanhdr; | 200 | const struct ieee_802_11_header* _wlanhdr; |
203 | }; | 201 | }; |
204 | 202 | ||
205 | 203 | ||
206 | /*====================================================================================== | 204 | /*====================================================================================== |
207 | * OWaveLanManagementPacket - type: management (T_MGMT) | 205 | * OWaveLanManagementPacket - type: management (T_MGMT) |
@@ -323,81 +321,80 @@ class OWaveLanManagementDS : public QObject | |||
323 | class OWaveLanManagementTim : public QObject | 321 | class OWaveLanManagementTim : public QObject |
324 | { | 322 | { |
325 | Q_OBJECT | 323 | Q_OBJECT |
326 | 324 | ||
327 | public: | 325 | public: |
328 | OWaveLanManagementTim( const unsigned char*, const struct tim_t*, QObject* parent = 0 ); | 326 | OWaveLanManagementTim( const unsigned char*, const struct tim_t*, QObject* parent = 0 ); |
329 | virtual ~OWaveLanManagementTim(); | 327 | virtual ~OWaveLanManagementTim(); |
330 | 328 | ||
331 | private: | 329 | private: |
332 | const struct tim_t* _data; | 330 | const struct tim_t* _data; |
333 | }; | 331 | }; |
334 | 332 | ||
335 | /*====================================================================================== | 333 | /*====================================================================================== |
336 | * OWaveLanManagementIBSS | 334 | * OWaveLanManagementIBSS |
337 | *======================================================================================*/ | 335 | *======================================================================================*/ |
338 | 336 | ||
339 | class OWaveLanManagementIBSS : public QObject | 337 | class OWaveLanManagementIBSS : public QObject |
340 | { | 338 | { |
341 | Q_OBJECT | 339 | Q_OBJECT |
342 | 340 | ||
343 | public: | 341 | public: |
344 | OWaveLanManagementIBSS( const unsigned char*, const struct ibss_t*, QObject* parent = 0 ); | 342 | OWaveLanManagementIBSS( const unsigned char*, const struct ibss_t*, QObject* parent = 0 ); |
345 | virtual ~OWaveLanManagementIBSS(); | 343 | virtual ~OWaveLanManagementIBSS(); |
346 | 344 | ||
347 | private: | 345 | private: |
348 | const struct ibss_t* _data; | 346 | const struct ibss_t* _data; |
349 | }; | 347 | }; |
350 | 348 | ||
351 | /*====================================================================================== | 349 | /*====================================================================================== |
352 | * OWaveLanManagementChallenge | 350 | * OWaveLanManagementChallenge |
353 | *======================================================================================*/ | 351 | *======================================================================================*/ |
354 | 352 | ||
355 | // Qobject do we need that?? | ||
356 | class OWaveLanManagementChallenge : public QObject | 353 | class OWaveLanManagementChallenge : public QObject |
357 | { | 354 | { |
358 | Q_OBJECT | 355 | Q_OBJECT |
359 | 356 | ||
360 | public: | 357 | public: |
361 | OWaveLanManagementChallenge( const unsigned char*, const struct challenge_t*, QObject* parent = 0 ); | 358 | OWaveLanManagementChallenge( const unsigned char*, const struct challenge_t*, QObject* parent = 0 ); |
362 | virtual ~OWaveLanManagementChallenge(); | 359 | virtual ~OWaveLanManagementChallenge(); |
363 | 360 | ||
364 | private: | 361 | private: |
365 | const struct challenge_t* _data; | 362 | const struct challenge_t* _data; |
366 | }; | 363 | }; |
367 | 364 | ||
368 | /*====================================================================================== | 365 | /*====================================================================================== |
369 | * OWaveLanDataPacket - type: data (T_DATA) | 366 | * OWaveLanDataPacket - type: data (T_DATA) |
370 | *======================================================================================*/ | 367 | *======================================================================================*/ |
371 | // Qobject? | 368 | |
372 | class OWaveLanDataPacket : public QObject | 369 | class OWaveLanDataPacket : public QObject |
373 | { | 370 | { |
374 | Q_OBJECT | 371 | Q_OBJECT |
375 | 372 | ||
376 | public: | 373 | public: |
377 | OWaveLanDataPacket( const unsigned char*, const struct ieee_802_11_data_header*, OWaveLanPacket* parent = 0 ); | 374 | OWaveLanDataPacket( const unsigned char*, const struct ieee_802_11_data_header*, OWaveLanPacket* parent = 0 ); |
378 | virtual ~OWaveLanDataPacket(); | 375 | virtual ~OWaveLanDataPacket(); |
379 | 376 | ||
380 | private: | 377 | private: |
381 | const struct ieee_802_11_data_header* _header; | 378 | const struct ieee_802_11_data_header* _header; |
382 | }; | 379 | }; |
383 | 380 | ||
384 | /*====================================================================================== | 381 | /*====================================================================================== |
385 | * OWaveLanControlPacket - type: control (T_CTRL) | 382 | * OWaveLanControlPacket - type: control (T_CTRL) |
386 | *======================================================================================*/ | 383 | *======================================================================================*/ |
387 | 384 | ||
388 | class OWaveLanControlPacket : public QObject | 385 | class OWaveLanControlPacket : public QObject |
389 | { | 386 | { |
390 | Q_OBJECT | 387 | Q_OBJECT |
391 | 388 | ||
392 | public: | 389 | public: |
393 | OWaveLanControlPacket( const unsigned char*, const struct ieee_802_11_control_header*, OWaveLanPacket* parent = 0 ); | 390 | OWaveLanControlPacket( const unsigned char*, const struct ieee_802_11_control_header*, OWaveLanPacket* parent = 0 ); |
394 | virtual ~OWaveLanControlPacket(); | 391 | virtual ~OWaveLanControlPacket(); |
395 | 392 | ||
396 | private: | 393 | private: |
397 | const struct ieee_802_11_control_header* _header; | 394 | const struct ieee_802_11_control_header* _header; |
398 | }; | 395 | }; |
399 | 396 | ||
400 | /*====================================================================================== | 397 | /*====================================================================================== |
401 | * OLLCPacket - IEEE 802.2 Link Level Control | 398 | * OLLCPacket - IEEE 802.2 Link Level Control |
402 | *======================================================================================*/ | 399 | *======================================================================================*/ |
403 | 400 | ||