-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,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 | ||
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 | |||
@@ -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 | ||
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 |
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 | ||
165 | bool ONetwork::isWirelessInterface( const char* name ) const | 171 | bool 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 | ||
179 | ONetworkInterface::ONetworkInterface( QObject* parent, const char* name ) | 185 | ONetworkInterface::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 | ||
188 | struct ifreq& ONetworkInterface::ifr() const | 194 | struct ifreq& ONetworkInterface::ifr() const |
189 | { | 195 | { |
190 | return _ifr; | 196 | return _ifr; |
191 | } | 197 | } |
192 | 198 | ||
193 | 199 | ||
194 | void ONetworkInterface::init() | 200 | void 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 | ||
208 | bool ONetworkInterface::ioctl( int call, struct ifreq& ifreq ) const | 214 | bool 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 | ||
225 | bool ONetworkInterface::ioctl( int call ) const | 231 | bool 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 | ||
232 | bool ONetworkInterface::isLoopback() const | 238 | bool 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 | ||
688 | int OWirelessNetworkInterface::channels() const | 694 | int OWirelessNetworkInterface::channels() const |
689 | { | 695 | { |
690 | return _channels.count(); | 696 | return _channels.count(); |
691 | } | 697 | } |
692 | 698 | ||
693 | 699 | ||
694 | void OWirelessNetworkInterface::setChannelHopping( int interval ) | 700 | void 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 | ||
703 | int OWirelessNetworkInterface::channelHopping() const | 709 | int OWirelessNetworkInterface::channelHopping() const |
704 | { | 710 | { |
705 | return _hopper->interval(); | 711 | return _hopper->interval(); |
706 | } | 712 | } |
707 | 713 | ||
708 | 714 | ||
709 | OChannelHopper* OWirelessNetworkInterface::channelHopper() const | 715 | OChannelHopper* OWirelessNetworkInterface::channelHopper() const |
710 | { | 716 | { |
711 | return _hopper; | 717 | return _hopper; |
712 | } | 718 | } |
713 | 719 | ||
714 | 720 | ||
715 | void OWirelessNetworkInterface::commit() const | 721 | void OWirelessNetworkInterface::commit() const |
716 | { | 722 | { |
717 | wioctl( SIOCSIWCOMMIT ); | 723 | wioctl( SIOCSIWCOMMIT ); |
718 | } | 724 | } |
719 | 725 | ||
720 | 726 | ||
721 | void OWirelessNetworkInterface::setMode( const QString& newMode ) | 727 | void 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 | ||
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) |
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 @@ | |||
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 | } |