Diffstat (limited to 'noncore/net/wellenreiter/gui/wellenreiter.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.cpp | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp index 5575d6e..45d7142 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.cpp +++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp | |||
@@ -159,8 +159,12 @@ void Wellenreiter::handleNotification( OPacket* p ) | |||
159 | } | 159 | } |
160 | 160 | ||
161 | 161 | ||
162 | void Wellenreiter::handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon ) | 162 | void Wellenreiter::handleManagementFrame( OPacket* p, OWaveLanManagementPacket* manage ) |
163 | { | 163 | { |
164 | if ( manage->managementType() != "Beacon" ) return; // only handling beacons at that time | ||
165 | |||
166 | OWaveLanManagementPacket* beacon = manage; | ||
167 | |||
164 | QString type; | 168 | QString type; |
165 | if ( beacon->canIBSS() ) | 169 | if ( beacon->canIBSS() ) |
166 | { | 170 | { |
@@ -183,7 +187,7 @@ void Wellenreiter::handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon ) | |||
183 | 187 | ||
184 | OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) ); | 188 | OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) ); |
185 | 189 | ||
186 | GpsLocation loc( 0, 0 ); | 190 | GpsLocation loc( -111.111, -111.111 ); |
187 | if ( configwindow->enableGPS->isChecked() ) | 191 | if ( configwindow->enableGPS->isChecked() ) |
188 | { | 192 | { |
189 | // TODO: add check if GPS is working!? | 193 | // TODO: add check if GPS is working!? |
@@ -206,6 +210,21 @@ void Wellenreiter::handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon ) | |||
206 | } | 210 | } |
207 | 211 | ||
208 | 212 | ||
213 | void Wellenreiter::handleControlFrame( OPacket* p, OWaveLanControlPacket* control ) | ||
214 | { | ||
215 | OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) ); | ||
216 | |||
217 | if ( control->controlType() == "Acknowledge" ) | ||
218 | { | ||
219 | netView()->addNewItem( "adhoc", "???", header->macAddress1(), false, -1, 0, GpsLocation( -111.111, -111.111 ) ); | ||
220 | } | ||
221 | else | ||
222 | { | ||
223 | qDebug( "Wellenreiter::handleControlFrame - please handle %s in a future version! :D", (const char*) control->controlType() ); | ||
224 | } | ||
225 | } | ||
226 | |||
227 | |||
209 | void Wellenreiter::handleWlanData( OPacket* p, OWaveLanDataPacket* data, OMacAddress& from, OMacAddress& to ) | 228 | void Wellenreiter::handleWlanData( OPacket* p, OWaveLanDataPacket* data, OMacAddress& from, OMacAddress& to ) |
210 | { | 229 | { |
211 | OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" ); | 230 | OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" ); |
@@ -241,7 +260,7 @@ void Wellenreiter::handleEthernetData( OPacket* p, OEthernetPacket* data, OMacAd | |||
241 | from = data->sourceAddress(); | 260 | from = data->sourceAddress(); |
242 | to = data->destinationAddress(); | 261 | to = data->destinationAddress(); |
243 | 262 | ||
244 | netView()->addNewItem( "station", "<wired>", from, false, -1, 0, GpsLocation( 0, 0 ) ); | 263 | netView()->addNewItem( "station", "<wired>", from, false, -1, 0, GpsLocation( -111.111, -111.111 ) ); |
245 | } | 264 | } |
246 | 265 | ||
247 | 266 | ||
@@ -340,11 +359,19 @@ void Wellenreiter::receivePacket( OPacket* p ) | |||
340 | pcap->dump( p ); | 359 | pcap->dump( p ); |
341 | } | 360 | } |
342 | 361 | ||
343 | // check if we received a beacon frame | 362 | // check for a management frame |
344 | OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( childIfToParse( p, "802.11 Management" ) ); | 363 | OWaveLanManagementPacket* manage = static_cast<OWaveLanManagementPacket*>( childIfToParse( p, "802.11 Management" ) ); |
345 | if ( beacon && beacon->managementType() == "Beacon" ) | 364 | if ( manage ) |
365 | { | ||
366 | handleManagementFrame( p, manage ); | ||
367 | return; | ||
368 | } | ||
369 | |||
370 | // check for a control frame | ||
371 | OWaveLanControlPacket* control = static_cast<OWaveLanControlPacket*>( childIfToParse( p, "802.11 Control" ) ); | ||
372 | if ( control ) | ||
346 | { | 373 | { |
347 | handleBeacon( p, beacon ); | 374 | handleControlFrame( p, control ); |
348 | return; | 375 | return; |
349 | } | 376 | } |
350 | 377 | ||