author | mickeyl <mickeyl> | 2005-05-06 09:27:12 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2005-05-06 09:27:12 (UTC) |
commit | 543d9d7c58c9601dba6f47b3a4011313d1d75499 (patch) (unidiff) | |
tree | 6b9d259a91b220264c961d542e25b69fe070320f | |
parent | c199fa0b0ef971c3a121af6c31a9a9822561a1be (diff) | |
download | opie-543d9d7c58c9601dba6f47b3a4011313d1d75499.zip opie-543d9d7c58c9601dba6f47b3a4011313d1d75499.tar.gz opie-543d9d7c58c9601dba6f47b3a4011313d1d75499.tar.bz2 |
- OManufacturerDB: check if there is a QApplication before calling Global::statusMessage or qApp->processEvents()
- ONetwork: skip hostap control interfaces 'wifi*'
- OWirelessNetworkInterface: set \0 in SSID() and nickName() to work around (buggy) drivers not returning a
zero-terminated string
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | libopie2/opienet/omanufacturerdb.cpp | 17 | ||||
-rw-r--r-- | libopie2/opienet/onetwork.cpp | 9 | ||||
-rw-r--r-- | libopie2/opienet/opienet.pro | 2 |
4 files changed, 14 insertions, 15 deletions
@@ -1,73 +1,74 @@ | |||
1 | 2005-??-??Opie 1.2.1 | 1 | 2005-??-??Opie 1.2.1 |
2 | 2 | ||
3 | 3 | ||
4 | New Features | 4 | New Features |
5 | ------------ | 5 | ------------ |
6 | * OpieStumbler: Scans WiFi networks using the wireless extension scanning (skyhusker) | 6 | * OpieStumbler: Scans WiFi networks using the wireless extension scanning (skyhusker) |
7 | * Opie-Reader: Support for document formats ArriereGo and Reb, add flite output (tim,pohly) | 7 | * Opie-Reader: Support for document formats ArriereGo and Reb, add flite output (tim,pohly) |
8 | 8 | ||
9 | Fixed Bugs | 9 | Fixed Bugs |
10 | ---------- | 10 | ---------- |
11 | * #1476 - Wrong order of application entries in the O-menu (skyhusker) | 11 | * #1476 - Wrong order of application entries in the O-menu (skyhusker) |
12 | * #1535- Missing line break and unnecessary location shown with Today-Calendar plugin (deller) | 12 | * #1535- Missing line break and unnecessary location shown with Today-Calendar plugin (deller) |
13 | * #1565 - crash-fix in odevice.cpp while scanning the distribution table (deller) | 13 | * #1565 - crash-fix in odevice.cpp while scanning the distribution table (deller) |
14 | * #1614 - Make Opie-console start in $HOME instead of / (skyhusker) | 14 | * #1614 - Make Opie-console start in $HOME instead of / (skyhusker) |
15 | * n.a.- always show volume and wireless applet popups inside visible screen (deller) | 15 | * n.a.- always show volume and wireless applet popups inside visible screen (deller) |
16 | * n.a. - scale O-Menu-Applets appropriately (mickeyl) | 16 | * n.a. - scale O-Menu-Applets appropriately (mickeyl) |
17 | * n.a.- libopienet: fix bugs in wireless scanning and setting SSID (skyhusker) | 17 | * n.a.- libopienet: fix bugs in wireless scanning and setting SSID (skyhusker) |
18 | * n.a.- Wellenreiter: relax WE version matching test a bit (mickeyl) | 18 | * n.a.- Wellenreiter: relax WE version matching test a bit (mickeyl) |
19 | * n.a.- scale BluezApplet appropriately and use larger icons (mickeyl) | 19 | * n.a.- scale BluezApplet appropriately and use larger icons (mickeyl) |
20 | * n.a.- memoryapplet: fix crash in memoryapplet on kernels without swap support (seneca cunningham) | 20 | * n.a.- memoryapplet: fix crash in memoryapplet on kernels without swap support (seneca cunningham) |
21 | 21 | ||
22 | Internal | 22 | Internal |
23 | -------- | 23 | -------- |
24 | * Make BluezApplet use OTaskbarApplet (mickeyl) | 24 | * Make BluezApplet use OTaskbarApplet (mickeyl) |
25 | * Rewrite OFileNotification to use the upcoming inotify interface instead of the deprecated dnotify (mickeyl) | 25 | * Rewrite OFileNotification to use the upcoming inotify interface instead of the deprecated dnotify (mickeyl) |
26 | * libopienet: Skip hostap control interfaces 'wifi' and improve robustness in ONetworkInterface (mickeyl) | ||
26 | 27 | ||
27 | 2005-03-25Opie 1.2.0 | 28 | 2005-03-25Opie 1.2.0 |
28 | 29 | ||
29 | Fixed Bugs | 30 | Fixed Bugs |
30 | ---------- | 31 | ---------- |
31 | * #1613 - AdvancedFM - scale toolbar icons appropriately (drw) | 32 | * #1613 - AdvancedFM - scale toolbar icons appropriately (drw) |
32 | * #1620 - OFileSelector - show the button on press and not on press on hold (alwin) | 33 | * #1620 - OFileSelector - show the button on press and not on press on hold (alwin) |
33 | * #1473 - Opie-Eye - Same as #1620 but we lack a common FileSystem Button class (zecke) | 34 | * #1473 - Opie-Eye - Same as #1620 but we lack a common FileSystem Button class (zecke) |
34 | * n.a. - PackageManager - fix bug where messages show up multiple times in install dialog (drw) | 35 | * n.a. - PackageManager - fix bug where messages show up multiple times in install dialog (drw) |
35 | * n.a.- make qpeglobal.h include qglobal.h (zecke) | 36 | * n.a.- make qpeglobal.h include qglobal.h (zecke) |
36 | 37 | ||
37 | 2005-03-20Opie 1.2.0-rc1 | 38 | 2005-03-20Opie 1.2.0-rc1 |
38 | 39 | ||
39 | 40 | ||
40 | New Features | 41 | New Features |
41 | ------------ | 42 | ------------ |
42 | * Launcher: Support a static background pixmap (mickeyl) | 43 | * Launcher: Support a static background pixmap (mickeyl) |
43 | * LauncherSettings: Choose whether to have a static background pixmap (mickeyl) | 44 | * LauncherSettings: Choose whether to have a static background pixmap (mickeyl) |
44 | * PackageManager supports the 'lists_dir' ipkg configuration option (drw) | 45 | * PackageManager supports the 'lists_dir' ipkg configuration option (drw) |
45 | * Added hi-res inline images for large resolution devices (drw) | 46 | * Added hi-res inline images for large resolution devices (drw) |
46 | * Improved launcher icons for consistency (ar) | 47 | * Improved launcher icons for consistency (ar) |
47 | * Datebook: Added plugin system to datebook so holidays and birthdays from contacts may displayed in datebook (alwin) | 48 | * Datebook: Added plugin system to datebook so holidays and birthdays from contacts may displayed in datebook (alwin) |
48 | 49 | ||
49 | Fixed Bugs | 50 | Fixed Bugs |
50 | ---------- | 51 | ---------- |
51 | * #1236 - VCards contained empty home and work address entries causing Palms to crash (eilers) | 52 | * #1236 - VCards contained empty home and work address entries causing Palms to crash (eilers) |
52 | * #1412 - Launcher Settings - fixed default settings for background in Edit tab dialog (drw) | 53 | * #1412 - Launcher Settings - fixed default settings for background in Edit tab dialog (drw) |
53 | * #1472 - Opie textedit now check for unsaved changes on ESC key (ljp) | 54 | * #1472 - Opie textedit now check for unsaved changes on ESC key (ljp) |
54 | * #1474 - Implement GUI for Scrollbars on the Left in Appearance (zecke) | 55 | * #1474 - Implement GUI for Scrollbars on the Left in Appearance (zecke) |
55 | * #1482 - Fix double '/' in paths (zecke) | 56 | * #1482 - Fix double '/' in paths (zecke) |
56 | * #1536 - Autosave of custom locations in opie backup (ar) | 57 | * #1536 - Autosave of custom locations in opie backup (ar) |
57 | * #1539 - Fixed displaying too long path in the delete dialog in opie-eye (zecke) | 58 | * #1539 - Fixed displaying too long path in the delete dialog in opie-eye (zecke) |
58 | * #1540 - Implemented deletion of DocLnks in opie-eye (zecke) | 59 | * #1540 - Implemented deletion of DocLnks in opie-eye (zecke) |
59 | * #1542 - Fixed Todo crash when priority < 1 or > 5 (drw) | 60 | * #1542 - Fixed Todo crash when priority < 1 or > 5 (drw) |
60 | * #1550 - Browse for alarm sound start in QPEDIR/sounds/ (zecke) | 61 | * #1550 - Browse for alarm sound start in QPEDIR/sounds/ (zecke) |
61 | * #1554 - Fixed Opie-Console name in .desktop file (mickeyl) | 62 | * #1554 - Fixed Opie-Console name in .desktop file (mickeyl) |
62 | * #1556 - Start to look for sound files in /opt/QtPalmtop/sounds (zecke) | 63 | * #1556 - Start to look for sound files in /opt/QtPalmtop/sounds (zecke) |
63 | * #1558 - Fixed opie-login breaking opie startup (mickeyl) | 64 | * #1558 - Fixed opie-login breaking opie startup (mickeyl) |
64 | * #1560 - Fixed Opie-Console picking up the wrong shell (bluelightning) | 65 | * #1560 - Fixed Opie-Console picking up the wrong shell (bluelightning) |
65 | * #1570 - Confirmation needed befor Restore a backup and overwrite local data (ar) | 66 | * #1570 - Confirmation needed befor Restore a backup and overwrite local data (ar) |
66 | * #1591 - Addressbook sortorder changed by clicking on column 0 (eilers) | 67 | * #1591 - Addressbook sortorder changed by clicking on column 0 (eilers) |
67 | * #1599 - Security - change recommendation for opie-multiauth to opie-securityplugin (gints) | 68 | * #1599 - Security - change recommendation for opie-multiauth to opie-securityplugin (gints) |
68 | * #1604 - Checkbook crashed on startup (drw) | 69 | * #1604 - Checkbook crashed on startup (drw) |
69 | * #1608 - Addressbook crashed after search, which may caused by not initialzed member variable (eilers) | 70 | * #1608 - Addressbook crashed after search, which may caused by not initialzed member variable (eilers) |
70 | * #1608 - QueryByExampe-Datediff on SQL database did not worked properly (eilers) | 71 | * #1608 - QueryByExampe-Datediff on SQL database did not worked properly (eilers) |
71 | * n.a. - Netsystemtime - fixed UI to prevent error dialog from displaying when it shouldn't, get rid of some compiler warnings (drw) | 72 | * n.a. - Netsystemtime - fixed UI to prevent error dialog from displaying when it shouldn't, get rid of some compiler warnings (drw) |
72 | * n.a. - PackageManager - fixed where last package in status file was not shown as installed when it should be (drw) | 73 | * n.a. - PackageManager - fixed where last package in status file was not shown as installed when it should be (drw) |
73 | * n.a. - PackageManager - fixed bug where lists_dir was not being honored at startup (drw) | 74 | * n.a. - PackageManager - fixed bug where lists_dir was not being honored at startup (drw) |
diff --git a/libopie2/opienet/omanufacturerdb.cpp b/libopie2/opienet/omanufacturerdb.cpp index 123aee8..3af3d4c 100644 --- a/libopie2/opienet/omanufacturerdb.cpp +++ b/libopie2/opienet/omanufacturerdb.cpp | |||
@@ -1,143 +1,134 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | =. (C) 2003-2004 Michael 'Mickey' Lauer <mickey@Vanille.de> | 3 | =. (C) 2003-2004 Michael 'Mickey' Lauer <mickey@Vanille.de> |
4 | .=l. | 4 | .=l. |
5 | .>+-= | 5 | .>+-= |
6 | _;:, .> :=|. This program is free software; you can | 6 | _;:, .> :=|. This program is free software; you can |
7 | .> <`_, > . <= redistribute it and/or modify it under | 7 | .> <`_, > . <= redistribute it and/or modify it under |
8 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 8 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
9 | .="- .-=="i, .._ License as published by the Free Software | 9 | .="- .-=="i, .._ License as published by the Free Software |
10 | - . .-<_> .<> Foundation; version 2 of the License. | 10 | - . .-<_> .<> Foundation; version 2 of the License. |
11 | ._= =} : | 11 | ._= =} : |
12 | .%`+i> _;_. | 12 | .%`+i> _;_. |
13 | .i_,=:_. -<s. This program is distributed in the hope that | 13 | .i_,=:_. -<s. This program is distributed in the hope that |
14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
15 | : .. .:, . . . without even the implied warranty of | 15 | : .. .:, . . . without even the implied warranty of |
16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
18 | ..}^=.= = ; Library General Public License for more | 18 | ..}^=.= = ; Library General Public License for more |
19 | ++= -. .` .: details. | 19 | ++= -. .` .: details. |
20 | : = ...= . :.=- | 20 | : = ...= . :.=- |
21 | -. .:....=;==+<; You should have received a copy of the GNU | 21 | -. .:....=;==+<; You should have received a copy of the GNU |
22 | -_. . . )=. = Library General Public License along with | 22 | -_. . . )=. = Library General Public License along with |
23 | -- :-=` this library; see the file COPYING.LIB. | 23 | -- :-=` this library; see the file COPYING.LIB. |
24 | If not, write to the Free Software Foundation, | 24 | If not, write to the Free Software Foundation, |
25 | Inc., 59 Temple Place - Suite 330, | 25 | Inc., 59 Temple Place - Suite 330, |
26 | Boston, MA 02111-1307, USA. | 26 | Boston, MA 02111-1307, USA. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "omanufacturerdb.h" | 29 | #include "omanufacturerdb.h" |
30 | 30 | ||
31 | #define OPIE_IMPROVE_GUI_LATENCY 1 | ||
32 | |||
33 | /* OPIE */ | 31 | /* OPIE */ |
34 | #include <opie2/odebug.h> | 32 | #include <opie2/odebug.h> |
35 | #include <qpe/qpeapplication.h> | 33 | #include <qpe/qpeapplication.h> |
36 | #ifdef OPIE_IMPROVE_GUI_LATENCY | 34 | #ifdef OPIE_IMPROVE_GUI_LATENCY |
37 | #include <qpe/global.h> | 35 | #include <qpe/global.h> |
38 | #endif | 36 | #endif |
39 | 37 | ||
40 | 38 | ||
41 | 39 | ||
42 | /* QT */ | 40 | /* QT */ |
43 | #include <qapplication.h> | 41 | #include <qapplication.h> |
44 | #include <qfile.h> | 42 | #include <qfile.h> |
45 | #include <qtextstream.h> | 43 | #include <qtextstream.h> |
46 | 44 | ||
47 | using namespace Opie::Core; | 45 | using namespace Opie::Core; |
48 | namespace Opie { | 46 | namespace Opie { |
49 | namespace Net { | 47 | namespace Net { |
50 | 48 | ||
51 | OManufacturerDB* OManufacturerDB::_instance = 0; | 49 | OManufacturerDB* OManufacturerDB::_instance = 0; |
52 | 50 | ||
53 | OManufacturerDB* OManufacturerDB::instance() | 51 | OManufacturerDB* OManufacturerDB::instance() |
54 | { | 52 | { |
55 | if ( !OManufacturerDB::_instance ) | 53 | if ( !OManufacturerDB::_instance ) |
56 | { | 54 | { |
57 | odebug << "OManufacturerDB::instance(): creating OManufacturerDB..." << oendl; | 55 | odebug << "OManufacturerDB::instance(): creating OManufacturerDB..." << oendl; |
58 | _instance = new OManufacturerDB(); | 56 | _instance = new OManufacturerDB(); |
59 | } | 57 | } |
60 | return _instance; | 58 | return _instance; |
61 | } | 59 | } |
62 | 60 | ||
63 | 61 | ||
64 | OManufacturerDB::OManufacturerDB() | 62 | OManufacturerDB::OManufacturerDB() |
65 | { | 63 | { |
66 | #ifdef OPIE_IMPROVE_GUI_LATENCY | 64 | if ( qApp ) Global::statusMessage( "Reading Manufacturers..." ); |
67 | Global::statusMessage( "Reading Manufacturers..." ); | ||
68 | #endif | ||
69 | QString filename( "/etc/manufacturers" ); | 65 | QString filename( "/etc/manufacturers" ); |
70 | odebug << "OManufacturerDB: trying to read " << filename << oendl; | 66 | odebug << "OManufacturerDB: trying to read " << filename << oendl; |
71 | if ( !QFile::exists( filename ) ) | 67 | if ( !QFile::exists( filename ) ) |
72 | { | 68 | { |
73 | filename = QPEApplication::qpeDir()+"etc/manufacturers"; | 69 | filename = QPEApplication::qpeDir()+"etc/manufacturers"; |
74 | odebug << "OManufacturerDB: trying to read " << filename << oendl; | 70 | odebug << "OManufacturerDB: trying to read " << filename << oendl; |
75 | if ( !QFile::exists( filename ) ) | 71 | if ( !QFile::exists( filename ) ) |
76 | { | 72 | { |
77 | filename = "/usr/share/wellenreiter/manufacturers"; | 73 | filename = "/usr/share/wellenreiter/manufacturers"; |
78 | odebug << "OManufacturerDB: trying to read " << filename << oendl; | 74 | odebug << "OManufacturerDB: trying to read " << filename << oendl; |
79 | } | 75 | } |
80 | } | 76 | } |
81 | 77 | ||
82 | QFile file( filename ); | 78 | QFile file( filename ); |
83 | bool hasFile = file.open( IO_ReadOnly ); | 79 | bool hasFile = file.open( IO_ReadOnly ); |
84 | if (!hasFile) | 80 | if (!hasFile) |
85 | { | 81 | { |
86 | owarn << "OManufacturerDB: no valid manufacturer list found." << oendl; | 82 | owarn << "OManufacturerDB: no valid manufacturer list found." << oendl; |
87 | } | 83 | } |
88 | else | 84 | else |
89 | { | 85 | { |
90 | odebug << "OManufacturerDB: found manufacturer list in " << filename << oendl; | 86 | odebug << "OManufacturerDB: found manufacturer list in " << filename << oendl; |
91 | QTextStream s( &file ); | 87 | QTextStream s( &file ); |
92 | QString addr; | 88 | QString addr; |
93 | QString manu; | 89 | QString manu; |
94 | QString extManu; | 90 | QString extManu; |
95 | #ifdef OPIE_IMPROVE_GUI_LATENCY | ||
96 | int counter = 0; | 91 | int counter = 0; |
97 | #endif | 92 | |
98 | while (!s.atEnd()) | 93 | while (!s.atEnd()) |
99 | { | 94 | { |
100 | s >> addr; | 95 | s >> addr; |
101 | s >> manu; | 96 | s >> manu; |
102 | s >> extManu; | 97 | s >> extManu; |
103 | 98 | ||
104 | manufacturers.insert( addr, manu ); | 99 | manufacturers.insert( addr, manu ); |
105 | manufacturersExt.insert( addr, extManu ); | 100 | manufacturersExt.insert( addr, extManu ); |
106 | // odebug << "OmanufacturerDB: parse '" << addr << "' as '" << manu << "' (" << extManu << ")" << oendl; | 101 | // odebug << "OmanufacturerDB: parse '" << addr << "' as '" << manu << "' (" << extManu << ")" << oendl; |
107 | #ifdef OPIE_IMPROVE_GUI_LATENCY | ||
108 | counter++; | 102 | counter++; |
109 | if ( counter == 50 ) | 103 | if ( counter == 50 ) |
110 | { | 104 | { |
111 | qApp->processEvents(); | 105 | if ( qApp ) qApp->processEvents(); |
112 | counter = 0; | 106 | counter = 0; |
113 | } | 107 | } |
114 | #endif | ||
115 | } | 108 | } |
116 | odebug << "OManufacturerDB: manufacturer list completed." << oendl; | 109 | odebug << "OManufacturerDB: manufacturer list completed." << oendl; |
117 | #ifdef OPIE_IMPROVE_GUI_LATENCY | 110 | if ( qApp ) Global::statusMessage( "Manufacturers Complete..." ); |
118 | Global::statusMessage( "Manufacturers Complete..." ); | ||
119 | #endif | ||
120 | } | 111 | } |
121 | } | 112 | } |
122 | 113 | ||
123 | 114 | ||
124 | OManufacturerDB::~OManufacturerDB() | 115 | OManufacturerDB::~OManufacturerDB() |
125 | { | 116 | { |
126 | } | 117 | } |
127 | 118 | ||
128 | 119 | ||
129 | const QString& OManufacturerDB::lookup( const QString& macaddr ) const | 120 | const QString& OManufacturerDB::lookup( const QString& macaddr ) const |
130 | { | 121 | { |
131 | return manufacturers[macaddr.upper().left(8)]; | 122 | return manufacturers[macaddr.upper().left(8)]; |
132 | } | 123 | } |
133 | 124 | ||
134 | 125 | ||
135 | const QString& OManufacturerDB::lookupExt( const QString& macaddr ) const | 126 | const QString& OManufacturerDB::lookupExt( const QString& macaddr ) const |
136 | { | 127 | { |
137 | QMap<QString,QString>::ConstIterator it = manufacturersExt.find( macaddr.upper().left(8) ); | 128 | QMap<QString,QString>::ConstIterator it = manufacturersExt.find( macaddr.upper().left(8) ); |
138 | return it == manufacturersExt.end() ? lookup( macaddr ) : *it; | 129 | return it == manufacturersExt.end() ? lookup( macaddr ) : *it; |
139 | } | 130 | } |
140 | 131 | ||
141 | } | 132 | } |
142 | } | 133 | } |
143 | 134 | ||
diff --git a/libopie2/opienet/onetwork.cpp b/libopie2/opienet/onetwork.cpp index 0a74019..f4bdbe0 100644 --- a/libopie2/opienet/onetwork.cpp +++ b/libopie2/opienet/onetwork.cpp | |||
@@ -59,96 +59,102 @@ | |||
59 | 59 | ||
60 | #ifndef NODEBUG | 60 | #ifndef NODEBUG |
61 | #include <opie2/odebugmapper.h> | 61 | #include <opie2/odebugmapper.h> |
62 | 62 | ||
63 | using namespace Opie::Core; | 63 | using namespace Opie::Core; |
64 | using namespace Opie::Net::Internal; | 64 | using namespace Opie::Net::Internal; |
65 | DebugMapper* debugmapper = new DebugMapper(); | 65 | DebugMapper* debugmapper = new DebugMapper(); |
66 | #endif | 66 | #endif |
67 | 67 | ||
68 | /*====================================================================================== | 68 | /*====================================================================================== |
69 | * ONetwork | 69 | * ONetwork |
70 | *======================================================================================*/ | 70 | *======================================================================================*/ |
71 | 71 | ||
72 | namespace Opie { | 72 | namespace Opie { |
73 | namespace Net { | 73 | namespace Net { |
74 | ONetwork* ONetwork::_instance = 0; | 74 | ONetwork* ONetwork::_instance = 0; |
75 | 75 | ||
76 | ONetwork::ONetwork() | 76 | ONetwork::ONetwork() |
77 | { | 77 | { |
78 | odebug << "ONetwork::ONetwork()" << oendl; | 78 | odebug << "ONetwork::ONetwork()" << oendl; |
79 | odebug << "ONetwork: This code has been compiled against Wireless Extensions V" << WIRELESS_EXT << oendl; | 79 | odebug << "ONetwork: This code has been compiled against Wireless Extensions V" << WIRELESS_EXT << oendl; |
80 | synchronize(); | 80 | synchronize(); |
81 | } | 81 | } |
82 | 82 | ||
83 | void ONetwork::synchronize() | 83 | void ONetwork::synchronize() |
84 | { | 84 | { |
85 | // gather available interfaces by inspecting /proc/net/dev | 85 | // gather available interfaces by inspecting /proc/net/dev |
86 | //FIXME: we could use SIOCGIFCONF here, but we aren't interested in virtual (e.g. eth0:0) devices | 86 | //FIXME: we could use SIOCGIFCONF here, but we aren't interested in virtual (e.g. eth0:0) devices |
87 | //FIXME: Use SIOCGIFCONF anway, because we can disable listing of aliased devices | 87 | //FIXME: Use SIOCGIFCONF anway, because we can disable listing of aliased devices |
88 | //FIXME: Best is use SIOCGIFCONF and if this doesn't work (result=-1), then fallback to parsing /proc/net/dev | 88 | //FIXME: Best is use SIOCGIFCONF and if this doesn't work (result=-1), then fallback to parsing /proc/net/dev |
89 | 89 | ||
90 | _interfaces.clear(); | 90 | _interfaces.clear(); |
91 | QString str; | 91 | QString str; |
92 | QFile f( "/proc/net/dev" ); | 92 | QFile f( "/proc/net/dev" ); |
93 | bool hasFile = f.open( IO_ReadOnly ); | 93 | bool hasFile = f.open( IO_ReadOnly ); |
94 | if ( !hasFile ) | 94 | if ( !hasFile ) |
95 | { | 95 | { |
96 | odebug << "ONetwork: /proc/net/dev not existing. No network devices available" << oendl; | 96 | odebug << "ONetwork: /proc/net/dev not existing. No network devices available" << oendl; |
97 | return; | 97 | return; |
98 | } | 98 | } |
99 | QTextStream s( &f ); | 99 | QTextStream s( &f ); |
100 | s.readLine(); | 100 | s.readLine(); |
101 | s.readLine(); | 101 | s.readLine(); |
102 | while ( !s.atEnd() ) | 102 | while ( !s.atEnd() ) |
103 | { | 103 | { |
104 | s >> str; | 104 | s >> str; |
105 | str.truncate( str.find( ':' ) ); | 105 | str.truncate( str.find( ':' ) ); |
106 | odebug << "ONetwork: found interface '" << str << "'" << oendl; | 106 | odebug << "ONetwork: found interface '" << str << "'" << oendl; |
107 | if ( str.startsWith( "wifi" ) ) | ||
108 | { | ||
109 | odebug << "ONetwork: ignoring hostap control interface" << oendl; | ||
110 | s.readLine(); | ||
111 | continue; | ||
112 | } | ||
107 | ONetworkInterface* iface = 0; | 113 | ONetworkInterface* iface = 0; |
108 | if ( isWirelessInterface( str ) ) | 114 | if ( isWirelessInterface( str ) ) |
109 | { | 115 | { |
110 | iface = new OWirelessNetworkInterface( this, (const char*) str ); | 116 | iface = new OWirelessNetworkInterface( this, (const char*) str ); |
111 | odebug << "ONetwork: interface '" << str << "' has Wireless Extensions" << oendl; | 117 | odebug << "ONetwork: interface '" << str << "' has Wireless Extensions" << oendl; |
112 | } | 118 | } |
113 | else | 119 | else |
114 | { | 120 | { |
115 | iface = new ONetworkInterface( this, (const char*) str ); | 121 | iface = new ONetworkInterface( this, (const char*) str ); |
116 | } | 122 | } |
117 | _interfaces.insert( str, iface ); | 123 | _interfaces.insert( str, iface ); |
118 | s.readLine(); | 124 | s.readLine(); |
119 | } | 125 | } |
120 | } | 126 | } |
121 | 127 | ||
122 | 128 | ||
123 | short ONetwork::wirelessExtensionCompileVersion() | 129 | short ONetwork::wirelessExtensionCompileVersion() |
124 | { | 130 | { |
125 | return WIRELESS_EXT; | 131 | return WIRELESS_EXT; |
126 | } | 132 | } |
127 | 133 | ||
128 | 134 | ||
129 | int ONetwork::count() const | 135 | int ONetwork::count() const |
130 | { | 136 | { |
131 | return _interfaces.count(); | 137 | return _interfaces.count(); |
132 | } | 138 | } |
133 | 139 | ||
134 | 140 | ||
135 | ONetworkInterface* ONetwork::interface( const QString& iface ) const | 141 | ONetworkInterface* ONetwork::interface( const QString& iface ) const |
136 | { | 142 | { |
137 | return _interfaces[iface]; | 143 | return _interfaces[iface]; |
138 | } | 144 | } |
139 | 145 | ||
140 | 146 | ||
141 | ONetwork* ONetwork::instance() | 147 | ONetwork* ONetwork::instance() |
142 | { | 148 | { |
143 | if ( !_instance ) _instance = new ONetwork(); | 149 | if ( !_instance ) _instance = new ONetwork(); |
144 | return _instance; | 150 | return _instance; |
145 | } | 151 | } |
146 | 152 | ||
147 | 153 | ||
148 | ONetwork::InterfaceIterator ONetwork::iterator() const | 154 | ONetwork::InterfaceIterator ONetwork::iterator() const |
149 | { | 155 | { |
150 | return ONetwork::InterfaceIterator( _interfaces ); | 156 | return ONetwork::InterfaceIterator( _interfaces ); |
151 | } | 157 | } |
152 | 158 | ||
153 | 159 | ||
154 | bool ONetwork::isPresent( const char* name ) const | 160 | bool ONetwork::isPresent( const char* name ) const |
@@ -763,154 +769,155 @@ void OWirelessNetworkInterface::setMode( const QString& newMode ) | |||
763 | odebug << "ONetwork(): can't switch monitor mode without installed monitoring interface" << oendl; | 769 | odebug << "ONetwork(): can't switch monitor mode without installed monitoring interface" << oendl; |
764 | } | 770 | } |
765 | } | 771 | } |
766 | } | 772 | } |
767 | 773 | ||
768 | 774 | ||
769 | QString OWirelessNetworkInterface::mode() const | 775 | QString OWirelessNetworkInterface::mode() const |
770 | { | 776 | { |
771 | memset( &_iwr, 0, sizeof( struct iwreq ) ); | 777 | memset( &_iwr, 0, sizeof( struct iwreq ) ); |
772 | 778 | ||
773 | if ( !wioctl( SIOCGIWMODE ) ) | 779 | if ( !wioctl( SIOCGIWMODE ) ) |
774 | { | 780 | { |
775 | return "<unknown>"; | 781 | return "<unknown>"; |
776 | } | 782 | } |
777 | 783 | ||
778 | odebug << "OWirelessNetworkInterface::setMode(): WE's idea of current mode seems to be " << modeToString( _iwr.u.mode ) << oendl; | 784 | odebug << "OWirelessNetworkInterface::setMode(): WE's idea of current mode seems to be " << modeToString( _iwr.u.mode ) << oendl; |
779 | 785 | ||
780 | // legacy compatible monitor mode check | 786 | // legacy compatible monitor mode check |
781 | 787 | ||
782 | if ( dataLinkType() == ARPHRD_IEEE80211 || dataLinkType() == 802 ) | 788 | if ( dataLinkType() == ARPHRD_IEEE80211 || dataLinkType() == 802 ) |
783 | { | 789 | { |
784 | return "monitor"; | 790 | return "monitor"; |
785 | } | 791 | } |
786 | else | 792 | else |
787 | { | 793 | { |
788 | return modeToString( _iwr.u.mode ); | 794 | return modeToString( _iwr.u.mode ); |
789 | } | 795 | } |
790 | } | 796 | } |
791 | 797 | ||
792 | void OWirelessNetworkInterface::setNickName( const QString& nickname ) | 798 | void OWirelessNetworkInterface::setNickName( const QString& nickname ) |
793 | { | 799 | { |
794 | _iwr.u.essid.pointer = const_cast<char*>( (const char*) nickname ); | 800 | _iwr.u.essid.pointer = const_cast<char*>( (const char*) nickname ); |
795 | _iwr.u.essid.length = nickname.length(); | 801 | _iwr.u.essid.length = nickname.length(); |
796 | wioctl( SIOCSIWNICKN ); | 802 | wioctl( SIOCSIWNICKN ); |
797 | } | 803 | } |
798 | 804 | ||
799 | 805 | ||
800 | QString OWirelessNetworkInterface::nickName() const | 806 | QString OWirelessNetworkInterface::nickName() const |
801 | { | 807 | { |
802 | char str[IW_ESSID_MAX_SIZE]; | 808 | char str[IW_ESSID_MAX_SIZE]; |
803 | _iwr.u.data.pointer = &str[0]; | 809 | _iwr.u.data.pointer = &str[0]; |
804 | _iwr.u.data.length = IW_ESSID_MAX_SIZE; | 810 | _iwr.u.data.length = IW_ESSID_MAX_SIZE; |
805 | if ( !wioctl( SIOCGIWNICKN ) ) | 811 | if ( !wioctl( SIOCGIWNICKN ) ) |
806 | { | 812 | { |
807 | return "<unknown>"; | 813 | return "<unknown>"; |
808 | } | 814 | } |
809 | else | 815 | else |
810 | { | 816 | { |
811 | str[_iwr.u.data.length] = 0x0; // some drivers (e.g. wlan-ng) don't zero-terminate the string | 817 | str[_iwr.u.data.length] = '\0'; // some drivers don't zero-terminate the string |
812 | return str; | 818 | return str; |
813 | } | 819 | } |
814 | } | 820 | } |
815 | 821 | ||
816 | 822 | ||
817 | void OWirelessNetworkInterface::setPrivate( const QString& call, int numargs, ... ) | 823 | void OWirelessNetworkInterface::setPrivate( const QString& call, int numargs, ... ) |
818 | { | 824 | { |
819 | OPrivateIOCTL* priv = static_cast<OPrivateIOCTL*>( child( (const char*) call ) ); | 825 | OPrivateIOCTL* priv = static_cast<OPrivateIOCTL*>( child( (const char*) call ) ); |
820 | if ( !priv ) | 826 | if ( !priv ) |
821 | { | 827 | { |
822 | owarn << "OWirelessNetworkInterface::setPrivate(): interface '" << name() | 828 | owarn << "OWirelessNetworkInterface::setPrivate(): interface '" << name() |
823 | << "' does not support private ioctl '" << call << "'" << oendl; | 829 | << "' does not support private ioctl '" << call << "'" << oendl; |
824 | return; | 830 | return; |
825 | } | 831 | } |
826 | if ( priv->numberSetArgs() != numargs ) | 832 | if ( priv->numberSetArgs() != numargs ) |
827 | { | 833 | { |
828 | owarn << "OWirelessNetworkInterface::setPrivate(): parameter count not matching. '" | 834 | owarn << "OWirelessNetworkInterface::setPrivate(): parameter count not matching. '" |
829 | << call << "' expects " << priv->numberSetArgs() << ", but got " << numargs << oendl; | 835 | << call << "' expects " << priv->numberSetArgs() << ", but got " << numargs << oendl; |
830 | return; | 836 | return; |
831 | } | 837 | } |
832 | 838 | ||
833 | odebug << "OWirelessNetworkInterface::setPrivate(): about to call '" << call << "' on interface '" << name() << "'" << oendl; | 839 | odebug << "OWirelessNetworkInterface::setPrivate(): about to call '" << call << "' on interface '" << name() << "'" << oendl; |
834 | memset( &_iwr, 0, sizeof _iwr ); | 840 | memset( &_iwr, 0, sizeof _iwr ); |
835 | va_list argp; | 841 | va_list argp; |
836 | va_start( argp, numargs ); | 842 | va_start( argp, numargs ); |
837 | for ( int i = 0; i < numargs; ++i ) | 843 | for ( int i = 0; i < numargs; ++i ) |
838 | { | 844 | { |
839 | priv->setParameter( i, va_arg( argp, int ) ); | 845 | priv->setParameter( i, va_arg( argp, int ) ); |
840 | } | 846 | } |
841 | va_end( argp ); | 847 | va_end( argp ); |
842 | priv->invoke(); | 848 | priv->invoke(); |
843 | } | 849 | } |
844 | 850 | ||
845 | 851 | ||
846 | void OWirelessNetworkInterface::getPrivate( const QString& ) | 852 | void OWirelessNetworkInterface::getPrivate( const QString& ) |
847 | { | 853 | { |
848 | oerr << "OWirelessNetworkInterface::getPrivate() is not implemented yet." << oendl; | 854 | oerr << "OWirelessNetworkInterface::getPrivate() is not implemented yet." << oendl; |
849 | } | 855 | } |
850 | 856 | ||
851 | 857 | ||
852 | bool OWirelessNetworkInterface::hasPrivate( const QString& call ) | 858 | bool OWirelessNetworkInterface::hasPrivate( const QString& call ) |
853 | { | 859 | { |
854 | return child( call.local8Bit() ); | 860 | return child( call.local8Bit() ); |
855 | } | 861 | } |
856 | 862 | ||
857 | 863 | ||
858 | QString OWirelessNetworkInterface::SSID() const | 864 | QString OWirelessNetworkInterface::SSID() const |
859 | { | 865 | { |
860 | char str[IW_ESSID_MAX_SIZE]; | 866 | char str[IW_ESSID_MAX_SIZE]; |
861 | _iwr.u.essid.pointer = &str[0]; | 867 | _iwr.u.essid.pointer = &str[0]; |
862 | _iwr.u.essid.length = IW_ESSID_MAX_SIZE; | 868 | _iwr.u.essid.length = IW_ESSID_MAX_SIZE; |
863 | if ( !wioctl( SIOCGIWESSID ) ) | 869 | if ( !wioctl( SIOCGIWESSID ) ) |
864 | { | 870 | { |
865 | return "<unknown>"; | 871 | return "<unknown>"; |
866 | } | 872 | } |
867 | else | 873 | else |
868 | { | 874 | { |
875 | str[_iwr.u.essid.length] = '\0'; // some drivers don't zero-terminate the string | ||
869 | return str; | 876 | return str; |
870 | } | 877 | } |
871 | } | 878 | } |
872 | 879 | ||
873 | 880 | ||
874 | void OWirelessNetworkInterface::setSSID( const QString& ssid ) | 881 | void OWirelessNetworkInterface::setSSID( const QString& ssid ) |
875 | { | 882 | { |
876 | _iwr.u.essid.pointer = const_cast<char*>( (const char*) ssid ); | 883 | _iwr.u.essid.pointer = const_cast<char*>( (const char*) ssid ); |
877 | _iwr.u.essid.length = ssid.length()+1; // zero byte | 884 | _iwr.u.essid.length = ssid.length()+1; // zero byte |
878 | wioctl( SIOCSIWESSID ); | 885 | wioctl( SIOCSIWESSID ); |
879 | } | 886 | } |
880 | 887 | ||
881 | 888 | ||
882 | OStationList* OWirelessNetworkInterface::scanNetwork() | 889 | OStationList* OWirelessNetworkInterface::scanNetwork() |
883 | { | 890 | { |
884 | _iwr.u.param.flags = IW_SCAN_DEFAULT; | 891 | _iwr.u.param.flags = IW_SCAN_DEFAULT; |
885 | _iwr.u.param.value = 0; | 892 | _iwr.u.param.value = 0; |
886 | if ( !wioctl( SIOCSIWSCAN ) ) | 893 | if ( !wioctl( SIOCSIWSCAN ) ) |
887 | { | 894 | { |
888 | return 0; | 895 | return 0; |
889 | } | 896 | } |
890 | 897 | ||
891 | OStationList* stations = new OStationList(); | 898 | OStationList* stations = new OStationList(); |
892 | 899 | ||
893 | int timeout = 10000000; | 900 | int timeout = 10000000; |
894 | 901 | ||
895 | odebug << "ONetworkInterface::scanNetwork() - scan started." << oendl; | 902 | odebug << "ONetworkInterface::scanNetwork() - scan started." << oendl; |
896 | 903 | ||
897 | bool results = false; | 904 | bool results = false; |
898 | struct timeval tv; | 905 | struct timeval tv; |
899 | tv.tv_sec = 0; | 906 | tv.tv_sec = 0; |
900 | tv.tv_usec = 250000; // initial timeout ~ 250ms | 907 | tv.tv_usec = 250000; // initial timeout ~ 250ms |
901 | char buffer[IW_SCAN_MAX_DATA]; | 908 | char buffer[IW_SCAN_MAX_DATA]; |
902 | 909 | ||
903 | while ( !results && timeout > 0 ) | 910 | while ( !results && timeout > 0 ) |
904 | { | 911 | { |
905 | timeout -= tv.tv_usec; | 912 | timeout -= tv.tv_usec; |
906 | select( 0, 0, 0, 0, &tv ); | 913 | select( 0, 0, 0, 0, &tv ); |
907 | 914 | ||
908 | _iwr.u.data.pointer = &buffer[0]; | 915 | _iwr.u.data.pointer = &buffer[0]; |
909 | _iwr.u.data.flags = 0; | 916 | _iwr.u.data.flags = 0; |
910 | _iwr.u.data.length = sizeof buffer; | 917 | _iwr.u.data.length = sizeof buffer; |
911 | if ( wioctl( SIOCGIWSCAN ) ) | 918 | if ( wioctl( SIOCGIWSCAN ) ) |
912 | { | 919 | { |
913 | results = true; | 920 | results = true; |
914 | continue; | 921 | continue; |
915 | } | 922 | } |
916 | else if ( errno == EAGAIN) | 923 | else if ( errno == EAGAIN) |
diff --git a/libopie2/opienet/opienet.pro b/libopie2/opienet/opienet.pro index a10a949..460de0a 100644 --- a/libopie2/opienet/opienet.pro +++ b/libopie2/opienet/opienet.pro | |||
@@ -1,40 +1,40 @@ | |||
1 | TEMPLATE = lib | 1 | TEMPLATE = lib |
2 | CONFIG += qt warn_on | 2 | CONFIG += qt warn_on |
3 | DESTDIR = $(OPIEDIR)/lib | 3 | DESTDIR = $(OPIEDIR)/lib |
4 | HEADERS = 802_11_user.h \ | 4 | HEADERS = 802_11_user.h \ |
5 | dhcp.h \ | 5 | dhcp.h \ |
6 | udp_ports.h \ | 6 | udp_ports.h \ |
7 | odebugmapper.h \ | 7 | odebugmapper.h \ |
8 | omanufacturerdb.h \ | 8 | omanufacturerdb.h \ |
9 | onetutils.h \ | 9 | onetutils.h \ |
10 | onetwork.h \ | 10 | onetwork.h \ |
11 | opcap.h \ | 11 | opcap.h \ |
12 | ostation.h | 12 | ostation.h |
13 | SOURCES = odebugmapper.cpp \ | 13 | SOURCES = odebugmapper.cpp \ |
14 | omanufacturerdb.cpp \ | 14 | omanufacturerdb.cpp \ |
15 | onetutils.cpp \ | 15 | onetutils.cpp \ |
16 | onetwork.cpp \ | 16 | onetwork.cpp \ |
17 | opcap.cpp \ | 17 | opcap.cpp \ |
18 | ostation.cpp | 18 | ostation.cpp |
19 | INTERFACES = | 19 | INTERFACES = |
20 | TARGET = opienet2 | 20 | TARGET = opienet2 |
21 | VERSION = 1.8.5 | 21 | VERSION = 1.8.6 |
22 | INCLUDEPATH += $(OPIEDIR)/include | 22 | INCLUDEPATH += $(OPIEDIR)/include |
23 | DEPENDPATH += $(OPIEDIR)/include | 23 | DEPENDPATH += $(OPIEDIR)/include |
24 | LIBS += -lpcap | 24 | LIBS += -lpcap |
25 | 25 | ||
26 | 26 | ||
27 | !contains( platform, x11 ) { | 27 | !contains( platform, x11 ) { |
28 | include( $(OPIEDIR)/include.pro ) | 28 | include( $(OPIEDIR)/include.pro ) |
29 | } | 29 | } |
30 | 30 | ||
31 | contains( platform, x11 ) { | 31 | contains( platform, x11 ) { |
32 | LIBS += -L$(OPIEDIR)/lib -Wl,-rpath,$(OPIEDIR)/lib | 32 | LIBS += -L$(OPIEDIR)/lib -Wl,-rpath,$(OPIEDIR)/lib |
33 | } | 33 | } |
34 | 34 | ||
35 | !isEmpty( LIBPCAP_INC_DIR ) { | 35 | !isEmpty( LIBPCAP_INC_DIR ) { |
36 | INCLUDEPATH = $$LIBPCAP_INC_DIR $$INCLUDEPATH | 36 | INCLUDEPATH = $$LIBPCAP_INC_DIR $$INCLUDEPATH |
37 | } | 37 | } |
38 | !isEmpty( LIBPCAP_LIB_DIR ) { | 38 | !isEmpty( LIBPCAP_LIB_DIR ) { |
39 | LIBS = -L$$LIBPCAP_LIB_DIR $$LIBS | 39 | LIBS = -L$$LIBPCAP_LIB_DIR $$LIBS |
40 | } | 40 | } |