summaryrefslogtreecommitdiff
path: root/libopie2/opienet/onetwork.cpp
Unidiff
Diffstat (limited to 'libopie2/opienet/onetwork.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opienet/onetwork.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/libopie2/opienet/onetwork.cpp b/libopie2/opienet/onetwork.cpp
index 45ee4c0..767651e 100644
--- a/libopie2/opienet/onetwork.cpp
+++ b/libopie2/opienet/onetwork.cpp
@@ -572,48 +572,54 @@ void OWirelessNetworkInterface::buildPrivateList()
572} 572}
573 573
574 574
575int OWirelessNetworkInterface::channel() const 575int OWirelessNetworkInterface::channel() const
576{ 576{
577 //FIXME: When monitoring enabled, then use it 577 //FIXME: When monitoring enabled, then use it
578 //FIXME: to gather the current RF channel 578 //FIXME: to gather the current RF channel
579 //FIXME: Until then, get active channel from hopper. 579 //FIXME: Until then, get active channel from hopper.
580 if ( _hopper && _hopper->isActive() ) 580 if ( _hopper && _hopper->isActive() )
581 return _hopper->channel(); 581 return _hopper->channel();
582 582
583 if ( !wioctl( SIOCGIWFREQ ) ) 583 if ( !wioctl( SIOCGIWFREQ ) )
584 { 584 {
585 return -1; 585 return -1;
586 } 586 }
587 else 587 else
588 { 588 {
589 return _channels[ static_cast<int>(double( _iwr.u.freq.m ) * pow( 10.0, _iwr.u.freq.e ) / 1000000) ]; 589 return _channels[ static_cast<int>(double( _iwr.u.freq.m ) * pow( 10.0, _iwr.u.freq.e ) / 1000000) ];
590 } 590 }
591} 591}
592 592
593 593
594void OWirelessNetworkInterface::setChannel( int c ) const 594void OWirelessNetworkInterface::setChannel( int c ) const
595{ 595{
596 if ( c )
597 {
598 qWarning( "OWirelessNetworkInterface::setChannel( 0 ) called - fix your application!" );
599 return;
600 }
601
596 if ( !_mon ) 602 if ( !_mon )
597 { 603 {
598 memset( &_iwr, 0, sizeof( struct iwreq ) ); 604 memset( &_iwr, 0, sizeof( struct iwreq ) );
599 _iwr.u.freq.m = c; 605 _iwr.u.freq.m = c;
600 _iwr.u.freq.e = 0; 606 _iwr.u.freq.e = 0;
601 wioctl( SIOCSIWFREQ ); 607 wioctl( SIOCSIWFREQ );
602 } 608 }
603 else 609 else
604 { 610 {
605 _mon->setChannel( c ); 611 _mon->setChannel( c );
606 } 612 }
607} 613}
608 614
609 615
610double OWirelessNetworkInterface::frequency() const 616double OWirelessNetworkInterface::frequency() const
611{ 617{
612 if ( !wioctl( SIOCGIWFREQ ) ) 618 if ( !wioctl( SIOCGIWFREQ ) )
613 { 619 {
614 return -1.0; 620 return -1.0;
615 } 621 }
616 else 622 else
617 { 623 {
618 return double( _iwr.u.freq.m ) * pow( 10.0, _iwr.u.freq.e ) / 1000000000.0; 624 return double( _iwr.u.freq.m ) * pow( 10.0, _iwr.u.freq.e ) / 1000000000.0;
619 } 625 }
@@ -918,49 +924,49 @@ void OWlanNGMonitoringInterface::setEnabled( bool b )
918 924
919 QString enable = b ? "true" : "false"; 925 QString enable = b ? "true" : "false";
920 QString prism = _prismHeader ? "true" : "false"; 926 QString prism = _prismHeader ? "true" : "false";
921 QString cmd; 927 QString cmd;
922 cmd.sprintf( "$(which wlanctl-ng) %s lnxreq_wlansniff channel=%d enable=%s prismheader=%s", 928 cmd.sprintf( "$(which wlanctl-ng) %s lnxreq_wlansniff channel=%d enable=%s prismheader=%s",
923 (const char*) _if->name(), 1, (const char*) enable, (const char*) prism ); 929 (const char*) _if->name(), 1, (const char*) enable, (const char*) prism );
924 system( cmd ); 930 system( cmd );
925} 931}
926 932
927 933
928QString OWlanNGMonitoringInterface::name() const 934QString OWlanNGMonitoringInterface::name() const
929{ 935{
930 return "wlan-ng"; 936 return "wlan-ng";
931} 937}
932 938
933 939
934void OWlanNGMonitoringInterface::setChannel( int c ) 940void OWlanNGMonitoringInterface::setChannel( int c )
935{ 941{
936 //NOTE: Older wlan-ng drivers automatically hopped channels while lnxreq_wlansniff=true. Newer ones don't. 942 //NOTE: Older wlan-ng drivers automatically hopped channels while lnxreq_wlansniff=true. Newer ones don't.
937 943
938 QString enable = "true"; //_if->monitorMode() ? "true" : "false"; 944 QString enable = "true"; //_if->monitorMode() ? "true" : "false";
939 QString prism = _prismHeader ? "true" : "false"; 945 QString prism = _prismHeader ? "true" : "false";
940 QString cmd; 946 QString cmd;
941 cmd.sprintf( "$(which wlanctl-ng) %s lnxreq_wlansniff channel=%d enable=%s prismheader=%s", 947 cmd.sprintf( "$(which wlanctl-ng) %s lnxreq_wlansniff channel=%d enable=%s prismheader=%s",
942 (const char*) _if->name(), c+1, (const char*) enable, (const char*) prism ); 948 (const char*) _if->name(), c, (const char*) enable, (const char*) prism );
943 system( cmd ); 949 system( cmd );
944} 950}
945 951
946 952
947/*====================================================================================== 953/*======================================================================================
948 * OHostAPMonitoringInterface 954 * OHostAPMonitoringInterface
949 *======================================================================================*/ 955 *======================================================================================*/
950 956
951OHostAPMonitoringInterface::OHostAPMonitoringInterface( ONetworkInterface* iface, bool prismHeader ) 957OHostAPMonitoringInterface::OHostAPMonitoringInterface( ONetworkInterface* iface, bool prismHeader )
952 :OMonitoringInterface( iface, prismHeader ) 958 :OMonitoringInterface( iface, prismHeader )
953{ 959{
954 iface->setMonitoring( this ); 960 iface->setMonitoring( this );
955} 961}
956 962
957OHostAPMonitoringInterface::~OHostAPMonitoringInterface() 963OHostAPMonitoringInterface::~OHostAPMonitoringInterface()
958{ 964{
959} 965}
960 966
961void OHostAPMonitoringInterface::setEnabled( bool b ) 967void OHostAPMonitoringInterface::setEnabled( bool b )
962{ 968{
963 // IW_MODE_MONITOR was introduced in Wireless Extensions Version 15 969 // IW_MODE_MONITOR was introduced in Wireless Extensions Version 15
964 // Wireless Extensions < Version 15 need iwpriv commandos for monitoring 970 // Wireless Extensions < Version 15 need iwpriv commandos for monitoring
965 971
966 #if WIRELESS_EXT > 14 972 #if WIRELESS_EXT > 14
@@ -994,47 +1000,49 @@ QString OHostAPMonitoringInterface::name() const
994 1000
995OOrinocoMonitoringInterface::OOrinocoMonitoringInterface( ONetworkInterface* iface, bool prismHeader ) 1001OOrinocoMonitoringInterface::OOrinocoMonitoringInterface( ONetworkInterface* iface, bool prismHeader )
996 :OMonitoringInterface( iface, prismHeader ) 1002 :OMonitoringInterface( iface, prismHeader )
997{ 1003{
998 iface->setMonitoring( this ); 1004 iface->setMonitoring( this );
999} 1005}
1000 1006
1001 1007
1002OOrinocoMonitoringInterface::~OOrinocoMonitoringInterface() 1008OOrinocoMonitoringInterface::~OOrinocoMonitoringInterface()
1003{ 1009{
1004} 1010}
1005 1011
1006 1012
1007void OOrinocoMonitoringInterface::setChannel( int c ) 1013void OOrinocoMonitoringInterface::setChannel( int c )
1008{ 1014{
1009 int monitorCode = _prismHeader ? 1 : 2; 1015 int monitorCode = _prismHeader ? 1 : 2;
1010 _if->setPrivate( "monitor", 2, monitorCode, c ); 1016 _if->setPrivate( "monitor", 2, monitorCode, c );
1011} 1017}
1012 1018
1013 1019
1014void OOrinocoMonitoringInterface::setEnabled( bool b ) 1020void OOrinocoMonitoringInterface::setEnabled( bool b )
1015{ 1021{
1016 // IW_MODE_MONITOR was introduced in Wireless Extensions Version 15 1022 // IW_MODE_MONITOR was introduced in Wireless Extensions Version 15
1017 // Wireless Extensions < Version 15 need iwpriv commandos for monitoring 1023 // Wireless Extensions < Version 15 need iwpriv commandos for monitoring
1024 // However, as of recent orinoco drivers, IW_MODE_MONITOR is still not supported
1018 1025
1019 #if WIRELESS_EXT > 14 1026 #if 0
1027 //#if WIRELESS_EXT > 14
1020 if ( b ) 1028 if ( b )
1021 _if->setMode( "monitor" ); // IW_MODE_MONITOR doesn't support prism header 1029 _if->setMode( "monitor" ); // IW_MODE_MONITOR doesn't support prism header
1022 else 1030 else
1023 _if->setMode( "managed" ); 1031 _if->setMode( "managed" );
1024 #else 1032 #else
1025 if ( b ) 1033 if ( b )
1026 { 1034 {
1027 setChannel( 1 ); 1035 setChannel( 1 );
1028 } 1036 }
1029 else 1037 else
1030 { 1038 {
1031 _if->setPrivate( "monitor", 2, 0, 0 ); 1039 _if->setPrivate( "monitor", 2, 0, 0 );
1032 } 1040 }
1033 #endif 1041 #endif
1034} 1042}
1035 1043
1036 1044
1037QString OOrinocoMonitoringInterface::name() const 1045QString OOrinocoMonitoringInterface::name() const
1038{ 1046{
1039 return "orinoco"; 1047 return "orinoco";
1040} 1048}