From d5abd7878f553f5ac0a41966b27f4c09389d3cfd Mon Sep 17 00:00:00 2001 From: mickeyl Date: Sat, 01 May 2004 16:13:43 +0000 Subject: - fix off-by-one bug in OChannelHopper - fix bug in OPacket which broke everything using it - expose both wireless extension versions (runtime + compile time) through API --- (limited to 'libopie2') diff --git a/libopie2/opienet/onetwork.cpp b/libopie2/opienet/onetwork.cpp index b6c9876..e141097 100644 --- a/libopie2/opienet/onetwork.cpp +++ b/libopie2/opienet/onetwork.cpp @@ -119,7 +119,7 @@ void ONetwork::synchronize() } -short ONetwork::wirelessExtensionVersion() +short ONetwork::wirelessExtensionCompileVersion() { return WIRELESS_EXT; } @@ -382,7 +382,7 @@ OChannelHopper::OChannelHopper( OWirelessNetworkInterface* iface ) :QObject( 0, "Mickey's funky hopper" ), _iface( iface ), _interval( 0 ), _tid( 0 ) { - int _maxChannel = iface->channels()+1; + int _maxChannel = iface->channels(); // generate fancy hopping sequence honoring the device capabilities if ( _maxChannel >= 1 ) _channels.append( 1 ); if ( _maxChannel >= 7 ) _channels.append( 7 ); @@ -399,7 +399,6 @@ OChannelHopper::OChannelHopper( OWirelessNetworkInterface* iface ) if ( _maxChannel >= 6 ) _channels.append( 6 ); if ( _maxChannel >= 12 ) _channels.append( 12 ); _channel = _channels.begin(); - } @@ -561,6 +560,7 @@ void OWirelessNetworkInterface::buildInformation() for ( int i = 0; i < range.num_frequency; ++i ) { int freq = (int) ( double( range.freq[i].m ) * pow( 10.0, range.freq[i].e ) / 1000000.0 ); + odebug << "OWirelessNetworkInterface::buildInformation: Adding frequency " << freq << " as channel " << i+1 << oendl; _channels.insert( freq, i+1 ); } } @@ -571,6 +571,12 @@ void OWirelessNetworkInterface::buildInformation() } +short OWirelessNetworkInterface::wirelessExtensionDriverVersion() const +{ + return _range.we_version_compiled; +} + + void OWirelessNetworkInterface::buildPrivateList() { odebug << "OWirelessNetworkInterface::buildPrivateList()" << oendl; diff --git a/libopie2/opienet/onetwork.h b/libopie2/opienet/onetwork.h index f5fbe1d..a49c8fb 100644 --- a/libopie2/opienet/onetwork.h +++ b/libopie2/opienet/onetwork.h @@ -125,7 +125,7 @@ class ONetwork : public QObject /** * @returns the wireless extension version used at compile time. **/ - static short wirelessExtensionVersion(); + static short wirelessExtensionCompileVersion(); protected: ONetwork(); @@ -451,8 +451,12 @@ class OWirelessNetworkInterface : public ONetworkInterface * In other modes the result is driver dependent. */ virtual int signalStrength() const; - /** @internal commit pending changes to the driver - * + /** + * @returns the wireless extension version used by the interface driver. + **/ + short wirelessExtensionDriverVersion() const; + /** + * @internal commit pending changes to the driver */ void commit() const; diff --git a/libopie2/opienet/opcap.cpp b/libopie2/opienet/opcap.cpp index f8ebe6b..a9dc577 100644 --- a/libopie2/opienet/opcap.cpp +++ b/libopie2/opienet/opcap.cpp @@ -58,9 +58,9 @@ OPacket::OPacket( int datalink, packetheaderstruct header, const unsigned char* :QObject( parent, "Generic" ), _hdr( header ), _data( 0 ) { - _data = new unsigned char[sizeof data]; + _data = new unsigned char[ header.len ]; assert( _data ); - memcpy( const_cast(_data), data, sizeof data ); + memcpy( const_cast(_data), data, header.len ); // We have to copy the data structure here, because the 'data' pointer handed by libpcap // points to an internal region which is reused by lipcap. odebug << "OPacket: Length = " << header.len << ", Caplen = " << header.caplen << oendl; -- cgit v0.9.0.2