From 0d48ba39224582c83d68c2938e6cbedc4c77ec7d Mon Sep 17 00:00:00 2001 From: mickeyl Date: Tue, 08 Apr 2003 14:17:38 +0000 Subject: - fix entries bug caused by interpretating not-yet-handled 802.11 management frames This thing gets complicated... I really should implement a state machine for the beta. --- (limited to 'noncore/net') diff --git a/noncore/net/wellenreiter/gui/scanlist.cpp b/noncore/net/wellenreiter/gui/scanlist.cpp index 1525934..1ef24d2 100644 --- a/noncore/net/wellenreiter/gui/scanlist.cpp +++ b/noncore/net/wellenreiter/gui/scanlist.cpp @@ -274,7 +274,7 @@ void MScanListItem::serializeTo( QDataStream& s ) const OListViewItem::serializeTo( s ); s << _type; - s << (Q_UINT8) _wep; + s << (Q_UINT8) ( _wep ? 'y' : 'n' ); } void MScanListItem::serializeFrom( QDataStream& s ) @@ -282,8 +282,10 @@ void MScanListItem::serializeFrom( QDataStream& s ) qDebug( "serializing MScanListItem" ); OListViewItem::serializeFrom( s ); + char wep; s >> _type; - s >> (Q_UINT8) _wep; + s >> (Q_UINT8) wep; + _wep = (wep == 'y'); QString name; name.sprintf( "wellenreiter/%s", (const char*) _type ); diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp index 8d18f73..8c2c315 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.cpp +++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp @@ -114,13 +114,22 @@ void Wellenreiter::receivePacket(OPacket* p) // check if we received a beacon frame OWaveLanManagementPacket* beacon = static_cast( p->child( "802.11 Management" ) ); - if ( beacon ) + if ( beacon && beacon->managementType() == "Beacon" ) { QString type; if ( beacon->canIBSS() ) + { type = "adhoc"; - else + } + else if ( beacon->canESS() ) + { type = "managed"; + } + else + { + qDebug( "Wellenreiter::invalid frame detected: '%s'", (const char*) p->dump( 16 ) ); + return; + } OWaveLanManagementSSID* ssid = static_cast( p->child( "802.11 SSID" ) ); QString essid = ssid ? ssid->ID() : QString(""); @@ -128,7 +137,7 @@ void Wellenreiter::receivePacket(OPacket* p) int channel = ds ? ds->channel() : -1; OWaveLanPacket* header = static_cast( p->child( "802.11" ) ); - netView()->addNewItem( type, essid, header->macAddress2().toString(), header->usesWep(), channel, 0 ); + netView()->addNewItem( type, essid, header->macAddress2().toString(), beacon->canPrivacy(), channel, 0 ); return; } -- cgit v0.9.0.2