summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ChangeLog1
-rw-r--r--libopie2/opienet/omanufacturerdb.cpp17
-rw-r--r--libopie2/opienet/onetwork.cpp9
-rw-r--r--libopie2/opienet/opienet.pro2
4 files changed, 14 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index 63ed0c3..511c841 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,153 +1,154 @@
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)
74 * n.a. - PackageManager - provided default value for lists_dir when none is entered in configuration dialog (drw) 75 * n.a. - PackageManager - provided default value for lists_dir when none is entered in configuration dialog (drw)
75 * n.a. - OTabWidget - fixed scroll buttons, fix display position of tabs (drw) 76 * n.a. - OTabWidget - fixed scroll buttons, fix display position of tabs (drw)
76 * n.a. - AddressBook - fixed sorting by 'File As' name (drw) 77 * n.a. - AddressBook - fixed sorting by 'File As' name (drw)
77 * n.a. - AddressBook - fixed category handling for 'All' and 'Unfiled' (eilers) 78 * n.a. - AddressBook - fixed category handling for 'All' and 'Unfiled' (eilers)
78 * n.a. - AddressBook - fixed letter picker record selection and sort records afterwards (drw) 79 * n.a. - AddressBook - fixed letter picker record selection and sort records afterwards (drw)
79 80
80 Internal 81 Internal
81 -------- 82 --------
82 * Worked around bug in Qt/Embedded 2.3.10: qt_version() returns 231 (mickeyl) 83 * Worked around bug in Qt/Embedded 2.3.10: qt_version() returns 231 (mickeyl)
83 * Killed the need for weak symbols in QtE (zecke) 84 * Killed the need for weak symbols in QtE (zecke)
84 * Added optional building libqpe without inline images (mickeyl) 85 * Added optional building libqpe without inline images (mickeyl)
85 * OColorButton - fixed so does not emit a colorSelected signal inside of resizeEvent (drw) 86 * OColorButton - fixed so does not emit a colorSelected signal inside of resizeEvent (drw)
86 87
87 2005-02-03Opie 1.1.9 88 2005-02-03Opie 1.1.9
88 89
89 New Features 90 New Features
90 ------------ 91 ------------
91 * Number of icon columns in Launcher is customizable through Launcher.conf (hrw,zecke,mickeyl) 92 * Number of icon columns in Launcher is customizable through Launcher.conf (hrw,zecke,mickeyl)
92 * Number of icon columns in Launcher is customizable through LauncherSettings (mickeyl) 93 * Number of icon columns in Launcher is customizable through LauncherSettings (mickeyl)
93 * Usability enhancements in OpieIRC (skyhusker) 94 * Usability enhancements in OpieIRC (skyhusker)
94 95
95 Fixed Bugs 96 Fixed Bugs
96 ---------- 97 ----------
97 * #1501 - Fixed bug in todo sql backend (eilers) 98 * #1501 - Fixed bug in todo sql backend (eilers)
98 * #1505 - Added more Swap sizes in memoryapplet (mickeyl) 99 * #1505 - Added more Swap sizes in memoryapplet (mickeyl)
99 * #1525 - Hopefully fixed double alarms and not removing alarms set with the Clock application (zecke) 100 * #1525 - Hopefully fixed double alarms and not removing alarms set with the Clock application (zecke)
100 * #1533 - Security Owner Dialog (shown in case of unsuccessfull authentiacation) wasn't able to display information in non latin1 encoding (zecke) 101 * #1533 - Security Owner Dialog (shown in case of unsuccessfull authentiacation) wasn't able to display information in non latin1 encoding (zecke)
101 * n.a. - Removed hard coded font sizes in a couple of inputmethods (mickeyl) 102 * n.a. - Removed hard coded font sizes in a couple of inputmethods (mickeyl)
102 * n.a. - Removed MediumDlg appearing prior to FirstUsage wizard (i.e. calibration) (mickeyl) 103 * n.a. - Removed MediumDlg appearing prior to FirstUsage wizard (i.e. calibration) (mickeyl)
103 * n.a. - Fixed numerous buglets in OpieIRC (skyhusker) 104 * n.a. - Fixed numerous buglets in OpieIRC (skyhusker)
104 105
105 Internal 106 Internal
106 -------- 107 --------
107 * Added the Qtopia 1.7 SDK macros for quick-apps to easa compilation of 3rd party apps against our headers (mickeyl) 108 * Added the Qtopia 1.7 SDK macros for quick-apps to easa compilation of 3rd party apps against our headers (mickeyl)
108 * You can now use the Opie build system in combination with a OpenEmbedded staging area which makes a nice cross development environment (mickeyl) 109 * You can now use the Opie build system in combination with a OpenEmbedded staging area which makes a nice cross development environment (mickeyl)
109 * Made Opie compilable with Qt/Embedded 2.3.10 (ar) 110 * Made Opie compilable with Qt/Embedded 2.3.10 (ar)
110 * Changed Launcher to get default orientation from ODevice w/ QWS_DISPLAY overriding (mickeyl) 111 * Changed Launcher to get default orientation from ODevice w/ QWS_DISPLAY overriding (mickeyl)
111 * Build tree cleanups (mickeyl) 112 * Build tree cleanups (mickeyl)
112 113
113 2004-11-26Opie 1.1.8 114 2004-11-26Opie 1.1.8
114 115
115 New Features 116 New Features
116 ------------ 117 ------------
117 * PackageManager supports installation of local ipkg files (drw) 118 * PackageManager supports installation of local ipkg files (drw)
118 * PackageManager supports linking of applications to root (drw) 119 * PackageManager supports linking of applications to root (drw)
119 * PackageManager supports src/gz feeds (drw,wimpie) 120 * PackageManager supports src/gz feeds (drw,wimpie)
120 * Added a syslog information tab to sysinfo (mickeyl) 121 * Added a syslog information tab to sysinfo (mickeyl)
121 * Added new, more consistent, PIM icons + a GIMP teplate (ar) 122 * Added new, more consistent, PIM icons + a GIMP teplate (ar)
122 123
123 Fixed Bugs 124 Fixed Bugs
124 ---------- 125 ----------
125 * #1017 - Tetrix doesn't display correctly for high resolution screens (drw) 126 * #1017 - Tetrix doesn't display correctly for high resolution screens (drw)
126 * #1269 - VCards were imported into personal area if it was activated (eilers) 127 * #1269 - VCards were imported into personal area if it was activated (eilers)
127 * #1464 - Packagemanager dont set active filter after install a package (drw) 128 * #1464 - Packagemanager dont set active filter after install a package (drw)
128 * #1479 - Improved VCard-Parser to import VCards created by Evolution 2 and Apple Addressbook (eilers) 129 * #1479 - Improved VCard-Parser to import VCards created by Evolution 2 and Apple Addressbook (eilers)
129 * #1493 - Fixed one column layout bug of the launcher (hrw) 130 * #1493 - Fixed one column layout bug of the launcher (hrw)
130 * n.a. - PackageManager - (Minor UI tweak) in filter dialog, when option is enabled, set focus to widget that corresponds to that option (drw) 131 * n.a. - PackageManager - (Minor UI tweak) in filter dialog, when option is enabled, set focus to widget that corresponds to that option (drw)
131 * n.a. - PackageManager - (Minor UI tweak) fix double entry in source feed configuration when adding a new feed (drw) 132 * n.a. - PackageManager - (Minor UI tweak) fix double entry in source feed configuration when adding a new feed (drw)
132 * n.a. - Battery Applet - fix sizing of battery info popup (drw,mickeyl) 133 * n.a. - Battery Applet - fix sizing of battery info popup (drw,mickeyl)
133 134
134 Internal 135 Internal
135 -------- 136 --------
136 * Moved libopie1 to unsupported (mickeyl) 137 * Moved libopie1 to unsupported (mickeyl)
137 * Implemented generic queryByExample() with incremental searching. A lot of internal changes of the Pim2-library (eilers) 138 * Implemented generic queryByExample() with incremental searching. A lot of internal changes of the Pim2-library (eilers)
138 * Added fast and full featured and incremental sorted() for SQL addressbook backend (eilers) 139 * Added fast and full featured and incremental sorted() for SQL addressbook backend (eilers)
139 140
140 2004-11-14Opie 1.1.7 141 2004-11-14Opie 1.1.7
141 142
142 New Features 143 New Features
143 ------------ 144 ------------
144 * libOpieDB now uses SQLite V3 instead V2. Remember to upgrade your database files! (eilers) 145 * libOpieDB now uses SQLite V3 instead V2. Remember to upgrade your database files! (eilers)
145 * Backup now uses the busy indicator when backing up and restore (ar) 146 * Backup now uses the busy indicator when backing up and restore (ar)
146 * OpiePlayer2 gained adding of Directories to the playlist (zecke) 147 * OpiePlayer2 gained adding of Directories to the playlist (zecke)
147 * OpiePlayer2 better error handling (zecke) 148 * OpiePlayer2 better error handling (zecke)
148 * OpiePlayer2 progress indication while streaming (zecke) 149 * OpiePlayer2 progress indication while streaming (zecke)
149 * OpiePlayer2 ported to use libxine 1.0.0-rc6a (brad,zecke) 150 * OpiePlayer2 ported to use libxine 1.0.0-rc6a (brad,zecke)
150 * Ported brightnessapplet from Qtopia 1.7 (mickeyl) 151 * Ported brightnessapplet from Qtopia 1.7 (mickeyl)
151 * Opie-Eye got a Digital Camera File Backend (alwin,zecke) 152 * Opie-Eye got a Digital Camera File Backend (alwin,zecke)
152 * Support for Tuxpad1 of Tradesquare.NL (mickeyl,zecke) 153 * Support for Tuxpad1 of Tradesquare.NL (mickeyl,zecke)
153 * Opie-Console use Custom Font and Size in a Profile (harlekin) 154 * Opie-Console use Custom Font and Size in a Profile (harlekin)
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
47using namespace Opie::Core; 45using namespace Opie::Core;
48namespace Opie { 46namespace Opie {
49namespace Net { 47namespace Net {
50 48
51OManufacturerDB* OManufacturerDB::_instance = 0; 49OManufacturerDB* OManufacturerDB::_instance = 0;
52 50
53OManufacturerDB* OManufacturerDB::instance() 51OManufacturerDB* 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
64OManufacturerDB::OManufacturerDB() 62OManufacturerDB::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
124OManufacturerDB::~OManufacturerDB() 115OManufacturerDB::~OManufacturerDB()
125{ 116{
126} 117}
127 118
128 119
129const QString& OManufacturerDB::lookup( const QString& macaddr ) const 120const 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
135const QString& OManufacturerDB::lookupExt( const QString& macaddr ) const 126const 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
@@ -1,234 +1,240 @@
1/* 1/*
2                 This file is part of the Opie Project 2                 This file is part of the Opie Project
3              Copyright (C) 2003-2005 by Michael 'Mickey' Lauer <mickey@Vanille.de> 3              Copyright (C) 2003-2005 by Michael 'Mickey' Lauer <mickey@Vanille.de>
4 =. 4 =.
5 .=l. 5 .=l.
6           .>+-= 6           .>+-=
7 _;:,     .>    :=|. This program is free software; you can 7 _;:,     .>    :=|. This program is free software; you can
8.> <`_,   >  .   <= redistribute it and/or modify it under 8.> <`_,   >  .   <= redistribute it and/or modify it under
9:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 9:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
10.="- .-=="i,     .._ License as published by the Free Software 10.="- .-=="i,     .._ License as published by the Free Software
11 - .   .-<_>     .<> Foundation; version 2 of the License. 11 - .   .-<_>     .<> Foundation; version 2 of the License.
12     ._= =}       : 12     ._= =}       :
13    .%`+i>       _;_. 13    .%`+i>       _;_.
14    .i_,=:_.      -<s. This program is distributed in the hope that 14    .i_,=:_.      -<s. This program is distributed in the hope that
15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
16    : ..    .:,     . . . without even the implied warranty of 16    : ..    .:,     . . . without even the implied warranty of
17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.=       =       ; Library General Public License for more 19..}^=.=       =       ; Library General Public License for more
20++=   -.     .`     .: details. 20++=   -.     .`     .: details.
21 :     =  ...= . :.=- 21 :     =  ...= . :.=-
22 -.   .:....=;==+<; You should have received a copy of the GNU 22 -.   .:....=;==+<; You should have received a copy of the GNU
23  -_. . .   )=.  = Library General Public License along with 23  -_. . .   )=.  = Library General Public License along with
24    --        :-=` this library; see the file COPYING.LIB. 24    --        :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation, 25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330, 26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA. 27 Boston, MA 02111-1307, USA.
28 28
29*/ 29*/
30 30
31/* OPIE */ 31/* OPIE */
32 32
33#include <opie2/onetwork.h> 33#include <opie2/onetwork.h>
34#include <opie2/ostation.h> 34#include <opie2/ostation.h>
35#include <opie2/odebug.h> 35#include <opie2/odebug.h>
36 36
37/* QT */ 37/* QT */
38 38
39#include <qfile.h> 39#include <qfile.h>
40#include <qtextstream.h> 40#include <qtextstream.h>
41#include <qapplication.h> 41#include <qapplication.h>
42 42
43/* UNIX */ 43/* UNIX */
44 44
45#include <assert.h> 45#include <assert.h>
46#include <arpa/inet.h> 46#include <arpa/inet.h>
47#include <errno.h> 47#include <errno.h>
48#include <string.h> 48#include <string.h>
49#include <stdlib.h> 49#include <stdlib.h>
50#include <math.h> 50#include <math.h>
51#include <sys/ioctl.h> 51#include <sys/ioctl.h>
52#include <sys/socket.h> 52#include <sys/socket.h>
53#include <sys/types.h> 53#include <sys/types.h>
54#include <unistd.h> 54#include <unistd.h>
55#include <linux/sockios.h> 55#include <linux/sockios.h>
56#include <net/if_arp.h> 56#include <net/if_arp.h>
57#include <net/ethernet.h> 57#include <net/ethernet.h>
58#include <stdarg.h> 58#include <stdarg.h>
59 59
60#ifndef NODEBUG 60#ifndef NODEBUG
61#include <opie2/odebugmapper.h> 61#include <opie2/odebugmapper.h>
62 62
63using namespace Opie::Core; 63using namespace Opie::Core;
64using namespace Opie::Net::Internal; 64using namespace Opie::Net::Internal;
65DebugMapper* debugmapper = new DebugMapper(); 65DebugMapper* debugmapper = new DebugMapper();
66#endif 66#endif
67 67
68/*====================================================================================== 68/*======================================================================================
69 * ONetwork 69 * ONetwork
70 *======================================================================================*/ 70 *======================================================================================*/
71 71
72namespace Opie { 72namespace Opie {
73namespace Net { 73namespace Net {
74ONetwork* ONetwork::_instance = 0; 74ONetwork* ONetwork::_instance = 0;
75 75
76ONetwork::ONetwork() 76ONetwork::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
83void ONetwork::synchronize() 83void 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
123short ONetwork::wirelessExtensionCompileVersion() 129short ONetwork::wirelessExtensionCompileVersion()
124{ 130{
125 return WIRELESS_EXT; 131 return WIRELESS_EXT;
126} 132}
127 133
128 134
129int ONetwork::count() const 135int ONetwork::count() const
130{ 136{
131 return _interfaces.count(); 137 return _interfaces.count();
132} 138}
133 139
134 140
135ONetworkInterface* ONetwork::interface( const QString& iface ) const 141ONetworkInterface* ONetwork::interface( const QString& iface ) const
136{ 142{
137 return _interfaces[iface]; 143 return _interfaces[iface];
138} 144}
139 145
140 146
141ONetwork* ONetwork::instance() 147ONetwork* 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
148ONetwork::InterfaceIterator ONetwork::iterator() const 154ONetwork::InterfaceIterator ONetwork::iterator() const
149{ 155{
150 return ONetwork::InterfaceIterator( _interfaces ); 156 return ONetwork::InterfaceIterator( _interfaces );
151} 157}
152 158
153 159
154bool ONetwork::isPresent( const char* name ) const 160bool ONetwork::isPresent( const char* name ) const
155{ 161{
156 int sfd = socket( AF_INET, SOCK_STREAM, 0 ); 162 int sfd = socket( AF_INET, SOCK_STREAM, 0 );
157 struct ifreq ifr; 163 struct ifreq ifr;
158 memset( &ifr, 0, sizeof( struct ifreq ) ); 164 memset( &ifr, 0, sizeof( struct ifreq ) );
159 strcpy( (char*) &ifr.ifr_name, name ); 165 strcpy( (char*) &ifr.ifr_name, name );
160 int result = ::ioctl( sfd, SIOCGIFFLAGS, &ifr ); 166 int result = ::ioctl( sfd, SIOCGIFFLAGS, &ifr );
161 return result != -1; 167 return result != -1;
162} 168}
163 169
164 170
165bool ONetwork::isWirelessInterface( const char* name ) const 171bool ONetwork::isWirelessInterface( const char* name ) const
166{ 172{
167 int sfd = socket( AF_INET, SOCK_STREAM, 0 ); 173 int sfd = socket( AF_INET, SOCK_STREAM, 0 );
168 struct iwreq iwr; 174 struct iwreq iwr;
169 memset( &iwr, 0, sizeof( struct iwreq ) ); 175 memset( &iwr, 0, sizeof( struct iwreq ) );
170 strcpy( (char*) &iwr.ifr_name, name ); 176 strcpy( (char*) &iwr.ifr_name, name );
171 int result = ::ioctl( sfd, SIOCGIWNAME, &iwr ); 177 int result = ::ioctl( sfd, SIOCGIWNAME, &iwr );
172 return result != -1; 178 return result != -1;
173} 179}
174 180
175/*====================================================================================== 181/*======================================================================================
176 * ONetworkInterface 182 * ONetworkInterface
177 *======================================================================================*/ 183 *======================================================================================*/
178 184
179ONetworkInterface::ONetworkInterface( QObject* parent, const char* name ) 185ONetworkInterface::ONetworkInterface( QObject* parent, const char* name )
180 :QObject( parent, name ), 186 :QObject( parent, name ),
181 _sfd( socket( AF_INET, SOCK_DGRAM, 0 ) ), _mon( 0 ) 187 _sfd( socket( AF_INET, SOCK_DGRAM, 0 ) ), _mon( 0 )
182{ 188{
183 odebug << "ONetworkInterface::ONetworkInterface()" << oendl; 189 odebug << "ONetworkInterface::ONetworkInterface()" << oendl;
184 init(); 190 init();
185} 191}
186 192
187 193
188struct ifreq& ONetworkInterface::ifr() const 194struct ifreq& ONetworkInterface::ifr() const
189{ 195{
190 return _ifr; 196 return _ifr;
191} 197}
192 198
193 199
194void ONetworkInterface::init() 200void ONetworkInterface::init()
195{ 201{
196 odebug << "ONetworkInterface::init()" << oendl; 202 odebug << "ONetworkInterface::init()" << oendl;
197 203
198 memset( &_ifr, 0, sizeof( struct ifreq ) ); 204 memset( &_ifr, 0, sizeof( struct ifreq ) );
199 205
200 if ( _sfd == -1 ) 206 if ( _sfd == -1 )
201 { 207 {
202 odebug << "ONetworkInterface::init(): Warning - can't get socket for device '" << name() << "'" << oendl; 208 odebug << "ONetworkInterface::init(): Warning - can't get socket for device '" << name() << "'" << oendl;
203 return; 209 return;
204 } 210 }
205} 211}
206 212
207 213
208bool ONetworkInterface::ioctl( int call, struct ifreq& ifreq ) const 214bool ONetworkInterface::ioctl( int call, struct ifreq& ifreq ) const
209{ 215{
210 #ifndef NODEBUG 216 #ifndef NODEBUG
211 int result = ::ioctl( _sfd, call, &ifreq ); 217 int result = ::ioctl( _sfd, call, &ifreq );
212 if ( result == -1 ) 218 if ( result == -1 )
213 odebug << "ONetworkInterface::ioctl (" << name() << ") call '" << debugmapper->map( call ) 219 odebug << "ONetworkInterface::ioctl (" << name() << ") call '" << debugmapper->map( call )
214 << "' FAILED! " << result << " (" << strerror( errno ) << ")" << oendl; 220 << "' FAILED! " << result << " (" << strerror( errno ) << ")" << oendl;
215 else 221 else
216 odebug << "ONetworkInterface::ioctl (" << name() << ") call '" << debugmapper->map( call ) 222 odebug << "ONetworkInterface::ioctl (" << name() << ") call '" << debugmapper->map( call )
217 << "' - Status: Ok." << oendl; 223 << "' - Status: Ok." << oendl;
218 return ( result != -1 ); 224 return ( result != -1 );
219 #else 225 #else
220 return ::ioctl( _sfd, call, &ifreq ) != -1; 226 return ::ioctl( _sfd, call, &ifreq ) != -1;
221 #endif 227 #endif
222} 228}
223 229
224 230
225bool ONetworkInterface::ioctl( int call ) const 231bool ONetworkInterface::ioctl( int call ) const
226{ 232{
227 strcpy( _ifr.ifr_name, name() ); 233 strcpy( _ifr.ifr_name, name() );
228 return ioctl( call, _ifr ); 234 return ioctl( call, _ifr );
229} 235}
230 236
231 237
232bool ONetworkInterface::isLoopback() const 238bool ONetworkInterface::isLoopback() const
233{ 239{
234 ioctl( SIOCGIFFLAGS ); 240 ioctl( SIOCGIFFLAGS );
@@ -683,314 +689,315 @@ double OWirelessNetworkInterface::frequency() const
683 return double( _iwr.u.freq.m ) * pow( 10.0, _iwr.u.freq.e ) / 1000000000.0; 689 return double( _iwr.u.freq.m ) * pow( 10.0, _iwr.u.freq.e ) / 1000000000.0;
684 } 690 }
685} 691}
686 692
687 693
688int OWirelessNetworkInterface::channels() const 694int OWirelessNetworkInterface::channels() const
689{ 695{
690 return _channels.count(); 696 return _channels.count();
691} 697}
692 698
693 699
694void OWirelessNetworkInterface::setChannelHopping( int interval ) 700void OWirelessNetworkInterface::setChannelHopping( int interval )
695{ 701{
696 if ( !_hopper ) _hopper = new OChannelHopper( this ); 702 if ( !_hopper ) _hopper = new OChannelHopper( this );
697 _hopper->setInterval( interval ); 703 _hopper->setInterval( interval );
698 //FIXME: When and by whom will the channel hopper be deleted? 704 //FIXME: When and by whom will the channel hopper be deleted?
699 //TODO: rely on QObject hierarchy 705 //TODO: rely on QObject hierarchy
700} 706}
701 707
702 708
703int OWirelessNetworkInterface::channelHopping() const 709int OWirelessNetworkInterface::channelHopping() const
704{ 710{
705 return _hopper->interval(); 711 return _hopper->interval();
706} 712}
707 713
708 714
709OChannelHopper* OWirelessNetworkInterface::channelHopper() const 715OChannelHopper* OWirelessNetworkInterface::channelHopper() const
710{ 716{
711 return _hopper; 717 return _hopper;
712} 718}
713 719
714 720
715void OWirelessNetworkInterface::commit() const 721void OWirelessNetworkInterface::commit() const
716{ 722{
717 wioctl( SIOCSIWCOMMIT ); 723 wioctl( SIOCSIWCOMMIT );
718} 724}
719 725
720 726
721void OWirelessNetworkInterface::setMode( const QString& newMode ) 727void OWirelessNetworkInterface::setMode( const QString& newMode )
722{ 728{
723 #ifdef FINALIZE 729 #ifdef FINALIZE
724 QString currentMode = mode(); 730 QString currentMode = mode();
725 if ( currentMode == newMode ) return; 731 if ( currentMode == newMode ) return;
726 #endif 732 #endif
727 733
728 odebug << "OWirelessNetworkInterface::setMode(): trying to set mode " << newMode << oendl; 734 odebug << "OWirelessNetworkInterface::setMode(): trying to set mode " << newMode << oendl;
729 735
730 _iwr.u.mode = stringToMode( newMode ); 736 _iwr.u.mode = stringToMode( newMode );
731 737
732 if ( _iwr.u.mode != IW_MODE_MONITOR ) 738 if ( _iwr.u.mode != IW_MODE_MONITOR )
733 { 739 {
734 // IWR.U.MODE WIRD DURCH ABFRAGE DES MODE HIER PLATTGEMACHT!!!!!!!!!!!!!!!!!!!!! DEPP! 740 // IWR.U.MODE WIRD DURCH ABFRAGE DES MODE HIER PLATTGEMACHT!!!!!!!!!!!!!!!!!!!!! DEPP!
735 _iwr.u.mode = stringToMode( newMode ); 741 _iwr.u.mode = stringToMode( newMode );
736 wioctl( SIOCSIWMODE ); 742 wioctl( SIOCSIWMODE );
737 743
738 // special iwpriv fallback for monitor mode (check if we're really out of monitor mode now) 744 // special iwpriv fallback for monitor mode (check if we're really out of monitor mode now)
739 745
740 if ( mode() == "monitor" ) 746 if ( mode() == "monitor" )
741 { 747 {
742 odebug << "OWirelessNetworkInterface::setMode(): SIOCSIWMODE not sufficient - trying fallback to iwpriv..." << oendl; 748 odebug << "OWirelessNetworkInterface::setMode(): SIOCSIWMODE not sufficient - trying fallback to iwpriv..." << oendl;
743 if ( _mon ) 749 if ( _mon )
744 _mon->setEnabled( false ); 750 _mon->setEnabled( false );
745 else 751 else
746 odebug << "ONetwork(): can't switch monitor mode without installed monitoring interface" << oendl; 752 odebug << "ONetwork(): can't switch monitor mode without installed monitoring interface" << oendl;
747 } 753 }
748 754
749 } 755 }
750 else // special iwpriv fallback for monitor mode 756 else // special iwpriv fallback for monitor mode
751 { 757 {
752 if ( wioctl( SIOCSIWMODE ) ) 758 if ( wioctl( SIOCSIWMODE ) )
753 { 759 {
754 odebug << "OWirelessNetworkInterface::setMode(): IW_MODE_MONITOR ok" << oendl; 760 odebug << "OWirelessNetworkInterface::setMode(): IW_MODE_MONITOR ok" << oendl;
755 } 761 }
756 else 762 else
757 { 763 {
758 odebug << "OWirelessNetworkInterface::setMode(): SIOCSIWMODE not working - trying fallback to iwpriv..." << oendl; 764 odebug << "OWirelessNetworkInterface::setMode(): SIOCSIWMODE not working - trying fallback to iwpriv..." << oendl;
759 765
760 if ( _mon ) 766 if ( _mon )
761 _mon->setEnabled( true ); 767 _mon->setEnabled( true );
762 else 768 else
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
769QString OWirelessNetworkInterface::mode() const 775QString 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
792void OWirelessNetworkInterface::setNickName( const QString& nickname ) 798void 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
800QString OWirelessNetworkInterface::nickName() const 806QString 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
817void OWirelessNetworkInterface::setPrivate( const QString& call, int numargs, ... ) 823void 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
846void OWirelessNetworkInterface::getPrivate( const QString& ) 852void 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
852bool OWirelessNetworkInterface::hasPrivate( const QString& call ) 858bool OWirelessNetworkInterface::hasPrivate( const QString& call )
853{ 859{
854 return child( call.local8Bit() ); 860 return child( call.local8Bit() );
855} 861}
856 862
857 863
858QString OWirelessNetworkInterface::SSID() const 864QString 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
874void OWirelessNetworkInterface::setSSID( const QString& ssid ) 881void 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
882OStationList* OWirelessNetworkInterface::scanNetwork() 889OStationList* 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)
917 { 924 {
918 odebug << "ONetworkInterface::scanNetwork() - scan in progress..." << oendl; 925 odebug << "ONetworkInterface::scanNetwork() - scan in progress..." << oendl;
919 if ( qApp ) 926 if ( qApp )
920 { 927 {
921 qApp->processEvents( 100 ); 928 qApp->processEvents( 100 );
922 continue; 929 continue;
923 } 930 }
924 tv.tv_sec = 0; 931 tv.tv_sec = 0;
925 tv.tv_usec = 100000; 932 tv.tv_usec = 100000;
926 continue; 933 continue;
927 } 934 }
928 } 935 }
929 936
930 odebug << "ONetworkInterface::scanNetwork() - scan finished." << oendl; 937 odebug << "ONetworkInterface::scanNetwork() - scan finished." << oendl;
931 938
932 if ( results ) 939 if ( results )
933 { 940 {
934 odebug << " - result length = " << _iwr.u.data.length << oendl; 941 odebug << " - result length = " << _iwr.u.data.length << oendl;
935 if ( !_iwr.u.data.length ) 942 if ( !_iwr.u.data.length )
936 { 943 {
937 odebug << " - no results (empty neighbourhood)" << oendl; 944 odebug << " - no results (empty neighbourhood)" << oendl;
938 return stations; 945 return stations;
939 } 946 }
940 947
941 odebug << " - results are in!" << oendl; 948 odebug << " - results are in!" << oendl;
942 dumpBytes( (const unsigned char*) &buffer[0], _iwr.u.data.length ); 949 dumpBytes( (const unsigned char*) &buffer[0], _iwr.u.data.length );
943 950
944 // parse results 951 // parse results
945 struct iw_event iwe; 952 struct iw_event iwe;
946 struct iw_stream_descr stream; 953 struct iw_stream_descr stream;
947 unsigned int cmd_index, event_type, event_len; 954 unsigned int cmd_index, event_type, event_len;
948 char *pointer; 955 char *pointer;
949 956
950 const char standard_ioctl_hdr[] = { 957 const char standard_ioctl_hdr[] = {
951 IW_HEADER_TYPE_NULL, /* SIOCSIWCOMMIT */ 958 IW_HEADER_TYPE_NULL, /* SIOCSIWCOMMIT */
952 IW_HEADER_TYPE_CHAR, /* SIOCGIWNAME */ 959 IW_HEADER_TYPE_CHAR, /* SIOCGIWNAME */
953 IW_HEADER_TYPE_PARAM, /* SIOCSIWNWID */ 960 IW_HEADER_TYPE_PARAM, /* SIOCSIWNWID */
954 IW_HEADER_TYPE_PARAM, /* SIOCGIWNWID */ 961 IW_HEADER_TYPE_PARAM, /* SIOCGIWNWID */
955 IW_HEADER_TYPE_FREQ, /* SIOCSIWFREQ */ 962 IW_HEADER_TYPE_FREQ, /* SIOCSIWFREQ */
956 IW_HEADER_TYPE_FREQ, /* SIOCGIWFREQ */ 963 IW_HEADER_TYPE_FREQ, /* SIOCGIWFREQ */
957 IW_HEADER_TYPE_UINT, /* SIOCSIWMODE */ 964 IW_HEADER_TYPE_UINT, /* SIOCSIWMODE */
958 IW_HEADER_TYPE_UINT, /* SIOCGIWMODE */ 965 IW_HEADER_TYPE_UINT, /* SIOCGIWMODE */
959 IW_HEADER_TYPE_PARAM, /* SIOCSIWSENS */ 966 IW_HEADER_TYPE_PARAM, /* SIOCSIWSENS */
960 IW_HEADER_TYPE_PARAM, /* SIOCGIWSENS */ 967 IW_HEADER_TYPE_PARAM, /* SIOCGIWSENS */
961 IW_HEADER_TYPE_NULL, /* SIOCSIWRANGE */ 968 IW_HEADER_TYPE_NULL, /* SIOCSIWRANGE */
962 IW_HEADER_TYPE_POINT, /* SIOCGIWRANGE */ 969 IW_HEADER_TYPE_POINT, /* SIOCGIWRANGE */
963 IW_HEADER_TYPE_NULL, /* SIOCSIWPRIV */ 970 IW_HEADER_TYPE_NULL, /* SIOCSIWPRIV */
964 IW_HEADER_TYPE_POINT, /* SIOCGIWPRIV */ 971 IW_HEADER_TYPE_POINT, /* SIOCGIWPRIV */
965 IW_HEADER_TYPE_NULL, /* SIOCSIWSTATS */ 972 IW_HEADER_TYPE_NULL, /* SIOCSIWSTATS */
966 IW_HEADER_TYPE_POINT, /* SIOCGIWSTATS */ 973 IW_HEADER_TYPE_POINT, /* SIOCGIWSTATS */
967 IW_HEADER_TYPE_POINT, /* SIOCSIWSPY */ 974 IW_HEADER_TYPE_POINT, /* SIOCSIWSPY */
968 IW_HEADER_TYPE_POINT, /* SIOCGIWSPY */ 975 IW_HEADER_TYPE_POINT, /* SIOCGIWSPY */
969 IW_HEADER_TYPE_POINT, /* SIOCSIWTHRSPY */ 976 IW_HEADER_TYPE_POINT, /* SIOCSIWTHRSPY */
970 IW_HEADER_TYPE_POINT, /* SIOCGIWTHRSPY */ 977 IW_HEADER_TYPE_POINT, /* SIOCGIWTHRSPY */
971 IW_HEADER_TYPE_ADDR, /* SIOCSIWAP */ 978 IW_HEADER_TYPE_ADDR, /* SIOCSIWAP */
972 IW_HEADER_TYPE_ADDR, /* SIOCGIWAP */ 979 IW_HEADER_TYPE_ADDR, /* SIOCGIWAP */
973 IW_HEADER_TYPE_NULL, /* -- hole -- */ 980 IW_HEADER_TYPE_NULL, /* -- hole -- */
974 IW_HEADER_TYPE_POINT, /* SIOCGIWAPLIST */ 981 IW_HEADER_TYPE_POINT, /* SIOCGIWAPLIST */
975 IW_HEADER_TYPE_PARAM, /* SIOCSIWSCAN */ 982 IW_HEADER_TYPE_PARAM, /* SIOCSIWSCAN */
976 IW_HEADER_TYPE_POINT, /* SIOCGIWSCAN */ 983 IW_HEADER_TYPE_POINT, /* SIOCGIWSCAN */
977 IW_HEADER_TYPE_POINT, /* SIOCSIWESSID */ 984 IW_HEADER_TYPE_POINT, /* SIOCSIWESSID */
978 IW_HEADER_TYPE_POINT, /* SIOCGIWESSID */ 985 IW_HEADER_TYPE_POINT, /* SIOCGIWESSID */
979 IW_HEADER_TYPE_POINT, /* SIOCSIWNICKN */ 986 IW_HEADER_TYPE_POINT, /* SIOCSIWNICKN */
980 IW_HEADER_TYPE_POINT, /* SIOCGIWNICKN */ 987 IW_HEADER_TYPE_POINT, /* SIOCGIWNICKN */
981 IW_HEADER_TYPE_NULL, /* -- hole -- */ 988 IW_HEADER_TYPE_NULL, /* -- hole -- */
982 IW_HEADER_TYPE_NULL, /* -- hole -- */ 989 IW_HEADER_TYPE_NULL, /* -- hole -- */
983 IW_HEADER_TYPE_PARAM, /* SIOCSIWRATE */ 990 IW_HEADER_TYPE_PARAM, /* SIOCSIWRATE */
984 IW_HEADER_TYPE_PARAM, /* SIOCGIWRATE */ 991 IW_HEADER_TYPE_PARAM, /* SIOCGIWRATE */
985 IW_HEADER_TYPE_PARAM, /* SIOCSIWRTS */ 992 IW_HEADER_TYPE_PARAM, /* SIOCSIWRTS */
986 IW_HEADER_TYPE_PARAM, /* SIOCGIWRTS */ 993 IW_HEADER_TYPE_PARAM, /* SIOCGIWRTS */
987 IW_HEADER_TYPE_PARAM, /* SIOCSIWFRAG */ 994 IW_HEADER_TYPE_PARAM, /* SIOCSIWFRAG */
988 IW_HEADER_TYPE_PARAM, /* SIOCGIWFRAG */ 995 IW_HEADER_TYPE_PARAM, /* SIOCGIWFRAG */
989 IW_HEADER_TYPE_PARAM, /* SIOCSIWTXPOW */ 996 IW_HEADER_TYPE_PARAM, /* SIOCSIWTXPOW */
990 IW_HEADER_TYPE_PARAM, /* SIOCGIWTXPOW */ 997 IW_HEADER_TYPE_PARAM, /* SIOCGIWTXPOW */
991 IW_HEADER_TYPE_PARAM, /* SIOCSIWRETRY */ 998 IW_HEADER_TYPE_PARAM, /* SIOCSIWRETRY */
992 IW_HEADER_TYPE_PARAM, /* SIOCGIWRETRY */ 999 IW_HEADER_TYPE_PARAM, /* SIOCGIWRETRY */
993 IW_HEADER_TYPE_POINT, /* SIOCSIWENCODE */ 1000 IW_HEADER_TYPE_POINT, /* SIOCSIWENCODE */
994 IW_HEADER_TYPE_POINT, /* SIOCGIWENCODE */ 1001 IW_HEADER_TYPE_POINT, /* SIOCGIWENCODE */
995 IW_HEADER_TYPE_PARAM, /* SIOCSIWPOWER */ 1002 IW_HEADER_TYPE_PARAM, /* SIOCSIWPOWER */
996 IW_HEADER_TYPE_PARAM, /* SIOCGIWPOWER */ 1003 IW_HEADER_TYPE_PARAM, /* SIOCGIWPOWER */
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 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on 2CONFIG += qt warn_on
3DESTDIR = $(OPIEDIR)/lib 3DESTDIR = $(OPIEDIR)/lib
4HEADERS = 802_11_user.h \ 4HEADERS = 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
13SOURCES = odebugmapper.cpp \ 13SOURCES = 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
19INTERFACES = 19INTERFACES =
20TARGET = opienet2 20TARGET = opienet2
21VERSION = 1.8.5 21VERSION = 1.8.6
22INCLUDEPATH += $(OPIEDIR)/include 22INCLUDEPATH += $(OPIEDIR)/include
23DEPENDPATH += $(OPIEDIR)/include 23DEPENDPATH += $(OPIEDIR)/include
24LIBS += -lpcap 24LIBS += -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
31contains( platform, x11 ) { 31contains( 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}