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.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/libopie2/opienet/onetwork.cpp b/libopie2/opienet/onetwork.cpp
index be2736a..95e7043 100644
--- a/libopie2/opienet/onetwork.cpp
+++ b/libopie2/opienet/onetwork.cpp
@@ -606,97 +606,98 @@ double OWirelessNetworkInterface::frequency() const
606 return -1.0; 606 return -1.0;
607 } 607 }
608 else 608 else
609 { 609 {
610 return double( _iwr.u.freq.m ) * pow( 10.0, _iwr.u.freq.e ) / 1000000000.0; 610 return double( _iwr.u.freq.m ) * pow( 10.0, _iwr.u.freq.e ) / 1000000000.0;
611 } 611 }
612} 612}
613 613
614 614
615int OWirelessNetworkInterface::channels() const 615int OWirelessNetworkInterface::channels() const
616{ 616{
617 return _channels.count(); 617 return _channels.count();
618} 618}
619 619
620 620
621void OWirelessNetworkInterface::setChannelHopping( int interval ) 621void OWirelessNetworkInterface::setChannelHopping( int interval )
622{ 622{
623 if ( !_hopper ) _hopper = new OChannelHopper( this ); 623 if ( !_hopper ) _hopper = new OChannelHopper( this );
624 _hopper->setInterval( interval ); 624 _hopper->setInterval( interval );
625 //FIXME: When and by whom will the channel hopper be deleted? 625 //FIXME: When and by whom will the channel hopper be deleted?
626 //TODO: rely on QObject hierarchy 626 //TODO: rely on QObject hierarchy
627} 627}
628 628
629 629
630int OWirelessNetworkInterface::channelHopping() const 630int OWirelessNetworkInterface::channelHopping() const
631{ 631{
632 return _hopper->interval(); 632 return _hopper->interval();
633} 633}
634 634
635 635
636OChannelHopper* OWirelessNetworkInterface::channelHopper() const 636OChannelHopper* OWirelessNetworkInterface::channelHopper() const
637{ 637{
638 return _hopper; 638 return _hopper;
639} 639}
640 640
641 641
642void OWirelessNetworkInterface::setMonitorMode( bool b ) 642void OWirelessNetworkInterface::setMonitorMode( bool b )
643{ 643{
644 if ( _mon ) 644 if ( _mon )
645 _mon->setEnabled( b ); 645 _mon->setEnabled( b );
646 else 646 else
647 qDebug( "ONetwork(): can't switch monitor mode without installed monitoring interface" ); 647 qDebug( "ONetwork(): can't switch monitor mode without installed monitoring interface" );
648} 648}
649 649
650 650
651bool OWirelessNetworkInterface::monitorMode() const 651bool OWirelessNetworkInterface::monitorMode() const
652{ 652{
653 qDebug( "dataLinkType = %d", dataLinkType() ); 653 qDebug( "dataLinkType = %d", dataLinkType() );
654 return dataLinkType() == ARPHRD_IEEE80211; 654 return ( dataLinkType() == ARPHRD_IEEE80211 || dataLinkType() == 802 );
655 // 802 is the header type for PRISM - Linux support for this is pending...
655} 656}
656 657
657 658
658QString OWirelessNetworkInterface::nickName() const 659QString OWirelessNetworkInterface::nickName() const
659{ 660{
660 char str[IW_ESSID_MAX_SIZE]; 661 char str[IW_ESSID_MAX_SIZE];
661 _iwr.u.data.pointer = &str[0]; 662 _iwr.u.data.pointer = &str[0];
662 _iwr.u.data.length = IW_ESSID_MAX_SIZE; 663 _iwr.u.data.length = IW_ESSID_MAX_SIZE;
663 if ( !wioctl( SIOCGIWNICKN ) ) 664 if ( !wioctl( SIOCGIWNICKN ) )
664 { 665 {
665 return "<unknown>"; 666 return "<unknown>";
666 } 667 }
667 else 668 else
668 { 669 {
669 str[_iwr.u.data.length] = 0x0; // some drivers (e.g. wlan-ng) don't zero-terminate the string 670 str[_iwr.u.data.length] = 0x0; // some drivers (e.g. wlan-ng) don't zero-terminate the string
670 return str; 671 return str;
671 } 672 }
672} 673}
673 674
674 675
675void OWirelessNetworkInterface::setPrivate( const QString& call, int numargs, ... ) 676void OWirelessNetworkInterface::setPrivate( const QString& call, int numargs, ... )
676{ 677{
677 OPrivateIOCTL* priv = static_cast<OPrivateIOCTL*>( child( (const char*) call ) ); 678 OPrivateIOCTL* priv = static_cast<OPrivateIOCTL*>( child( (const char*) call ) );
678 if ( !priv ) 679 if ( !priv )
679 { 680 {
680 qDebug( "OWirelessNetworkInterface::setPrivate(): interface '%s' does not support private ioctl '%s'", name(), (const char*) call ); 681 qDebug( "OWirelessNetworkInterface::setPrivate(): interface '%s' does not support private ioctl '%s'", name(), (const char*) call );
681 return; 682 return;
682 } 683 }
683 if ( priv->numberSetArgs() != numargs ) 684 if ( priv->numberSetArgs() != numargs )
684 { 685 {
685 qDebug( "OWirelessNetworkInterface::setPrivate(): parameter count not matching. '%s' expects %d arguments, but got %d", (const char*) call, priv->numberSetArgs(), numargs ); 686 qDebug( "OWirelessNetworkInterface::setPrivate(): parameter count not matching. '%s' expects %d arguments, but got %d", (const char*) call, priv->numberSetArgs(), numargs );
686 return; 687 return;
687 } 688 }
688 689
689 qDebug( "OWirelessNetworkInterface::setPrivate(): about to call '%s' on interface '%s'", (const char*) call, name() ); 690 qDebug( "OWirelessNetworkInterface::setPrivate(): about to call '%s' on interface '%s'", (const char*) call, name() );
690 memset( &_iwr, 0, sizeof _iwr ); 691 memset( &_iwr, 0, sizeof _iwr );
691 va_list argp; 692 va_list argp;
692 va_start( argp, numargs ); 693 va_start( argp, numargs );
693 for ( int i = 0; i < numargs; ++i ) 694 for ( int i = 0; i < numargs; ++i )
694 { 695 {
695 priv->setParameter( i, va_arg( argp, int ) ); 696 priv->setParameter( i, va_arg( argp, int ) );
696 } 697 }
697 va_end( argp ); 698 va_end( argp );
698 priv->invoke(); 699 priv->invoke();
699} 700}
700 701
701 702
702void OWirelessNetworkInterface::getPrivate( const QString& call ) 703void OWirelessNetworkInterface::getPrivate( const QString& call )
@@ -888,69 +889,69 @@ OHostAPMonitoringInterface::OHostAPMonitoringInterface( ONetworkInterface* iface
888 889
889OHostAPMonitoringInterface::~OHostAPMonitoringInterface() 890OHostAPMonitoringInterface::~OHostAPMonitoringInterface()
890{ 891{
891} 892}
892 893
893void OHostAPMonitoringInterface::setEnabled( bool b ) 894void OHostAPMonitoringInterface::setEnabled( bool b )
894{ 895{
895 // IW_MODE_MONITOR was introduced in Wireless Extensions Version 15 896 // IW_MODE_MONITOR was introduced in Wireless Extensions Version 15
896 // Wireless Extensions < Version 15 need iwpriv commandos for monitoring 897 // Wireless Extensions < Version 15 need iwpriv commandos for monitoring
897 898
898 //TODO: check wireless extensions version on runtime and use 899 //TODO: check wireless extensions version on runtime and use
899 //TODO: SIOCSIWMODE( IW_MODE_MONITOR ) if running on WE >= 15 900 //TODO: SIOCSIWMODE( IW_MODE_MONITOR ) if running on WE >= 15
900 901
901 if ( b ) 902 if ( b )
902 { 903 {
903 _if->setPrivate( "monitor", 1, 2 ); 904 _if->setPrivate( "monitor", 1, 2 );
904 } 905 }
905 else 906 else
906 { 907 {
907 _if->setPrivate( "monitor", 1, 0 ); 908 _if->setPrivate( "monitor", 1, 0 );
908 } 909 }
909} 910}
910 911
911 912
912QString OHostAPMonitoringInterface::name() const 913QString OHostAPMonitoringInterface::name() const
913{ 914{
914 return "hostap"; 915 return "hostap";
915} 916}
916 917
917 918
918/*====================================================================================== 919/*======================================================================================
919 * OOrinocoNetworkInterface 920 * OOrinocoNetworkInterface
920 *======================================================================================*/ 921 *======================================================================================*/
921 922
922OOrinocoMonitoringInterface::OOrinocoMonitoringInterface( ONetworkInterface* iface ) 923OOrinocoMonitoringInterface::OOrinocoMonitoringInterface( ONetworkInterface* iface )
923 :OMonitoringInterface( iface ) 924 :OMonitoringInterface( iface )
924{ 925{
925 iface->setMonitoring( this ); 926 iface->setMonitoring( this );
926} 927}
927 928
928 929
929OOrinocoMonitoringInterface::~OOrinocoMonitoringInterface() 930OOrinocoMonitoringInterface::~OOrinocoMonitoringInterface()
930{ 931{
931} 932}
932 933
933 934
934void OOrinocoMonitoringInterface::setChannel( int c ) 935void OOrinocoMonitoringInterface::setChannel( int c )
935{ 936{
936 _if->setPrivate( "monitor", 2, 2, c ); 937 _if->setPrivate( "monitor", 2, 1, c );
937} 938}
938 939
939 940
940void OOrinocoMonitoringInterface::setEnabled( bool b ) 941void OOrinocoMonitoringInterface::setEnabled( bool b )
941{ 942{
942 if ( b ) 943 if ( b )
943 { 944 {
944 setChannel( 1 ); 945 setChannel( 1 );
945 } 946 }
946 else 947 else
947 { 948 {
948 _if->setPrivate( "monitor", 2, 0, 0 ); 949 _if->setPrivate( "monitor", 2, 0, 0 );
949 } 950 }
950} 951}
951 952
952 953
953QString OOrinocoMonitoringInterface::name() const 954QString OOrinocoMonitoringInterface::name() const
954{ 955{
955 return "orinoco"; 956 return "orinoco";
956} 957}