author | mickeyl <mickeyl> | 2003-05-05 14:57:27 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-05-05 14:57:27 (UTC) |
commit | 29f5c6e6bcb8db0f0e26da25dbf34b2685c01526 (patch) (side-by-side diff) | |
tree | a05e296ff11d532fd3d5fd092aade07474d1ba95 /libopie2/opienet | |
parent | a5818261bec2d0a6d903fef9baeed1a7abc85275 (diff) | |
download | opie-29f5c6e6bcb8db0f0e26da25dbf34b2685c01526.zip opie-29f5c6e6bcb8db0f0e26da25dbf34b2685c01526.tar.gz opie-29f5c6e6bcb8db0f0e26da25dbf34b2685c01526.tar.bz2 |
- fix segfault on unknown linktype (thanks groucho)
- make capturing using PRISM headers optional
-rw-r--r-- | libopie2/opienet/onetwork.cpp | 31 | ||||
-rw-r--r-- | libopie2/opienet/onetwork.h | 11 | ||||
-rw-r--r-- | libopie2/opienet/opcap.cpp | 2 |
3 files changed, 25 insertions, 19 deletions
diff --git a/libopie2/opienet/onetwork.cpp b/libopie2/opienet/onetwork.cpp index 2dfff1d..6cef5cf 100644 --- a/libopie2/opienet/onetwork.cpp +++ b/libopie2/opienet/onetwork.cpp @@ -809,8 +809,8 @@ bool OWirelessNetworkInterface::wioctl( int call ) const * OMonitoringInterface *======================================================================================*/ -OMonitoringInterface::OMonitoringInterface( ONetworkInterface* iface ) - :_if( static_cast<OWirelessNetworkInterface*>( iface ) ) +OMonitoringInterface::OMonitoringInterface( ONetworkInterface* iface, bool prismHeader ) + :_if( static_cast<OWirelessNetworkInterface*>( iface ) ), _prismHeader( prismHeader ) { } @@ -845,8 +845,8 @@ void OMonitoringInterface::setEnabled( bool b ) * OCiscoMonitoringInterface *======================================================================================*/ -OCiscoMonitoringInterface::OCiscoMonitoringInterface( ONetworkInterface* iface ) - :OMonitoringInterface( iface ) +OCiscoMonitoringInterface::OCiscoMonitoringInterface( ONetworkInterface* iface, bool prismHeader ) + :OMonitoringInterface( iface, prismHeader ) { iface->setMonitoring( this ); } @@ -893,8 +893,8 @@ void OCiscoMonitoringInterface::setChannel( int ) *======================================================================================*/ -OWlanNGMonitoringInterface::OWlanNGMonitoringInterface( ONetworkInterface* iface ) - :OMonitoringInterface( iface ) +OWlanNGMonitoringInterface::OWlanNGMonitoringInterface( ONetworkInterface* iface, bool prismHeader ) + :OMonitoringInterface( iface, prismHeader ) { iface->setMonitoring( this ); } @@ -910,8 +910,10 @@ void OWlanNGMonitoringInterface::setEnabled( bool b ) //FIXME: do nothing if its already in the same mode QString enable = b ? "true" : "false"; + QString prism = _prismHeader ? "true" : "false"; QString cmd; - cmd.sprintf( "$(which wlanctl-ng) %s lnxreq_wlansniff channel=%d enable=%s", (const char*) _if->name(), 1, (const char*) enable ); + cmd.sprintf( "$(which wlanctl-ng) %s lnxreq_wlansniff channel=%d enable=%s prismheader=%s", + (const char*) _if->name(), 1, (const char*) enable, (const char*) prism ); system( cmd ); } @@ -932,8 +934,8 @@ void OWlanNGMonitoringInterface::setChannel( int ) * OHostAPMonitoringInterface *======================================================================================*/ -OHostAPMonitoringInterface::OHostAPMonitoringInterface( ONetworkInterface* iface ) - :OMonitoringInterface( iface ) +OHostAPMonitoringInterface::OHostAPMonitoringInterface( ONetworkInterface* iface, bool prismHeader ) + :OMonitoringInterface( iface, prismHeader ) { iface->setMonitoring( this ); } @@ -950,9 +952,11 @@ void OHostAPMonitoringInterface::setEnabled( bool b ) //TODO: check wireless extensions version on runtime and use //TODO: SIOCSIWMODE( IW_MODE_MONITOR ) if running on WE >= 15 + int monitorCode = _prismHeader ? 1 : 2; + if ( b ) { - _if->setPrivate( "monitor", 1, 2 ); + _if->setPrivate( "monitor", 1, monitorCode ); } else { @@ -971,8 +975,8 @@ QString OHostAPMonitoringInterface::name() const * OOrinocoNetworkInterface *======================================================================================*/ -OOrinocoMonitoringInterface::OOrinocoMonitoringInterface( ONetworkInterface* iface ) - :OMonitoringInterface( iface ) +OOrinocoMonitoringInterface::OOrinocoMonitoringInterface( ONetworkInterface* iface, bool prismHeader ) + :OMonitoringInterface( iface, prismHeader ) { iface->setMonitoring( this ); } @@ -985,7 +989,8 @@ OOrinocoMonitoringInterface::~OOrinocoMonitoringInterface() void OOrinocoMonitoringInterface::setChannel( int c ) { - _if->setPrivate( "monitor", 2, 1, c ); + int monitorCode = _prismHeader ? 1 : 2; + _if->setPrivate( "monitor", 2, monitorCode, c ); } diff --git a/libopie2/opienet/onetwork.h b/libopie2/opienet/onetwork.h index 1b38d02..eb9d506 100644 --- a/libopie2/opienet/onetwork.h +++ b/libopie2/opienet/onetwork.h @@ -452,7 +452,7 @@ class OMonitoringInterface { public: OMonitoringInterface(); - OMonitoringInterface( ONetworkInterface* ); + OMonitoringInterface( ONetworkInterface*, bool _prismHeader ); virtual ~OMonitoringInterface(); public: @@ -464,6 +464,7 @@ class OMonitoringInterface protected: OWirelessNetworkInterface* _if; + bool _prismHeader; }; @@ -476,7 +477,7 @@ class OMonitoringInterface class OCiscoMonitoringInterface : public OMonitoringInterface { public: - OCiscoMonitoringInterface( ONetworkInterface* ); + OCiscoMonitoringInterface( ONetworkInterface*, bool _prismHeader ); virtual ~OCiscoMonitoringInterface(); virtual void setEnabled( bool ); @@ -492,7 +493,7 @@ class OCiscoMonitoringInterface : public OMonitoringInterface class OWlanNGMonitoringInterface : public OMonitoringInterface { public: - OWlanNGMonitoringInterface( ONetworkInterface* ); + OWlanNGMonitoringInterface( ONetworkInterface*, bool _prismHeader ); virtual ~OWlanNGMonitoringInterface(); public: @@ -509,7 +510,7 @@ class OWlanNGMonitoringInterface : public OMonitoringInterface class OHostAPMonitoringInterface : public OMonitoringInterface { public: - OHostAPMonitoringInterface( ONetworkInterface* ); + OHostAPMonitoringInterface( ONetworkInterface*, bool _prismHeader ); virtual ~OHostAPMonitoringInterface(); public: @@ -524,7 +525,7 @@ class OHostAPMonitoringInterface : public OMonitoringInterface class OOrinocoMonitoringInterface : public OMonitoringInterface { public: - OOrinocoMonitoringInterface( ONetworkInterface* ); + OOrinocoMonitoringInterface( ONetworkInterface*, bool _prismHeader ); virtual ~OOrinocoMonitoringInterface(); public: diff --git a/libopie2/opienet/opcap.cpp b/libopie2/opienet/opcap.cpp index e2ab6d7..f6d05ea 100644 --- a/libopie2/opienet/opcap.cpp +++ b/libopie2/opienet/opcap.cpp @@ -71,7 +71,7 @@ OPacket::OPacket( int datalink, packetheaderstruct header, const unsigned char* break; default: - qWarning( "OPacket::OPacket(): Received Packet over unsupported datalink '%s'!", datalink ); + qWarning( "OPacket::OPacket(): Received Packet over unsupported datalink (type %d)!", datalink ); } } |