-rw-r--r-- | libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp | 4 | ||||
-rw-r--r-- | libopie2/opienet/onetwork.h | 30 | ||||
-rw-r--r-- | libopie2/opienet/opcap.h | 5 | ||||
-rw-r--r-- | libopie2/opieui/opieui.pro | 4 |
4 files changed, 32 insertions, 11 deletions
diff --git a/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp b/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp index f800336..34d32d2 100644 --- a/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp +++ b/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp | |||
@@ -1,217 +1,217 @@ | |||
1 | #include <qdict.h> | 1 | #include <qdict.h> |
2 | #include <qsocketnotifier.h> | 2 | #include <qsocketnotifier.h> |
3 | #include <qstring.h> | 3 | #include <qstring.h> |
4 | #include <opie2/onetwork.h> | 4 | #include <opie2/onetwork.h> |
5 | #include <qapplication.h> | 5 | #include <qapplication.h> |
6 | #include <opie2/opcap.h> | 6 | #include <opie2/opcap.h> |
7 | #include <cerrno> | 7 | #include <cerrno> |
8 | #include <cstdio> | 8 | #include <cstdio> |
9 | #include <cstdlib> | 9 | #include <cstdlib> |
10 | #include <cstring> | 10 | #include <cstring> |
11 | 11 | ||
12 | //======================== Station help class =============================== | 12 | //======================== Station help class =============================== |
13 | 13 | ||
14 | class Station | 14 | class Station |
15 | { | 15 | { |
16 | public: | 16 | public: |
17 | Station( QString t, int c, bool w ) : type(t), channel(c), wep(w), beacons(1) {}; | 17 | Station( QString t, int c, bool w ) : type(t), channel(c), wep(w), beacons(1) {}; |
18 | ~Station() {}; | 18 | ~Station() {}; |
19 | 19 | ||
20 | QString type; | 20 | QString type; |
21 | int channel; | 21 | int channel; |
22 | bool wep; | 22 | bool wep; |
23 | int beacons; | 23 | int beacons; |
24 | }; | 24 | }; |
25 | 25 | ||
26 | QDict<Station> stations; | 26 | QDict<Station> stations; |
27 | 27 | ||
28 | //======================== Application class =============================== | 28 | //======================== Application class =============================== |
29 | 29 | ||
30 | class Wellenreiter : public QApplication | 30 | class Wellenreiter : public QApplication |
31 | { | 31 | { |
32 | Q_OBJECT | 32 | Q_OBJECT |
33 | public: | 33 | public: |
34 | Wellenreiter( int argc, char** argv ) : QApplication( argc, argv ) | 34 | Wellenreiter( int argc, char** argv ) : QApplication( argc, argv ) |
35 | { | 35 | { |
36 | 36 | ||
37 | ONetwork* net = ONetwork::instance(); | 37 | ONetwork* net = ONetwork::instance(); |
38 | 38 | ||
39 | if ( argc < 3 ) | 39 | if ( argc < 3 ) |
40 | { | 40 | { |
41 | printf( "Usage: ./%s <interface> <driver> <interval>\n", argv[0] ); | 41 | printf( "Usage: ./%s <interface> <driver> <interval>\n", argv[0] ); |
42 | printf( "\n" ); | 42 | printf( "\n" ); |
43 | printf( "Valid wireless interfaces (detected) are:\n" ); | 43 | printf( "Valid wireless interfaces (detected) are:\n" ); |
44 | 44 | ||
45 | ONetwork::InterfaceIterator it = net->iterator(); | 45 | ONetwork::InterfaceIterator it = net->iterator(); |
46 | while ( it.current() ) | 46 | while ( it.current() ) |
47 | { | 47 | { |
48 | if ( it.current()->isWireless() ) | 48 | if ( it.current()->isWireless() ) |
49 | { | 49 | { |
50 | printf( " - '%s' (MAC=%s) (IPv4=%s)\n", (const char*) it.current()->name(), | 50 | printf( " - '%s' (MAC=%s) (IPv4=%s)\n", (const char*) it.current()->name(), |
51 | (const char*) it.current()->macAddress().toString(), | 51 | (const char*) it.current()->macAddress().toString(), |
52 | (const char*) it.current()->ipV4Address() ); | 52 | (const char*) it.current()->ipV4Address() ); |
53 | } | 53 | } |
54 | ++it; | 54 | ++it; |
55 | } | 55 | } |
56 | exit( -1 ); | 56 | exit( -1 ); |
57 | } | 57 | } |
58 | 58 | ||
59 | printf( "****************************************************\n" ); | 59 | printf( "****************************************************\n" ); |
60 | printf( "* Wellenreiter mini edition 1.0 (C) 2003 M-M-M *\n" ); | 60 | printf( "* Wellenreiter mini edition 1.0 (C) 2003 M-M-M *\n" ); |
61 | printf( "****************************************************\n" ); | 61 | printf( "****************************************************\n" ); |
62 | printf( "\n\n" ); | 62 | printf( "\n\n" ); |
63 | 63 | ||
64 | QString interface( argv[1] ); | 64 | QString interface( argv[1] ); |
65 | QString driver( argv[2] ); | 65 | QString driver( argv[2] ); |
66 | 66 | ||
67 | printf( "Trying to use '%s' as %s-controlled device...\n", (const char*) interface, (const char*) driver ); | 67 | printf( "Trying to use '%s' as %s-controlled device...\n", (const char*) interface, (const char*) driver ); |
68 | 68 | ||
69 | // sanity checks before downcasting | 69 | // sanity checks before downcasting |
70 | ONetworkInterface* iface = net->interface( interface ); | 70 | ONetworkInterface* iface = net->interface( interface ); |
71 | if ( !iface ) | 71 | if ( !iface ) |
72 | { | 72 | { |
73 | printf( "Interface '%s' doesn't exist. Exiting.\n", (const char*) interface ); | 73 | printf( "Interface '%s' doesn't exist. Exiting.\n", (const char*) interface ); |
74 | exit( -1 ); | 74 | exit( -1 ); |
75 | } | 75 | } |
76 | if ( !iface->isWireless() ) | 76 | if ( !iface->isWireless() ) |
77 | { | 77 | { |
78 | printf( "Interface '%s' doesn't support wireless extensions. Exiting.\n", (const char*) interface ); | 78 | printf( "Interface '%s' doesn't support wireless extensions. Exiting.\n", (const char*) interface ); |
79 | exit( -1 ); | 79 | exit( -1 ); |
80 | } | 80 | } |
81 | 81 | ||
82 | // downcast should be safe now | 82 | // downcast should be safe now |
83 | wiface = (OWirelessNetworkInterface*) iface; | 83 | wiface = (OWirelessNetworkInterface*) iface; |
84 | printf( "Using wireless interface '%s' for scanning (current SSID is '%s')...\n", (const char*) interface, (const char*) wiface->SSID() ); | 84 | printf( "Using wireless interface '%s' for scanning (current SSID is '%s')...\n", (const char*) interface, (const char*) wiface->SSID() ); |
85 | 85 | ||
86 | // ifconfig +promisc the interface to receive all packets | 86 | // ifconfig +promisc the interface to receive all packets |
87 | if ( !wiface->promiscuousMode() ) | 87 | if ( !wiface->promiscuousMode() ) |
88 | { | 88 | { |
89 | printf( "Interface status is not promisc... switching to promisc... " ); | 89 | printf( "Interface status is not promisc... switching to promisc... " ); |
90 | wiface->setPromiscuousMode( true ); | 90 | wiface->setPromiscuousMode( true ); |
91 | if ( !wiface->promiscuousMode() ) | 91 | if ( !wiface->promiscuousMode() ) |
92 | { | 92 | { |
93 | printf( "failed (%s). Exiting.\n", strerror( errno ) ); | 93 | printf( "failed (%s). Exiting.\n", strerror( errno ) ); |
94 | exit( -1 ); | 94 | exit( -1 ); |
95 | } | 95 | } |
96 | else | 96 | else |
97 | { | 97 | { |
98 | printf( "ok.\n" ); | 98 | printf( "ok.\n" ); |
99 | } | 99 | } |
100 | } | 100 | } |
101 | else | 101 | else |
102 | printf( "Interface status is already promisc - good.\n" ); | 102 | printf( "Interface status is already promisc - good.\n" ); |
103 | 103 | ||
104 | // connect a monitoring strategy to the interface | 104 | // connect a monitoring strategy to the interface |
105 | if ( driver == "orinoco" ) | 105 | if ( driver == "orinoco" ) |
106 | new OOrinocoMonitoringInterface( wiface ); | 106 | new OOrinocoMonitoringInterface( wiface ); |
107 | else | 107 | else |
108 | { | 108 | { |
109 | printf( "Unknown driver. Exiting\n" ); | 109 | printf( "Unknown driver. Exiting\n" ); |
110 | exit( -1 ); | 110 | exit( -1 ); |
111 | } | 111 | } |
112 | 112 | ||
113 | // enable monitoring mode | 113 | // enable monitoring mode |
114 | printf( "Enabling monitor mode...\n" ); | 114 | printf( "Enabling monitor mode...\n" ); |
115 | wiface->setMonitorMode( true ); | 115 | //wiface->setMonitorMode( true ); |
116 | 116 | ||
117 | // open a packet capturer | 117 | // open a packet capturer |
118 | cap = new OPacketCapturer(); | 118 | cap = new OPacketCapturer(); |
119 | cap->open( interface ); | 119 | cap->open( interface ); |
120 | if ( !cap->isOpen() ) | 120 | if ( !cap->isOpen() ) |
121 | { | 121 | { |
122 | printf( "Unable to open libpcap (%s). Exiting.\n", strerror( errno ) ); | 122 | printf( "Unable to open libpcap (%s). Exiting.\n", strerror( errno ) ); |
123 | exit( -1 ); | 123 | exit( -1 ); |
124 | } | 124 | } |
125 | 125 | ||
126 | // set capturer to non-blocking mode | 126 | // set capturer to non-blocking mode |
127 | cap->setBlocking( false ); | 127 | cap->setBlocking( false ); |
128 | 128 | ||
129 | // start channel hopper | 129 | // start channel hopper |
130 | wiface->setChannelHopping( 1000 ); | 130 | //wiface->setChannelHopping( 1000 ); |
131 | 131 | ||
132 | // connect | 132 | // connect |
133 | connect( cap, SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); | 133 | connect( cap, SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); |
134 | 134 | ||
135 | } | 135 | } |
136 | 136 | ||
137 | ~Wellenreiter() {}; | 137 | ~Wellenreiter() {}; |
138 | 138 | ||
139 | public slots: | 139 | public slots: |
140 | void receivePacket(OPacket* p) | 140 | void receivePacket(OPacket* p) |
141 | { | 141 | { |
142 | if (!p) | 142 | if (!p) |
143 | { | 143 | { |
144 | printf( "(empty packet received)\n" ); | 144 | printf( "(empty packet received)\n" ); |
145 | return; | 145 | return; |
146 | } | 146 | } |
147 | 147 | ||
148 | OWaveLanManagementPacket* beacon = (OWaveLanManagementPacket*) p->child( "802.11 Management" ); | 148 | OWaveLanManagementPacket* beacon = (OWaveLanManagementPacket*) p->child( "802.11 Management" ); |
149 | if ( beacon ) | 149 | if ( beacon ) |
150 | { | 150 | { |
151 | OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) ); | 151 | OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) ); |
152 | QString essid = ssid ? ssid->ID() : "<unknown>"; | 152 | QString essid = ssid ? ssid->ID() : "<unknown>"; |
153 | 153 | ||
154 | if ( stations.find( essid ) ) | 154 | if ( stations.find( essid ) ) |
155 | stations[essid]->beacons++; | 155 | stations[essid]->beacons++; |
156 | else | 156 | else |
157 | { | 157 | { |
158 | printf( "found new network @ channel %d, SSID = '%s'\n", wiface->channel(), (const char*) essid ); | 158 | printf( "found new network @ channel %d, SSID = '%s'\n", wiface->channel(), (const char*) essid ); |
159 | stations.insert( essid, new Station( "unknown", wiface->channel(), | 159 | stations.insert( essid, new Station( "unknown", wiface->channel(), |
160 | ((OWaveLanPacket*) beacon->parent())->usesWep() ) ); | 160 | ((OWaveLanPacket*) beacon->parent())->usesWep() ) ); |
161 | } | 161 | } |
162 | return; | 162 | return; |
163 | } | 163 | } |
164 | 164 | ||
165 | OWaveLanDataPacket* data = (OWaveLanDataPacket*) p->child( "802.11 Data" ); | 165 | OWaveLanDataPacket* data = (OWaveLanDataPacket*) p->child( "802.11 Data" ); |
166 | if ( data ) | 166 | if ( data ) |
167 | { | 167 | { |
168 | OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" ); | 168 | OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" ); |
169 | if ( wlan->fromDS() && !wlan->toDS() ) | 169 | if ( wlan->fromDS() && !wlan->toDS() ) |
170 | { | 170 | { |
171 | printf( "FromDS: '%s' -> '%s' via '%s'\n", | 171 | printf( "FromDS: '%s' -> '%s' via '%s'\n", |
172 | (const char*) wlan->macAddress3().toString(true), | 172 | (const char*) wlan->macAddress3().toString(true), |
173 | (const char*) wlan->macAddress1().toString(true), | 173 | (const char*) wlan->macAddress1().toString(true), |
174 | (const char*) wlan->macAddress2().toString(true) ); | 174 | (const char*) wlan->macAddress2().toString(true) ); |
175 | } | 175 | } |
176 | else | 176 | else |
177 | if ( !wlan->fromDS() && wlan->toDS() ) | 177 | if ( !wlan->fromDS() && wlan->toDS() ) |
178 | { | 178 | { |
179 | printf( "ToDS: '%s' -> '%s' via '%s'\n", | 179 | printf( "ToDS: '%s' -> '%s' via '%s'\n", |
180 | (const char*) wlan->macAddress2().toString(true), | 180 | (const char*) wlan->macAddress2().toString(true), |
181 | (const char*) wlan->macAddress3().toString(true), | 181 | (const char*) wlan->macAddress3().toString(true), |
182 | (const char*) wlan->macAddress1().toString(true) ); | 182 | (const char*) wlan->macAddress1().toString(true) ); |
183 | } | 183 | } |
184 | else | 184 | else |
185 | if ( wlan->fromDS() && wlan->toDS() ) | 185 | if ( wlan->fromDS() && wlan->toDS() ) |
186 | { | 186 | { |
187 | printf( "WSD(bridge): '%s' -> '%s' via '%s' and '%s'\n", | 187 | printf( "WSD(bridge): '%s' -> '%s' via '%s' and '%s'\n", |
188 | (const char*) wlan->macAddress4().toString(true), | 188 | (const char*) wlan->macAddress4().toString(true), |
189 | (const char*) wlan->macAddress3().toString(true), | 189 | (const char*) wlan->macAddress3().toString(true), |
190 | (const char*) wlan->macAddress1().toString(true), | 190 | (const char*) wlan->macAddress1().toString(true), |
191 | (const char*) wlan->macAddress2().toString(true) ); | 191 | (const char*) wlan->macAddress2().toString(true) ); |
192 | } | 192 | } |
193 | else | 193 | else |
194 | { | 194 | { |
195 | printf( "IBSS(AdHoc): '%s' -> '%s' (Cell: '%s')'\n", | 195 | printf( "IBSS(AdHoc): '%s' -> '%s' (Cell: '%s')'\n", |
196 | (const char*) wlan->macAddress2().toString(true), | 196 | (const char*) wlan->macAddress2().toString(true), |
197 | (const char*) wlan->macAddress1().toString(true), | 197 | (const char*) wlan->macAddress1().toString(true), |
198 | (const char*) wlan->macAddress3().toString(true) ); | 198 | (const char*) wlan->macAddress3().toString(true) ); |
199 | } | 199 | } |
200 | return; | 200 | return; |
201 | } | 201 | } |
202 | } | 202 | } |
203 | private: | 203 | private: |
204 | OPacketCapturer* cap; | 204 | OPacketCapturer* cap; |
205 | OWirelessNetworkInterface* wiface; | 205 | OWirelessNetworkInterface* wiface; |
206 | }; | 206 | }; |
207 | 207 | ||
208 | 208 | ||
209 | int main( int argc, char** argv ) | 209 | int main( int argc, char** argv ) |
210 | { | 210 | { |
211 | Wellenreiter w( argc, argv ); | 211 | Wellenreiter w( argc, argv ); |
212 | w.exec(); | 212 | w.exec(); |
213 | return 0; | 213 | return 0; |
214 | } | 214 | } |
215 | 215 | ||
216 | #include "miniwellenreiter.moc" | 216 | #include "miniwellenreiter.moc" |
217 | 217 | ||
diff --git a/libopie2/opienet/onetwork.h b/libopie2/opienet/onetwork.h index 2348bbc..f052317 100644 --- a/libopie2/opienet/onetwork.h +++ b/libopie2/opienet/onetwork.h | |||
@@ -1,493 +1,517 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) 2003 by the Wellenreiter team: | 3 | Copyright (C) 2003 by the Wellenreiter team: |
4 | Martin J. Muench <mjm@remote-exploit.org> | 4 | Martin J. Muench <mjm@remote-exploit.org> |
5 | Max Moser <mmo@remote-exploit.org | 5 | Max Moser <mmo@remote-exploit.org |
6 | Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 6 | Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
7 | =. | 7 | =. |
8 | .=l. | 8 | .=l. |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This program is free software; you can | 10 | _;:, .> :=|. This program is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This program is distributed in the hope that | 17 | .i_,=:_. -<s. This program is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; Library General Public License for more | 22 | ..}^=.= = ; Library General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = Library General Public License along with | 26 | -_. . . )=. = Library General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #ifndef ONETWORK_H | 34 | #ifndef ONETWORK_H |
35 | #define ONETWORK_H | 35 | #define ONETWORK_H |
36 | 36 | ||
37 | /* QT */ | 37 | /* QT */ |
38 | 38 | ||
39 | #include <qvaluelist.h> | 39 | #include <qvaluelist.h> |
40 | #include <qdict.h> | 40 | #include <qdict.h> |
41 | #include <qmap.h> | 41 | #include <qmap.h> |
42 | #include <qobject.h> | 42 | #include <qobject.h> |
43 | #include <qhostaddress.h> | 43 | #include <qhostaddress.h> |
44 | 44 | ||
45 | /* OPIE */ | 45 | /* OPIE */ |
46 | 46 | ||
47 | #include <opie2/onetutils.h> | 47 | #include <opie2/onetutils.h> |
48 | 48 | ||
49 | #ifndef IFNAMSIZ | 49 | #ifndef IFNAMSIZ |
50 | #define IFNAMSIZ 16 | 50 | #define IFNAMSIZ 16 |
51 | #endif | 51 | #endif |
52 | #ifndef IW_MAX_PRIV_DEF | 52 | #ifndef IW_MAX_PRIV_DEF |
53 | #define IW_MAX_PRIV_DEF 128 | 53 | #define IW_MAX_PRIV_DEF 128 |
54 | #endif | 54 | #endif |
55 | 55 | ||
56 | // ML: Yeah, I hate to include kernel headers, but it's necessary here | 56 | // ML: Yeah, I hate to include kernel headers, but it's necessary here |
57 | // ML: Here comes an ugly hack to prevent <linux/wireless.h> including <linux/if.h> | 57 | // ML: Here comes an ugly hack to prevent <linux/wireless.h> including <linux/if.h> |
58 | // ML: which conflicts with the user header <net/if.h> | 58 | // ML: which conflicts with the user header <net/if.h> |
59 | // ML: We really need a user header for the Wireless Extensions, something like <net/wireless.h> | 59 | // ML: We really need a user header for the Wireless Extensions, something like <net/wireless.h> |
60 | // ML: I will drop Jean a mail on that subject | 60 | // ML: I will drop Jean a mail on that subject |
61 | 61 | ||
62 | #include <net/if.h> | 62 | #include <net/if.h> |
63 | #define _LINUX_IF_H | 63 | #define _LINUX_IF_H |
64 | #include <linux/wireless.h> | 64 | #include <linux/wireless.h> |
65 | 65 | ||
66 | class ONetworkInterface; | 66 | class ONetworkInterface; |
67 | class OWirelessNetworkInterface; | 67 | class OWirelessNetworkInterface; |
68 | class OChannelHopper; | 68 | class OChannelHopper; |
69 | class OMonitoringInterface; | 69 | class OMonitoringInterface; |
70 | 70 | ||
71 | /*====================================================================================== | 71 | /*====================================================================================== |
72 | * ONetwork | 72 | * ONetwork |
73 | *======================================================================================*/ | 73 | *======================================================================================*/ |
74 | 74 | ||
75 | /** | 75 | /** |
76 | * @brief A container class for all network interfaces | 76 | * @brief A container class for all network interfaces |
77 | * | 77 | * |
78 | * This class provides access to all available network interfaces of your computer. | 78 | * This class provides access to all available network interfaces of your computer. |
79 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 79 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
80 | */ | 80 | */ |
81 | class ONetwork : public QObject | 81 | class ONetwork : public QObject |
82 | { | 82 | { |
83 | Q_OBJECT | 83 | Q_OBJECT |
84 | 84 | ||
85 | public: | 85 | public: |
86 | typedef QDict<ONetworkInterface> InterfaceMap; | 86 | typedef QDict<ONetworkInterface> InterfaceMap; |
87 | typedef QDictIterator<ONetworkInterface> InterfaceIterator; | 87 | typedef QDictIterator<ONetworkInterface> InterfaceIterator; |
88 | 88 | ||
89 | public: | 89 | public: |
90 | /** | 90 | /** |
91 | * @returns the number of available interfaces | 91 | * @returns the number of available interfaces |
92 | */ | 92 | */ |
93 | int count() const; | 93 | int count() const; |
94 | /** | 94 | /** |
95 | * @returns a pointer to the (one and only) @ref ONetwork instance. | 95 | * @returns a pointer to the (one and only) @ref ONetwork instance. |
96 | */ | 96 | */ |
97 | static ONetwork* instance(); | 97 | static ONetwork* instance(); |
98 | /** | 98 | /** |
99 | * @returns an iterator usable for iterating through all network interfaces. | 99 | * @returns an iterator usable for iterating through all network interfaces. |
100 | */ | 100 | */ |
101 | InterfaceIterator iterator() const; | 101 | InterfaceIterator iterator() const; |
102 | /** | 102 | /** |
103 | * @returns true, if the @p interface supports the wireless extension protocol. | 103 | * @returns true, if the @p interface supports the wireless extension protocol. |
104 | */ | 104 | */ |
105 | // FIXME QString? -zecke | 105 | // FIXME QString? -zecke |
106 | bool isWirelessInterface( const char* interface ) const; | 106 | bool isWirelessInterface( const char* interface ) const; |
107 | /** | 107 | /** |
108 | * @returns a pointer to the @ref ONetworkInterface object for the specified @p interface or 0, if not found | 108 | * @returns a pointer to the @ref ONetworkInterface object for the specified @p interface or 0, if not found |
109 | * @see ONetworkInterface | 109 | * @see ONetworkInterface |
110 | */ | 110 | */ |
111 | // FIXME: const QString& is prefered over QString!!! -zecke | 111 | // FIXME: const QString& is prefered over QString!!! -zecke |
112 | ONetworkInterface* interface( const QString& interface ) const; | 112 | ONetworkInterface* interface( const QString& interface ) const; |
113 | /** | 113 | /** |
114 | * @internal Rebuild the internal interface database | 114 | * @internal Rebuild the internal interface database |
115 | * @note Sometimes it might be useful to call this from client code, | 115 | * @note Sometimes it might be useful to call this from client code, |
116 | * e.g. after cardctl insert | 116 | * e.g. after issuing a cardctl insert |
117 | */ | 117 | */ |
118 | void synchronize(); | 118 | void synchronize(); |
119 | 119 | ||
120 | protected: | 120 | protected: |
121 | ONetwork(); | 121 | ONetwork(); |
122 | 122 | ||
123 | private: | 123 | private: |
124 | static ONetwork* _instance; | 124 | static ONetwork* _instance; |
125 | InterfaceMap _interfaces; | 125 | InterfaceMap _interfaces; |
126 | }; | 126 | }; |
127 | 127 | ||
128 | 128 | ||
129 | /*====================================================================================== | 129 | /*====================================================================================== |
130 | * ONetworkInterface | 130 | * ONetworkInterface |
131 | *======================================================================================*/ | 131 | *======================================================================================*/ |
132 | 132 | ||
133 | /** | 133 | /** |
134 | * @brief A network interface wrapper. | 134 | * @brief A network interface wrapper. |
135 | * | 135 | * |
136 | * This class provides a wrapper for a network interface. All the cumbersume details of | 136 | * This class provides a wrapper for a network interface. All the cumbersume details of |
137 | * Linux ioctls are hidden under a convenient high-level interface. | 137 | * Linux ioctls are hidden under a convenient high-level interface. |
138 | * @warning Most of the setting methods contained in this class require the appropriate | 138 | * @warning Most of the setting methods contained in this class require the appropriate |
139 | * process permissions to work. | 139 | * process permissions to work. |
140 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 140 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
141 | */ | 141 | */ |
142 | class ONetworkInterface : public QObject | 142 | class ONetworkInterface : public QObject |
143 | { | 143 | { |
144 | friend class OMonitoringInterface; | 144 | friend class OMonitoringInterface; |
145 | friend class OCiscoMonitoringInterface; | 145 | friend class OCiscoMonitoringInterface; |
146 | friend class OWlanNGMonitoringInterface; | 146 | friend class OWlanNGMonitoringInterface; |
147 | friend class OHostAPMonitoringInterface; | 147 | friend class OHostAPMonitoringInterface; |
148 | friend class OOrinocoMonitoringInterface; | 148 | friend class OOrinocoMonitoringInterface; |
149 | 149 | ||
150 | public: | 150 | public: |
151 | /** | 151 | /** |
152 | * Constructor. Normally you don't create @ref ONetworkInterface objects yourself, | 152 | * Constructor. Normally you don't create @ref ONetworkInterface objects yourself, |
153 | * but access them via @ref ONetwork::interface(). | 153 | * but access them via @ref ONetwork::interface(). |
154 | */ | 154 | */ |
155 | ONetworkInterface( QObject* parent, const char* name ); | 155 | ONetworkInterface( QObject* parent, const char* name ); |
156 | /** | 156 | /** |
157 | * Destructor. | 157 | * Destructor. |
158 | */ | 158 | */ |
159 | virtual ~ONetworkInterface(); | 159 | virtual ~ONetworkInterface(); |
160 | /** | 160 | /** |
161 | * Associates a @a monitoring interface with this network interface. | 161 | * Associates a @a monitoring interface with this network interface. |
162 | * @note This is currently only useful with @ref OWirelessNetworkInterface objects. | 162 | * @note This is currently only useful with @ref OWirelessNetworkInterface objects. |
163 | */ | 163 | */ |
164 | void setMonitoring( OMonitoringInterface* monitoring ); | 164 | void setMonitoring( OMonitoringInterface* monitoring ); |
165 | /** | 165 | /** |
166 | * @returns the currently associated monitoring interface or 0, if no monitoring is associated. | 166 | * @returns the currently associated monitoring interface or 0, if no monitoring is associated. |
167 | */ | 167 | */ |
168 | OMonitoringInterface* monitoring() const; | 168 | OMonitoringInterface* monitoring() const; |
169 | /** | 169 | /** |
170 | * Setting an interface to promiscuous mode enables the device to receive | 170 | * Setting an interface to promiscuous mode enables the device to receive |
171 | * all packets on the shared medium - as opposed to packets which are addressed to this interface. | 171 | * all packets on the shared medium - as opposed to packets which are addressed to this interface. |
172 | */ | 172 | */ |
173 | bool setPromiscuousMode( bool ); | 173 | bool setPromiscuousMode( bool ); |
174 | /** | 174 | /** |
175 | * @returns true if the interface is set to promiscuous mode. | 175 | * @returns true if the interface is set to promiscuous mode. |
176 | */ | 176 | */ |
177 | bool promiscuousMode() const; | 177 | bool promiscuousMode() const; |
178 | /** | 178 | /** |
179 | * Setting an interface to up enables it to receive packets. | 179 | * Setting an interface to up enables it to receive packets. |
180 | */ | 180 | */ |
181 | bool setUp( bool ); | 181 | bool setUp( bool ); |
182 | /** | 182 | /** |
183 | * @returns true if the interface is up. | 183 | * @returns true if the interface is up. |
184 | */ | 184 | */ |
185 | bool isUp() const; | 185 | bool isUp() const; |
186 | /** | 186 | /** |
187 | * @returns true if the interface is a loopback interface. | 187 | * @returns true if the interface is a loopback interface. |
188 | */ | 188 | */ |
189 | bool isLoopback() const; | 189 | bool isLoopback() const; |
190 | /** | 190 | /** |
191 | * @returns true if the interface is featuring supports the wireless extension protocol. | 191 | * @returns true if the interface is featuring supports the wireless extension protocol. |
192 | */ | 192 | */ |
193 | bool isWireless() const; | 193 | bool isWireless() const; |
194 | /** | 194 | /** |
195 | * Associate the IP address @ addr with the interface. | 195 | * Associate the IP address @ addr with the interface. |
196 | */ | 196 | */ |
197 | void setIPV4Address( const QHostAddress& addr ); | 197 | void setIPV4Address( const QHostAddress& addr ); |
198 | /** | 198 | /** |
199 | * @returns the IPv4 address associated with the interface. | 199 | * @returns the IPv4 address associated with the interface. |
200 | */ | 200 | */ |
201 | QString ipV4Address() const; | 201 | QString ipV4Address() const; |
202 | /** | 202 | /** |
203 | * Associate the MAC address @a addr with the interface. | 203 | * Associate the MAC address @a addr with the interface. |
204 | * @note It can be necessary to shut down the interface prior to calling this method. | 204 | * @note It can be necessary to shut down the interface prior to calling this method. |
205 | * @warning This is not supported by all drivers. | 205 | * @warning This is not supported by all drivers. |
206 | */ | 206 | */ |
207 | void setMacAddress( const OMacAddress& addr ); | 207 | void setMacAddress( const OMacAddress& addr ); |
208 | /** | 208 | /** |
209 | * @returns the MAC address associated with the interface. | 209 | * @returns the MAC address associated with the interface. |
210 | */ | 210 | */ |
211 | OMacAddress macAddress() const; | 211 | OMacAddress macAddress() const; |
212 | /** | 212 | /** |
213 | * Associate the IPv4 @a netmask with the interface. | 213 | * Associate the IPv4 @a netmask with the interface. |
214 | */ | 214 | */ |
215 | void setIPV4Netmask( const QHostAddress& netmask ); | 215 | void setIPV4Netmask( const QHostAddress& netmask ); |
216 | /** | 216 | /** |
217 | * @returns the IPv4 netmask associated with the interface. | 217 | * @returns the IPv4 netmask associated with the interface. |
218 | */ | 218 | */ |
219 | QString ipV4Netmask() const; | 219 | QString ipV4Netmask() const; |
220 | /** | 220 | /** |
221 | * @returns the data link type currently associated with the interface. | 221 | * @returns the data link type currently associated with the interface. |
222 | * @see #include <net/if_arp.h> for possible values. | 222 | * @see #include <net/if_arp.h> for possible values. |
223 | */ | 223 | */ |
224 | int dataLinkType() const; | 224 | int dataLinkType() const; |
225 | 225 | ||
226 | protected: | 226 | protected: |
227 | const int _sfd; | 227 | const int _sfd; |
228 | mutable ifreq _ifr; | 228 | mutable ifreq _ifr; |
229 | OMonitoringInterface* _mon; | 229 | OMonitoringInterface* _mon; |
230 | 230 | ||
231 | protected: | 231 | protected: |
232 | struct ifreq& ifr() const; | 232 | struct ifreq& ifr() const; |
233 | virtual void init(); | 233 | virtual void init(); |
234 | bool ioctl( int call ) const; | 234 | bool ioctl( int call ) const; |
235 | bool ioctl( int call, struct ifreq& ) const; | 235 | bool ioctl( int call, struct ifreq& ) const; |
236 | }; | 236 | }; |
237 | 237 | ||
238 | /*====================================================================================== | 238 | /*====================================================================================== |
239 | * OChannelHopper | 239 | * OChannelHopper |
240 | *======================================================================================*/ | 240 | *======================================================================================*/ |
241 | 241 | ||
242 | /** | 242 | /** |
243 | * @brief A radio frequency channel hopper. | 243 | * @brief A radio frequency channel hopper. |
244 | * | 244 | * |
245 | * This class provides a channel hopper for radio frequencies. A channel hopper frequently | 245 | * This class provides a channel hopper for radio frequencies. A channel hopper frequently |
246 | * changes the radio frequency channel of its associated @ref OWirelessNetworkInterface. | 246 | * changes the radio frequency channel of its associated @ref OWirelessNetworkInterface. |
247 | * This is necessary when in monitoring mode and scanning for other devices, because | 247 | * This is necessary when in monitoring mode and scanning for other devices, because |
248 | * the radio frequency hardware can only detect packets sent on the same frequency. | 248 | * the radio frequency hardware can only detect packets sent on the same frequency. |
249 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 249 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
250 | */ | 250 | */ |
251 | class OChannelHopper : public QObject | 251 | class OChannelHopper : public QObject |
252 | { | 252 | { |
253 | Q_OBJECT | 253 | Q_OBJECT |
254 | 254 | ||
255 | public: | 255 | public: |
256 | /** | ||
257 | * Constructor. | ||
258 | */ | ||
256 | OChannelHopper( OWirelessNetworkInterface* ); | 259 | OChannelHopper( OWirelessNetworkInterface* ); |
260 | /** | ||
261 | * Destructor. | ||
262 | */ | ||
257 | virtual ~OChannelHopper(); | 263 | virtual ~OChannelHopper(); |
264 | /** | ||
265 | * @returns true, if the channel hopper is hopping channels | ||
266 | */ | ||
258 | bool isActive() const; | 267 | bool isActive() const; |
268 | /** | ||
269 | * @returns the last hopped channel | ||
270 | */ | ||
259 | int channel() const; | 271 | int channel() const; |
260 | virtual void timerEvent( QTimerEvent* ); | 272 | /** |
261 | void setInterval( int ); | 273 | * Set the channel hopping @a interval. |
274 | * An interval of 0 deactivates the channel hopper. | ||
275 | */ | ||
276 | void setInterval( int interval ); | ||
277 | /** | ||
278 | * @returns the channel hopping interval | ||
279 | */ | ||
262 | int interval() const; | 280 | int interval() const; |
263 | 281 | ||
264 | signals: | 282 | signals: |
283 | /** | ||
284 | * This signal is emitted right after the channel hopper performed a hop | ||
285 | */ | ||
265 | void hopped( int ); | 286 | void hopped( int ); |
266 | 287 | ||
288 | protected: | ||
289 | virtual void timerEvent( QTimerEvent* ); | ||
290 | |||
267 | private: | 291 | private: |
268 | OWirelessNetworkInterface* _iface; | 292 | OWirelessNetworkInterface* _iface; |
269 | int _interval; | 293 | int _interval; |
270 | int _tid; | 294 | int _tid; |
271 | QValueList<int> _channels; | 295 | QValueList<int> _channels; |
272 | QValueList<int>::Iterator _channel; | 296 | QValueList<int>::Iterator _channel; |
273 | }; | 297 | }; |
274 | 298 | ||
275 | 299 | ||
276 | /*====================================================================================== | 300 | /*====================================================================================== |
277 | * OWirelessNetworkInterface | 301 | * OWirelessNetworkInterface |
278 | *======================================================================================*/ | 302 | *======================================================================================*/ |
279 | 303 | ||
280 | /** | 304 | /** |
281 | * @brief A network interface wrapper for interfaces supporting the wireless extensions protocol. | 305 | * @brief A network interface wrapper for interfaces supporting the wireless extensions protocol. |
282 | * | 306 | * |
283 | * This class provides a high-level encapsulation of the Linux wireless extension API. | 307 | * This class provides a high-level encapsulation of the Linux wireless extension API. |
284 | */ | 308 | */ |
285 | class OWirelessNetworkInterface : public ONetworkInterface | 309 | class OWirelessNetworkInterface : public ONetworkInterface |
286 | { | 310 | { |
287 | friend class OMonitoringInterface; | 311 | friend class OMonitoringInterface; |
288 | friend class OCiscoMonitoringInterface; | 312 | friend class OCiscoMonitoringInterface; |
289 | friend class OWlanNGMonitoringInterface; | 313 | friend class OWlanNGMonitoringInterface; |
290 | friend class OHostAPMonitoringInterface; | 314 | friend class OHostAPMonitoringInterface; |
291 | friend class OOrinocoMonitoringInterface; | 315 | friend class OOrinocoMonitoringInterface; |
292 | 316 | ||
293 | friend class OPrivateIOCTL; | 317 | friend class OPrivateIOCTL; |
294 | 318 | ||
295 | public: | 319 | public: |
296 | enum Mode { AdHoc, Managed, Monitor }; | 320 | enum Mode { AdHoc, Managed, Monitor }; |
297 | 321 | ||
298 | /** | 322 | /** |
299 | * Constructor. | 323 | * Constructor. |
300 | */ | 324 | */ |
301 | OWirelessNetworkInterface( QObject* parent, const char* name ); | 325 | OWirelessNetworkInterface( QObject* parent, const char* name ); |
302 | /** | 326 | /** |
303 | * Destructor. | 327 | * Destructor. |
304 | */ | 328 | */ |
305 | virtual ~OWirelessNetworkInterface(); | 329 | virtual ~OWirelessNetworkInterface(); |
306 | /** | 330 | /** |
307 | * Setting the @a channel of the interface changes the radio frequency (RF) | 331 | * Setting the @a channel of the interface changes the radio frequency (RF) |
308 | * of the corresponding wireless network device. | 332 | * of the corresponding wireless network device. |
309 | */ | 333 | */ |
310 | virtual void setChannel( int channel ) const; | 334 | virtual void setChannel( int channel ) const; |
311 | /** | 335 | /** |
312 | * @returns the channel index of the current radio frequency. | 336 | * @returns the channel index of the current radio frequency. |
313 | */ | 337 | */ |
314 | virtual int channel() const; | 338 | virtual int channel() const; |
315 | /** | 339 | /** |
316 | * @returns the current radio frequency (in MHz). | 340 | * @returns the current radio frequency (in MHz). |
317 | */ | 341 | */ |
318 | virtual double frequency() const; | 342 | virtual double frequency() const; |
319 | /** | 343 | /** |
320 | * @returns the number of radio frequency channels for the | 344 | * @returns the number of radio frequency channels for the |
321 | * corresponding wireless network device. | 345 | * corresponding wireless network device. |
322 | * @note European devices usually have 14 channels, while American typically feature 11 channels. | 346 | * @note European devices usually have 14 channels, while American typically feature 11 channels. |
323 | */ | 347 | */ |
324 | virtual int channels() const; | 348 | virtual int channels() const; |
325 | //virtual double frequency(int) const; | 349 | //virtual double frequency(int) const; |
326 | 350 | ||
327 | virtual void setMode( Mode ) {}; //FIXME: Implement and document this | 351 | virtual void setMode( Mode ) {}; //FIXME: Implement and document this |
328 | virtual bool mode() const {}; //FIXME: Implement and document this | 352 | virtual bool mode() const {}; //FIXME: Implement and document this |
329 | 353 | ||
330 | /** | 354 | /** |
331 | * Setting the monitor mode on a wireless network interface enables | 355 | * Setting the monitor mode on a wireless network interface enables |
332 | * listening to IEEE 802.11 data and management frames which normally | 356 | * listening to IEEE 802.11 data and management frames which normally |
333 | * are handled by the device firmware. This can be used to detect | 357 | * are handled by the device firmware. This can be used to detect |
334 | * other wireless network devices, e.g. Access Points or Ad-hoc stations. | 358 | * other wireless network devices, e.g. Access Points or Ad-hoc stations. |
335 | * @warning Standard wireless network drives don't support the monitor mode. | 359 | * @warning Standard wireless network drives don't support the monitor mode. |
336 | * @warning You need a patched driver for this to work. | 360 | * @warning You need a patched driver for this to work. |
337 | * @note Enabling the monitor mode is highly driver dependent and requires | 361 | * @note Enabling the monitor mode is highly driver dependent and requires |
338 | * the proper @ref OMonitoringInterface to be associated with the interface. | 362 | * the proper @ref OMonitoringInterface to be associated with the interface. |
339 | * @see OMonitoringInterface | 363 | * @see OMonitoringInterface |
340 | */ | 364 | */ |
341 | virtual void setMonitorMode( bool ); | 365 | virtual void setMonitorMode( bool ); |
342 | /** | 366 | /** |
343 | * @returns true if the device is listening in IEEE 802.11 monitor mode | 367 | * @returns true if the device is listening in IEEE 802.11 monitor mode |
344 | */ | 368 | */ |
345 | virtual bool monitorMode() const; | 369 | virtual bool monitorMode() const; |
346 | /** | 370 | /** |
347 | * Set the channel hopping @a interval. An @a interval of 0 disables channel hopping. | 371 | * Set the channel hopping @a interval. An @a interval of 0 disables channel hopping. |
348 | * @see OChannelHopper | 372 | * @see OChannelHopper |
349 | */ | 373 | */ |
350 | virtual void setChannelHopping( int interval = 0 ); | 374 | virtual void setChannelHopping( int interval = 0 ); |
351 | /** | 375 | /** |
352 | * @returns the channel hopping interval or 0, if channel hopping is disabled. | 376 | * @returns the channel hopping interval or 0, if channel hopping is disabled. |
353 | */ | 377 | */ |
354 | virtual int channelHopping() const; | 378 | virtual int channelHopping() const; |
355 | /** | 379 | /** |
356 | * @returns the @ref OChannelHopper of this interface or 0, if channel hopping has not been activated before | 380 | * @returns the @ref OChannelHopper of this interface or 0, if channel hopping has not been activated before |
357 | */ | 381 | */ |
358 | virtual OChannelHopper* channelHopper() const; | 382 | virtual OChannelHopper* channelHopper() const; |
359 | /** | 383 | /** |
360 | * Set the station @a nickname. | 384 | * Set the station @a nickname. |
361 | */ | 385 | */ |
362 | virtual void setNickName( const QString& nickname ) {}; //FIXME: Implement this | 386 | virtual void setNickName( const QString& nickname ) {}; //FIXME: Implement this |
363 | /** | 387 | /** |
364 | * @returns the current station nickname. | 388 | * @returns the current station nickname. |
365 | */ | 389 | */ |
366 | virtual QString nickName() const; | 390 | virtual QString nickName() const; |
367 | /** | 391 | /** |
368 | * Invoke the private IOCTL @a command with a @number of parameters on the network interface. | 392 | * Invoke the private IOCTL @a command with a @number of parameters on the network interface. |
369 | * @see OPrivateIOCTL | 393 | * @see OPrivateIOCTL |
370 | */ | 394 | */ |
371 | virtual void setPrivate( const QString& command, int number, ... ); | 395 | virtual void setPrivate( const QString& command, int number, ... ); |
372 | /** | 396 | /** |
373 | * @returns true if the interface is featuring the private IOCTL @command. | 397 | * @returns true if the interface is featuring the private IOCTL @command. |
374 | */ | 398 | */ |
375 | virtual bool hasPrivate( const QString& command ); | 399 | virtual bool hasPrivate( const QString& command ); |
376 | virtual void getPrivate( const QString& command ); //FIXME: Implement and document this | 400 | virtual void getPrivate( const QString& command ); //FIXME: Implement and document this |
377 | 401 | ||
378 | virtual bool isAssociated() const {}; //FIXME: Implement and document this | 402 | virtual bool isAssociated() const {}; //FIXME: Implement and document this |
379 | virtual QString associatedAP() const; //FIXME: Implement and document this | 403 | virtual QString associatedAP() const; //FIXME: Implement and document this |
380 | 404 | ||
381 | virtual void setSSID( const QString& ); | 405 | virtual void setSSID( const QString& ); |
382 | virtual QString SSID() const; | 406 | virtual QString SSID() const; |
383 | 407 | ||
384 | protected: | 408 | protected: |
385 | void buildChannelList(); | 409 | void buildChannelList(); |
386 | void buildPrivateList(); | 410 | void buildPrivateList(); |
387 | virtual void init(); | 411 | virtual void init(); |
388 | struct iwreq& iwr() const; | 412 | struct iwreq& iwr() const; |
389 | bool wioctl( int call ) const; | 413 | bool wioctl( int call ) const; |
390 | bool wioctl( int call, struct iwreq& ) const; | 414 | bool wioctl( int call, struct iwreq& ) const; |
391 | 415 | ||
392 | protected: | 416 | protected: |
393 | mutable struct iwreq _iwr; | 417 | mutable struct iwreq _iwr; |
394 | QMap<int,int> _channels; | 418 | QMap<int,int> _channels; |
395 | 419 | ||
396 | private: | 420 | private: |
397 | OChannelHopper* _hopper; | 421 | OChannelHopper* _hopper; |
398 | }; | 422 | }; |
399 | 423 | ||
400 | 424 | ||
401 | /*====================================================================================== | 425 | /*====================================================================================== |
402 | * OMonitoringInterface | 426 | * OMonitoringInterface |
403 | *======================================================================================*/ | 427 | *======================================================================================*/ |
404 | 428 | ||
405 | 429 | ||
406 | class OMonitoringInterface | 430 | class OMonitoringInterface |
407 | { | 431 | { |
408 | public: | 432 | public: |
409 | OMonitoringInterface(); | 433 | OMonitoringInterface(); |
410 | OMonitoringInterface( ONetworkInterface* ); | 434 | OMonitoringInterface( ONetworkInterface* ); |
411 | virtual ~OMonitoringInterface(); | 435 | virtual ~OMonitoringInterface(); |
412 | 436 | ||
413 | public: | 437 | public: |
414 | virtual void setEnabled( bool ); | 438 | virtual void setEnabled( bool ); |
415 | virtual bool enabled() const; | 439 | virtual bool enabled() const; |
416 | virtual void setChannel( int ); | 440 | virtual void setChannel( int ); |
417 | 441 | ||
418 | virtual QString name() const = 0; | 442 | virtual QString name() const = 0; |
419 | 443 | ||
420 | protected: | 444 | protected: |
421 | OWirelessNetworkInterface* _if; | 445 | OWirelessNetworkInterface* _if; |
422 | 446 | ||
423 | }; | 447 | }; |
424 | 448 | ||
425 | 449 | ||
426 | /*====================================================================================== | 450 | /*====================================================================================== |
427 | * OCiscoMonitoring | 451 | * OCiscoMonitoring |
428 | *======================================================================================*/ | 452 | *======================================================================================*/ |
429 | 453 | ||
430 | 454 | ||
431 | class OCiscoMonitoringInterface : public OMonitoringInterface | 455 | class OCiscoMonitoringInterface : public OMonitoringInterface |
432 | { | 456 | { |
433 | public: | 457 | public: |
434 | OCiscoMonitoringInterface( ONetworkInterface* ); | 458 | OCiscoMonitoringInterface( ONetworkInterface* ); |
435 | virtual ~OCiscoMonitoringInterface(); | 459 | virtual ~OCiscoMonitoringInterface(); |
436 | 460 | ||
437 | virtual void setEnabled( bool ); | 461 | virtual void setEnabled( bool ); |
438 | virtual QString name() const; | 462 | virtual QString name() const; |
439 | virtual void setChannel( int ); | 463 | virtual void setChannel( int ); |
440 | 464 | ||
441 | }; | 465 | }; |
442 | 466 | ||
443 | /*====================================================================================== | 467 | /*====================================================================================== |
444 | * OWlanNGMonitoringInterface | 468 | * OWlanNGMonitoringInterface |
445 | *======================================================================================*/ | 469 | *======================================================================================*/ |
446 | 470 | ||
447 | class OWlanNGMonitoringInterface : public OMonitoringInterface | 471 | class OWlanNGMonitoringInterface : public OMonitoringInterface |
448 | { | 472 | { |
449 | public: | 473 | public: |
450 | OWlanNGMonitoringInterface( ONetworkInterface* ); | 474 | OWlanNGMonitoringInterface( ONetworkInterface* ); |
451 | virtual ~OWlanNGMonitoringInterface(); | 475 | virtual ~OWlanNGMonitoringInterface(); |
452 | 476 | ||
453 | public: | 477 | public: |
454 | virtual void setEnabled( bool ); | 478 | virtual void setEnabled( bool ); |
455 | virtual QString name() const; | 479 | virtual QString name() const; |
456 | virtual void setChannel( int ); | 480 | virtual void setChannel( int ); |
457 | 481 | ||
458 | }; | 482 | }; |
459 | 483 | ||
460 | /*====================================================================================== | 484 | /*====================================================================================== |
461 | * OHostAPMonitoringInterface | 485 | * OHostAPMonitoringInterface |
462 | *======================================================================================*/ | 486 | *======================================================================================*/ |
463 | 487 | ||
464 | class OHostAPMonitoringInterface : public OMonitoringInterface | 488 | class OHostAPMonitoringInterface : public OMonitoringInterface |
465 | { | 489 | { |
466 | public: | 490 | public: |
467 | OHostAPMonitoringInterface( ONetworkInterface* ); | 491 | OHostAPMonitoringInterface( ONetworkInterface* ); |
468 | virtual ~OHostAPMonitoringInterface(); | 492 | virtual ~OHostAPMonitoringInterface(); |
469 | 493 | ||
470 | public: | 494 | public: |
471 | virtual void setEnabled( bool ); | 495 | virtual void setEnabled( bool ); |
472 | virtual QString name() const; | 496 | virtual QString name() const; |
473 | }; | 497 | }; |
474 | 498 | ||
475 | /*====================================================================================== | 499 | /*====================================================================================== |
476 | * OOrinocoMonitoringInterface | 500 | * OOrinocoMonitoringInterface |
477 | *======================================================================================*/ | 501 | *======================================================================================*/ |
478 | 502 | ||
479 | class OOrinocoMonitoringInterface : public OMonitoringInterface | 503 | class OOrinocoMonitoringInterface : public OMonitoringInterface |
480 | { | 504 | { |
481 | public: | 505 | public: |
482 | OOrinocoMonitoringInterface( ONetworkInterface* ); | 506 | OOrinocoMonitoringInterface( ONetworkInterface* ); |
483 | virtual ~OOrinocoMonitoringInterface(); | 507 | virtual ~OOrinocoMonitoringInterface(); |
484 | 508 | ||
485 | public: | 509 | public: |
486 | virtual void setChannel( int ); | 510 | virtual void setChannel( int ); |
487 | virtual void setEnabled( bool ); | 511 | virtual void setEnabled( bool ); |
488 | virtual QString name() const; | 512 | virtual QString name() const; |
489 | 513 | ||
490 | }; | 514 | }; |
491 | 515 | ||
492 | #endif // ONETWORK_H | 516 | #endif // ONETWORK_H |
493 | 517 | ||
diff --git a/libopie2/opienet/opcap.h b/libopie2/opienet/opcap.h index 83f7115..bee0ca0 100644 --- a/libopie2/opienet/opcap.h +++ b/libopie2/opienet/opcap.h | |||
@@ -1,569 +1,566 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) 2003 by the Wellenreiter team: | 3 | Copyright (C) 2003 by the Wellenreiter team: |
4 | Martin J. Muench <mjm@remote-exploit.org> | 4 | Martin J. Muench <mjm@remote-exploit.org> |
5 | Max Moser <mmo@remote-exploit.org | 5 | Max Moser <mmo@remote-exploit.org |
6 | Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 6 | Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
7 | =. | 7 | =. |
8 | .=l. | 8 | .=l. |
9 | .>+-= | 9 | .>+-= |
10 | _;:, .> :=|. This program is free software; you can | 10 | _;:, .> :=|. This program is free software; you can |
11 | .> <`_, > . <= redistribute it and/or modify it under | 11 | .> <`_, > . <= redistribute it and/or modify it under |
12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 12 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
13 | .="- .-=="i, .._ License as published by the Free Software | 13 | .="- .-=="i, .._ License as published by the Free Software |
14 | - . .-<_> .<> Foundation; either version 2 of the License, | 14 | - . .-<_> .<> Foundation; either version 2 of the License, |
15 | ._= =} : or (at your option) any later version. | 15 | ._= =} : or (at your option) any later version. |
16 | .%`+i> _;_. | 16 | .%`+i> _;_. |
17 | .i_,=:_. -<s. This program is distributed in the hope that | 17 | .i_,=:_. -<s. This program is distributed in the hope that |
18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 18 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
19 | : .. .:, . . . without even the implied warranty of | 19 | : .. .:, . . . without even the implied warranty of |
20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 20 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 21 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
22 | ..}^=.= = ; Library General Public License for more | 22 | ..}^=.= = ; Library General Public License for more |
23 | ++= -. .` .: details. | 23 | ++= -. .` .: details. |
24 | : = ...= . :.=- | 24 | : = ...= . :.=- |
25 | -. .:....=;==+<; You should have received a copy of the GNU | 25 | -. .:....=;==+<; You should have received a copy of the GNU |
26 | -_. . . )=. = Library General Public License along with | 26 | -_. . . )=. = Library General Public License along with |
27 | -- :-=` this library; see the file COPYING.LIB. | 27 | -- :-=` this library; see the file COPYING.LIB. |
28 | If not, write to the Free Software Foundation, | 28 | If not, write to the Free Software Foundation, |
29 | Inc., 59 Temple Place - Suite 330, | 29 | Inc., 59 Temple Place - Suite 330, |
30 | Boston, MA 02111-1307, USA. | 30 | Boston, MA 02111-1307, USA. |
31 | 31 | ||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #ifndef OPCAP_H | 34 | #ifndef OPCAP_H |
35 | #define OPCAP_H | 35 | #define OPCAP_H |
36 | 36 | ||
37 | /* LINUX */ | 37 | /* LINUX */ |
38 | extern "C" // work around a bpf/pcap conflict in recent headers | 38 | extern "C" // work around a bpf/pcap conflict in recent headers |
39 | { | 39 | { |
40 | #include <pcap.h> | 40 | #include <pcap.h> |
41 | } | 41 | } |
42 | #include <netinet/ether.h> | 42 | #include <netinet/ether.h> |
43 | #include <netinet/ip.h> | 43 | #include <netinet/ip.h> |
44 | #include <netinet/udp.h> | 44 | #include <netinet/udp.h> |
45 | #include <netinet/tcp.h> | 45 | #include <netinet/tcp.h> |
46 | #include <time.h> | 46 | #include <time.h> |
47 | 47 | ||
48 | /* QT */ | 48 | /* QT */ |
49 | #include <qevent.h> | 49 | #include <qevent.h> |
50 | #include <qfile.h> | 50 | #include <qfile.h> |
51 | #include <qhostaddress.h> | 51 | #include <qhostaddress.h> |
52 | #include <qobject.h> | 52 | #include <qobject.h> |
53 | #include <qstring.h> | 53 | #include <qstring.h> |
54 | #include <qmap.h> | 54 | #include <qmap.h> |
55 | 55 | ||
56 | /* OPIE */ | 56 | /* OPIE */ |
57 | #include <opie2/onetutils.h> | 57 | #include <opie2/onetutils.h> |
58 | #include "802_11_user.h" | 58 | #include "802_11_user.h" |
59 | 59 | ||
60 | /* TYPEDEFS */ | 60 | /* TYPEDEFS */ |
61 | typedef struct timeval timevalstruct; | 61 | typedef struct timeval timevalstruct; |
62 | typedef struct pcap_pkthdr packetheaderstruct; | 62 | typedef struct pcap_pkthdr packetheaderstruct; |
63 | 63 | ||
64 | /* FORWARDS */ | 64 | /* FORWARDS */ |
65 | class OPacketCapturer; | 65 | class OPacketCapturer; |
66 | class QSocketNotifier; | 66 | class QSocketNotifier; |
67 | 67 | ||
68 | /*====================================================================================== | 68 | /*====================================================================================== |
69 | * OPacket - A frame on the wire | 69 | * OPacket - A frame on the wire |
70 | *======================================================================================*/ | 70 | *======================================================================================*/ |
71 | 71 | ||
72 | /** @brief A class representing a data frame on the wire. | 72 | /** @brief A class representing a data frame on the wire. |
73 | * | 73 | * |
74 | * The whole family of the packet classes are used when capturing frames from a network. | 74 | * The whole family of the packet classes are used when capturing frames from a network. |
75 | * Most standard network protocols in use share a common architecture, which mostly is | 75 | * Most standard network protocols in use share a common architecture, which mostly is |
76 | * a packet header and then the packet payload. In layered architectures, each lower layer | 76 | * a packet header and then the packet payload. In layered architectures, each lower layer |
77 | * encapsulates data from its upper layer - that is it | 77 | * encapsulates data from its upper layer - that is it |
78 | * treats the data from its upper layer as payload and prepends an own header to the packet, | 78 | * treats the data from its upper layer as payload and prepends an own header to the packet, |
79 | * which - again - is treated as the payload for the layer below. The figure below is an | 79 | * which - again - is treated as the payload for the layer below. The figure below is an |
80 | * example for how such a data frame is composed out of packets, e.g. when sending a mail. | 80 | * example for how such a data frame is composed out of packets, e.g. when sending a mail. |
81 | * | 81 | * |
82 | * <pre> | 82 | * <pre> |
83 | * | User Data | == Mail Data | 83 | * | User Data | == Mail Data |
84 | * | SMTP Header | User Data | == SMTP | 84 | * | SMTP Header | User Data | == SMTP |
85 | * | TCP Header | SMTP Header | User Data | == TCP | 85 | * | TCP Header | SMTP Header | User Data | == TCP |
86 | * | IP Header | TCP Header | SMTP Header | User Data | == IP | 86 | * | IP Header | TCP Header | SMTP Header | User Data | == IP |
87 | * | MAC Header | IP Header | TCP Header | SMTP Header | User Data | == MAC | 87 | * | MAC Header | IP Header | TCP Header | SMTP Header | User Data | == MAC |
88 | * | 88 | * |
89 | * </pre> | 89 | * </pre> |
90 | * | 90 | * |
91 | * The example is trimmed for simplicity, because the MAC (Medium Access Control) layer | 91 | * The example is trimmed for simplicity, because the MAC (Medium Access Control) layer |
92 | * also contains a few more levels of encapsulation. | 92 | * also contains a few more levels of encapsulation. |
93 | * Since the type of the payload is more or less independent from the encapsulating protocol, | 93 | * Since the type of the payload is more or less independent from the encapsulating protocol, |
94 | * the header must be inspected before attempting to decode the payload. Hence, the | 94 | * the header must be inspected before attempting to decode the payload. Hence, the |
95 | * encapsulation level varies and can't be deduced without actually looking into the packets. | 95 | * encapsulation level varies and can't be deduced without actually looking into the packets. |
96 | * | 96 | * |
97 | * For actually working with captured frames, it's useful to identify the packets via names and | 97 | * For actually working with captured frames, it's useful to identify the packets via names and |
98 | * insert them into a parent/child - relationship based on the encapsulation. This is why | 98 | * insert them into a parent/child - relationship based on the encapsulation. This is why |
99 | * all packet classes derive from QObject. The amount of overhead caused by the QObject is | 99 | * all packet classes derive from QObject. The amount of overhead caused by the QObject is |
100 | * not a problem in this case, because we're talking about a theoratical maximum of about | 100 | * not a problem in this case, because we're talking about a theoratical maximum of about |
101 | * 10 packets per captured frame. We need to stuff them into a searchable list anyway and the | 101 | * 10 packets per captured frame. We need to stuff them into a searchable list anyway and the |
102 | * QObject also cares about destroying the sub-, (child-) packets. | 102 | * QObject also cares about destroying the sub-, (child-) packets. |
103 | * | 103 | * |
104 | * This enables us to perform a simple look for packets of a certain type: | 104 | * This enables us to perform a simple look for packets of a certain type: |
105 | * @code | 105 | * @code |
106 | * OPacketCapturer* pcap = new OPacketCapturer(); | 106 | * OPacketCapturer* pcap = new OPacketCapturer(); |
107 | * pcap->open( "eth0" ); | 107 | * pcap->open( "eth0" ); |
108 | * OPacket* p = pcap->next(); | 108 | * OPacket* p = pcap->next(); |
109 | * OIPPacket* ip = (OIPPacket*) p->child( "IP" ); // returns 0, if no such child exists | 109 | * OIPPacket* ip = (OIPPacket*) p->child( "IP" ); // returns 0, if no such child exists |
110 | * odebug << "got ip packet from " << ip->fromIPAddress().toString() << " to " << ip->toIPAddress().toString() << oendl; | 110 | * odebug << "got ip packet from " << ip->fromIPAddress().toString() << " to " << ip->toIPAddress().toString() << oendl; |
111 | * | 111 | * |
112 | */ | 112 | */ |
113 | 113 | ||
114 | class OPacket : public QObject | 114 | class OPacket : public QObject |
115 | { | 115 | { |
116 | Q_OBJECT | 116 | Q_OBJECT |
117 | 117 | ||
118 | public: | 118 | public: |
119 | OPacket( int datalink, packetheaderstruct, const unsigned char*, QObject* parent ); | 119 | OPacket( int datalink, packetheaderstruct, const unsigned char*, QObject* parent ); |
120 | virtual ~OPacket(); | 120 | virtual ~OPacket(); |
121 | 121 | ||
122 | timevalstruct timeval() const; | 122 | timevalstruct timeval() const; |
123 | 123 | ||
124 | int caplen() const; | 124 | int caplen() const; |
125 | int len() const; | 125 | int len() const; |
126 | QString dump( int = 32 ) const; | 126 | QString dump( int = 32 ) const; |
127 | 127 | ||
128 | void updateStats( QMap<QString,int>&, QObjectList* ); | 128 | void updateStats( QMap<QString,int>&, QObjectList* ); |
129 | 129 | ||
130 | private: | 130 | private: |
131 | const packetheaderstruct _hdr; // pcap packet header | 131 | const packetheaderstruct _hdr; // pcap packet header |
132 | const unsigned char* _data; // pcap packet data | 132 | const unsigned char* _data; // pcap packet data |
133 | const unsigned char* _end; // end of pcap packet data | 133 | const unsigned char* _end; // end of pcap packet data |
134 | }; | 134 | }; |
135 | 135 | ||
136 | /*====================================================================================== | 136 | /*====================================================================================== |
137 | * OEthernetPacket - DLT_EN10MB frame | 137 | * OEthernetPacket - DLT_EN10MB frame |
138 | *======================================================================================*/ | 138 | *======================================================================================*/ |
139 | 139 | ||
140 | class OEthernetPacket : public QObject | 140 | class OEthernetPacket : public QObject |
141 | { | 141 | { |
142 | Q_OBJECT | 142 | Q_OBJECT |
143 | 143 | ||
144 | public: | 144 | public: |
145 | OEthernetPacket( const unsigned char*, const struct ether_header*, QObject* parent = 0 ); | 145 | OEthernetPacket( const unsigned char*, const struct ether_header*, QObject* parent = 0 ); |
146 | virtual ~OEthernetPacket(); | 146 | virtual ~OEthernetPacket(); |
147 | 147 | ||
148 | OMacAddress sourceAddress() const; | 148 | OMacAddress sourceAddress() const; |
149 | OMacAddress destinationAddress() const; | 149 | OMacAddress destinationAddress() const; |
150 | int type() const; | 150 | int type() const; |
151 | 151 | ||
152 | private: | 152 | private: |
153 | const struct ether_header* _ether; | 153 | const struct ether_header* _ether; |
154 | }; | 154 | }; |
155 | 155 | ||
156 | |||
157 | /*====================================================================================== | 156 | /*====================================================================================== |
158 | * OPrismHeaderPacket - DLT_PRISM_HEADER frame | 157 | * OPrismHeaderPacket - DLT_PRISM_HEADER frame |
159 | *======================================================================================*/ | 158 | *======================================================================================*/ |
160 | 159 | ||
161 | class OPrismHeaderPacket : public QObject | 160 | class OPrismHeaderPacket : public QObject |
162 | { | 161 | { |
163 | Q_OBJECT | 162 | Q_OBJECT |
164 | 163 | ||
165 | public: | 164 | public: |
166 | OPrismHeaderPacket( const unsigned char*, const struct prism_hdr*, QObject* parent = 0 ); | 165 | OPrismHeaderPacket( const unsigned char*, const struct prism_hdr*, QObject* parent = 0 ); |
167 | virtual ~OPrismHeaderPacket(); | 166 | virtual ~OPrismHeaderPacket(); |
168 | 167 | ||
169 | unsigned int signalStrength() const; | 168 | unsigned int signalStrength() const; |
170 | 169 | ||
171 | private: | 170 | private: |
172 | const struct prism_hdr* _header; | 171 | const struct prism_hdr* _header; |
173 | }; | 172 | }; |
174 | 173 | ||
175 | |||
176 | /*====================================================================================== | 174 | /*====================================================================================== |
177 | * OWaveLanPacket - DLT_IEEE802_11 frame | 175 | * OWaveLanPacket - DLT_IEEE802_11 frame |
178 | *======================================================================================*/ | 176 | *======================================================================================*/ |
179 | 177 | ||
180 | class OWaveLanPacket : public QObject | 178 | class OWaveLanPacket : public QObject |
181 | { | 179 | { |
182 | Q_OBJECT | 180 | Q_OBJECT |
183 | 181 | ||
184 | public: | 182 | public: |
185 | OWaveLanPacket( const unsigned char*, const struct ieee_802_11_header*, QObject* parent = 0 ); | 183 | OWaveLanPacket( const unsigned char*, const struct ieee_802_11_header*, QObject* parent = 0 ); |
186 | virtual ~OWaveLanPacket(); | 184 | virtual ~OWaveLanPacket(); |
187 | 185 | ||
188 | int duration() const; | 186 | int duration() const; |
189 | bool fromDS() const; | 187 | bool fromDS() const; |
190 | bool toDS() const; | 188 | bool toDS() const; |
191 | virtual OMacAddress macAddress1() const; | 189 | virtual OMacAddress macAddress1() const; |
192 | virtual OMacAddress macAddress2() const; | 190 | virtual OMacAddress macAddress2() const; |
193 | virtual OMacAddress macAddress3() const; | 191 | virtual OMacAddress macAddress3() const; |
194 | virtual OMacAddress macAddress4() const; | 192 | virtual OMacAddress macAddress4() const; |
195 | bool usesPowerManagement() const; | 193 | bool usesPowerManagement() const; |
196 | int type() const; | 194 | int type() const; |
197 | int subType() const; | 195 | int subType() const; |
198 | int version() const; | 196 | int version() const; |
199 | bool usesWep() const; | 197 | bool usesWep() const; |
200 | 198 | ||
201 | private: | 199 | private: |
202 | const struct ieee_802_11_header* _wlanhdr; | 200 | const struct ieee_802_11_header* _wlanhdr; |
203 | }; | 201 | }; |
204 | 202 | ||
205 | 203 | ||
206 | /*====================================================================================== | 204 | /*====================================================================================== |
207 | * OWaveLanManagementPacket - type: management (T_MGMT) | 205 | * OWaveLanManagementPacket - type: management (T_MGMT) |
208 | *======================================================================================*/ | 206 | *======================================================================================*/ |
209 | 207 | ||
210 | class OWaveLanManagementPacket : public QObject | 208 | class OWaveLanManagementPacket : public QObject |
211 | { | 209 | { |
212 | Q_OBJECT | 210 | Q_OBJECT |
213 | 211 | ||
214 | public: | 212 | public: |
215 | OWaveLanManagementPacket( const unsigned char*, const struct ieee_802_11_mgmt_header*, OWaveLanPacket* parent = 0 ); | 213 | OWaveLanManagementPacket( const unsigned char*, const struct ieee_802_11_mgmt_header*, OWaveLanPacket* parent = 0 ); |
216 | virtual ~OWaveLanManagementPacket(); | 214 | virtual ~OWaveLanManagementPacket(); |
217 | 215 | ||
218 | QString managementType() const; | 216 | QString managementType() const; |
219 | 217 | ||
220 | int beaconInterval() const; | 218 | int beaconInterval() const; |
221 | int capabilities() const; // generic | 219 | int capabilities() const; // generic |
222 | 220 | ||
223 | bool canESS() const; | 221 | bool canESS() const; |
224 | bool canIBSS() const; | 222 | bool canIBSS() const; |
225 | bool canCFP() const; | 223 | bool canCFP() const; |
226 | bool canCFP_REQ() const; | 224 | bool canCFP_REQ() const; |
227 | bool canPrivacy() const; | 225 | bool canPrivacy() const; |
228 | 226 | ||
229 | private: | 227 | private: |
230 | const struct ieee_802_11_mgmt_header* _header; | 228 | const struct ieee_802_11_mgmt_header* _header; |
231 | const struct ieee_802_11_mgmt_body* _body; | 229 | const struct ieee_802_11_mgmt_body* _body; |
232 | }; | 230 | }; |
233 | 231 | ||
234 | 232 | ||
235 | /*====================================================================================== | 233 | /*====================================================================================== |
236 | * OWaveLanManagementSSID | 234 | * OWaveLanManagementSSID |
237 | *======================================================================================*/ | 235 | *======================================================================================*/ |
238 | 236 | ||
239 | class OWaveLanManagementSSID : public QObject | 237 | class OWaveLanManagementSSID : public QObject |
240 | { | 238 | { |
241 | Q_OBJECT | 239 | Q_OBJECT |
242 | 240 | ||
243 | public: | 241 | public: |
244 | OWaveLanManagementSSID( const unsigned char*, const struct ssid_t*, QObject* parent = 0 ); | 242 | OWaveLanManagementSSID( const unsigned char*, const struct ssid_t*, QObject* parent = 0 ); |
245 | virtual ~OWaveLanManagementSSID(); | 243 | virtual ~OWaveLanManagementSSID(); |
246 | 244 | ||
247 | QString ID() const; | 245 | QString ID() const; |
248 | 246 | ||
249 | private: | 247 | private: |
250 | const struct ssid_t* _data; | 248 | const struct ssid_t* _data; |
251 | }; | 249 | }; |
252 | 250 | ||
253 | /*====================================================================================== | 251 | /*====================================================================================== |
254 | * OWaveLanManagementRates | 252 | * OWaveLanManagementRates |
255 | *======================================================================================*/ | 253 | *======================================================================================*/ |
256 | 254 | ||
257 | class OWaveLanManagementRates : public QObject | 255 | class OWaveLanManagementRates : public QObject |
258 | { | 256 | { |
259 | Q_OBJECT | 257 | Q_OBJECT |
260 | 258 | ||
261 | public: | 259 | public: |
262 | OWaveLanManagementRates( const unsigned char*, const struct rates_t*, QObject* parent = 0 ); | 260 | OWaveLanManagementRates( const unsigned char*, const struct rates_t*, QObject* parent = 0 ); |
263 | virtual ~OWaveLanManagementRates(); | 261 | virtual ~OWaveLanManagementRates(); |
264 | 262 | ||
265 | private: | 263 | private: |
266 | const struct rates_t* _data; | 264 | const struct rates_t* _data; |
267 | }; | 265 | }; |
268 | 266 | ||
269 | /*====================================================================================== | 267 | /*====================================================================================== |
270 | * OWaveLanManagementCF | 268 | * OWaveLanManagementCF |
271 | *======================================================================================*/ | 269 | *======================================================================================*/ |
272 | 270 | ||
273 | class OWaveLanManagementCF : public QObject | 271 | class OWaveLanManagementCF : public QObject |
274 | { | 272 | { |
275 | Q_OBJECT | 273 | Q_OBJECT |
276 | 274 | ||
277 | public: | 275 | public: |
278 | OWaveLanManagementCF( const unsigned char*, const struct cf_t*, QObject* parent = 0 ); | 276 | OWaveLanManagementCF( const unsigned char*, const struct cf_t*, QObject* parent = 0 ); |
279 | virtual ~OWaveLanManagementCF(); | 277 | virtual ~OWaveLanManagementCF(); |
280 | 278 | ||
281 | private: | 279 | private: |
282 | const struct cf_t* _data; | 280 | const struct cf_t* _data; |
283 | }; | 281 | }; |
284 | 282 | ||
285 | /*====================================================================================== | 283 | /*====================================================================================== |
286 | * OWaveLanManagementFH | 284 | * OWaveLanManagementFH |
287 | *======================================================================================*/ | 285 | *======================================================================================*/ |
288 | 286 | ||
289 | class OWaveLanManagementFH : public QObject | 287 | class OWaveLanManagementFH : public QObject |
290 | { | 288 | { |
291 | Q_OBJECT | 289 | Q_OBJECT |
292 | 290 | ||
293 | public: | 291 | public: |
294 | OWaveLanManagementFH( const unsigned char*, const struct fh_t*, QObject* parent = 0 ); | 292 | OWaveLanManagementFH( const unsigned char*, const struct fh_t*, QObject* parent = 0 ); |
295 | virtual ~OWaveLanManagementFH(); | 293 | virtual ~OWaveLanManagementFH(); |
296 | 294 | ||
297 | private: | 295 | private: |
298 | const struct fh_t* _data; | 296 | const struct fh_t* _data; |
299 | }; | 297 | }; |
300 | 298 | ||
301 | /*====================================================================================== | 299 | /*====================================================================================== |
302 | * OWaveLanManagementDS | 300 | * OWaveLanManagementDS |
303 | *======================================================================================*/ | 301 | *======================================================================================*/ |
304 | 302 | ||
305 | class OWaveLanManagementDS : public QObject | 303 | class OWaveLanManagementDS : public QObject |
306 | { | 304 | { |
307 | Q_OBJECT | 305 | Q_OBJECT |
308 | 306 | ||
309 | public: | 307 | public: |
310 | OWaveLanManagementDS( const unsigned char*, const struct ds_t*, QObject* parent = 0 ); | 308 | OWaveLanManagementDS( const unsigned char*, const struct ds_t*, QObject* parent = 0 ); |
311 | virtual ~OWaveLanManagementDS(); | 309 | virtual ~OWaveLanManagementDS(); |
312 | 310 | ||
313 | int channel() const; | 311 | int channel() const; |
314 | 312 | ||
315 | private: | 313 | private: |
316 | const struct ds_t* _data; | 314 | const struct ds_t* _data; |
317 | }; | 315 | }; |
318 | 316 | ||
319 | /*====================================================================================== | 317 | /*====================================================================================== |
320 | * OWaveLanManagementTim | 318 | * OWaveLanManagementTim |
321 | *======================================================================================*/ | 319 | *======================================================================================*/ |
322 | 320 | ||
323 | class OWaveLanManagementTim : public QObject | 321 | class OWaveLanManagementTim : public QObject |
324 | { | 322 | { |
325 | Q_OBJECT | 323 | Q_OBJECT |
326 | 324 | ||
327 | public: | 325 | public: |
328 | OWaveLanManagementTim( const unsigned char*, const struct tim_t*, QObject* parent = 0 ); | 326 | OWaveLanManagementTim( const unsigned char*, const struct tim_t*, QObject* parent = 0 ); |
329 | virtual ~OWaveLanManagementTim(); | 327 | virtual ~OWaveLanManagementTim(); |
330 | 328 | ||
331 | private: | 329 | private: |
332 | const struct tim_t* _data; | 330 | const struct tim_t* _data; |
333 | }; | 331 | }; |
334 | 332 | ||
335 | /*====================================================================================== | 333 | /*====================================================================================== |
336 | * OWaveLanManagementIBSS | 334 | * OWaveLanManagementIBSS |
337 | *======================================================================================*/ | 335 | *======================================================================================*/ |
338 | 336 | ||
339 | class OWaveLanManagementIBSS : public QObject | 337 | class OWaveLanManagementIBSS : public QObject |
340 | { | 338 | { |
341 | Q_OBJECT | 339 | Q_OBJECT |
342 | 340 | ||
343 | public: | 341 | public: |
344 | OWaveLanManagementIBSS( const unsigned char*, const struct ibss_t*, QObject* parent = 0 ); | 342 | OWaveLanManagementIBSS( const unsigned char*, const struct ibss_t*, QObject* parent = 0 ); |
345 | virtual ~OWaveLanManagementIBSS(); | 343 | virtual ~OWaveLanManagementIBSS(); |
346 | 344 | ||
347 | private: | 345 | private: |
348 | const struct ibss_t* _data; | 346 | const struct ibss_t* _data; |
349 | }; | 347 | }; |
350 | 348 | ||
351 | /*====================================================================================== | 349 | /*====================================================================================== |
352 | * OWaveLanManagementChallenge | 350 | * OWaveLanManagementChallenge |
353 | *======================================================================================*/ | 351 | *======================================================================================*/ |
354 | 352 | ||
355 | // Qobject do we need that?? | ||
356 | class OWaveLanManagementChallenge : public QObject | 353 | class OWaveLanManagementChallenge : public QObject |
357 | { | 354 | { |
358 | Q_OBJECT | 355 | Q_OBJECT |
359 | 356 | ||
360 | public: | 357 | public: |
361 | OWaveLanManagementChallenge( const unsigned char*, const struct challenge_t*, QObject* parent = 0 ); | 358 | OWaveLanManagementChallenge( const unsigned char*, const struct challenge_t*, QObject* parent = 0 ); |
362 | virtual ~OWaveLanManagementChallenge(); | 359 | virtual ~OWaveLanManagementChallenge(); |
363 | 360 | ||
364 | private: | 361 | private: |
365 | const struct challenge_t* _data; | 362 | const struct challenge_t* _data; |
366 | }; | 363 | }; |
367 | 364 | ||
368 | /*====================================================================================== | 365 | /*====================================================================================== |
369 | * OWaveLanDataPacket - type: data (T_DATA) | 366 | * OWaveLanDataPacket - type: data (T_DATA) |
370 | *======================================================================================*/ | 367 | *======================================================================================*/ |
371 | // Qobject? | 368 | |
372 | class OWaveLanDataPacket : public QObject | 369 | class OWaveLanDataPacket : public QObject |
373 | { | 370 | { |
374 | Q_OBJECT | 371 | Q_OBJECT |
375 | 372 | ||
376 | public: | 373 | public: |
377 | OWaveLanDataPacket( const unsigned char*, const struct ieee_802_11_data_header*, OWaveLanPacket* parent = 0 ); | 374 | OWaveLanDataPacket( const unsigned char*, const struct ieee_802_11_data_header*, OWaveLanPacket* parent = 0 ); |
378 | virtual ~OWaveLanDataPacket(); | 375 | virtual ~OWaveLanDataPacket(); |
379 | 376 | ||
380 | private: | 377 | private: |
381 | const struct ieee_802_11_data_header* _header; | 378 | const struct ieee_802_11_data_header* _header; |
382 | }; | 379 | }; |
383 | 380 | ||
384 | /*====================================================================================== | 381 | /*====================================================================================== |
385 | * OWaveLanControlPacket - type: control (T_CTRL) | 382 | * OWaveLanControlPacket - type: control (T_CTRL) |
386 | *======================================================================================*/ | 383 | *======================================================================================*/ |
387 | 384 | ||
388 | class OWaveLanControlPacket : public QObject | 385 | class OWaveLanControlPacket : public QObject |
389 | { | 386 | { |
390 | Q_OBJECT | 387 | Q_OBJECT |
391 | 388 | ||
392 | public: | 389 | public: |
393 | OWaveLanControlPacket( const unsigned char*, const struct ieee_802_11_control_header*, OWaveLanPacket* parent = 0 ); | 390 | OWaveLanControlPacket( const unsigned char*, const struct ieee_802_11_control_header*, OWaveLanPacket* parent = 0 ); |
394 | virtual ~OWaveLanControlPacket(); | 391 | virtual ~OWaveLanControlPacket(); |
395 | 392 | ||
396 | private: | 393 | private: |
397 | const struct ieee_802_11_control_header* _header; | 394 | const struct ieee_802_11_control_header* _header; |
398 | }; | 395 | }; |
399 | 396 | ||
400 | /*====================================================================================== | 397 | /*====================================================================================== |
401 | * OLLCPacket - IEEE 802.2 Link Level Control | 398 | * OLLCPacket - IEEE 802.2 Link Level Control |
402 | *======================================================================================*/ | 399 | *======================================================================================*/ |
403 | 400 | ||
404 | class OLLCPacket : public QObject | 401 | class OLLCPacket : public QObject |
405 | { | 402 | { |
406 | Q_OBJECT | 403 | Q_OBJECT |
407 | 404 | ||
408 | public: | 405 | public: |
409 | OLLCPacket( const unsigned char*, const struct ieee_802_11_802_2_header* data, QObject* parent = 0 ); | 406 | OLLCPacket( const unsigned char*, const struct ieee_802_11_802_2_header* data, QObject* parent = 0 ); |
410 | virtual ~OLLCPacket(); | 407 | virtual ~OLLCPacket(); |
411 | 408 | ||
412 | private: | 409 | private: |
413 | const struct ieee_802_11_802_2_header* _header; | 410 | const struct ieee_802_11_802_2_header* _header; |
414 | }; | 411 | }; |
415 | 412 | ||
416 | /*====================================================================================== | 413 | /*====================================================================================== |
417 | * OIPPacket | 414 | * OIPPacket |
418 | *======================================================================================*/ | 415 | *======================================================================================*/ |
419 | 416 | ||
420 | class OIPPacket : public QObject | 417 | class OIPPacket : public QObject |
421 | { | 418 | { |
422 | Q_OBJECT | 419 | Q_OBJECT |
423 | 420 | ||
424 | public: | 421 | public: |
425 | OIPPacket( const unsigned char*, const struct iphdr*, QObject* parent = 0 ); | 422 | OIPPacket( const unsigned char*, const struct iphdr*, QObject* parent = 0 ); |
426 | virtual ~OIPPacket(); | 423 | virtual ~OIPPacket(); |
427 | 424 | ||
428 | QHostAddress fromIPAddress() const; | 425 | QHostAddress fromIPAddress() const; |
429 | QHostAddress toIPAddress() const; | 426 | QHostAddress toIPAddress() const; |
430 | 427 | ||
431 | int tos() const; | 428 | int tos() const; |
432 | int len() const; | 429 | int len() const; |
433 | int id() const; | 430 | int id() const; |
434 | int offset() const; | 431 | int offset() const; |
435 | int ttl() const; | 432 | int ttl() const; |
436 | int protocol() const; | 433 | int protocol() const; |
437 | int checksum() const; | 434 | int checksum() const; |
438 | 435 | ||
439 | private: | 436 | private: |
440 | const struct iphdr* _iphdr; | 437 | const struct iphdr* _iphdr; |
441 | }; | 438 | }; |
442 | 439 | ||
443 | /*====================================================================================== | 440 | /*====================================================================================== |
444 | * OUDPPacket | 441 | * OUDPPacket |
445 | *======================================================================================*/ | 442 | *======================================================================================*/ |
446 | 443 | ||
447 | class OUDPPacket : public QObject | 444 | class OUDPPacket : public QObject |
448 | { | 445 | { |
449 | Q_OBJECT | 446 | Q_OBJECT |
450 | 447 | ||
451 | public: | 448 | public: |
452 | OUDPPacket( const unsigned char*, const struct udphdr*, QObject* parent = 0 ); | 449 | OUDPPacket( const unsigned char*, const struct udphdr*, QObject* parent = 0 ); |
453 | virtual ~OUDPPacket(); | 450 | virtual ~OUDPPacket(); |
454 | 451 | ||
455 | int fromPort() const; | 452 | int fromPort() const; |
456 | int toPort() const; | 453 | int toPort() const; |
457 | 454 | ||
458 | private: | 455 | private: |
459 | const struct udphdr* _udphdr; | 456 | const struct udphdr* _udphdr; |
460 | }; | 457 | }; |
461 | 458 | ||
462 | /*====================================================================================== | 459 | /*====================================================================================== |
463 | * OTCPPacket | 460 | * OTCPPacket |
464 | *======================================================================================*/ | 461 | *======================================================================================*/ |
465 | 462 | ||
466 | class OTCPPacket : public QObject | 463 | class OTCPPacket : public QObject |
467 | { | 464 | { |
468 | Q_OBJECT | 465 | Q_OBJECT |
469 | 466 | ||
470 | public: | 467 | public: |
471 | OTCPPacket( const unsigned char*, const struct tcphdr*, QObject* parent = 0 ); | 468 | OTCPPacket( const unsigned char*, const struct tcphdr*, QObject* parent = 0 ); |
472 | virtual ~OTCPPacket(); | 469 | virtual ~OTCPPacket(); |
473 | 470 | ||
474 | int fromPort() const; | 471 | int fromPort() const; |
475 | int toPort() const; | 472 | int toPort() const; |
476 | 473 | ||
477 | private: | 474 | private: |
478 | const struct tcphdr* _tcphdr; | 475 | const struct tcphdr* _tcphdr; |
479 | }; | 476 | }; |
480 | 477 | ||
481 | 478 | ||
482 | /*====================================================================================== | 479 | /*====================================================================================== |
483 | * OPacketCapturer | 480 | * OPacketCapturer |
484 | *======================================================================================*/ | 481 | *======================================================================================*/ |
485 | 482 | ||
486 | /** | 483 | /** |
487 | * @brief A class based wrapper for network packet capturing. | 484 | * @brief A class based wrapper for network packet capturing. |
488 | * | 485 | * |
489 | * This class is the base of a high-level interface to the well known packet capturing | 486 | * This class is the base of a high-level interface to the well known packet capturing |
490 | * library libpcap. ... | 487 | * library libpcap. ... |
491 | */ | 488 | */ |
492 | class OPacketCapturer : public QObject | 489 | class OPacketCapturer : public QObject |
493 | { | 490 | { |
494 | Q_OBJECT | 491 | Q_OBJECT |
495 | 492 | ||
496 | public: | 493 | public: |
497 | /** | 494 | /** |
498 | * Constructor. | 495 | * Constructor. |
499 | */ | 496 | */ |
500 | OPacketCapturer( QObject* parent = 0, const char* name = 0 ); | 497 | OPacketCapturer( QObject* parent = 0, const char* name = 0 ); |
501 | /** | 498 | /** |
502 | * Destructor. | 499 | * Destructor. |
503 | */ | 500 | */ |
504 | ~OPacketCapturer(); | 501 | ~OPacketCapturer(); |
505 | /** | 502 | /** |
506 | * Setting the packet capturer to use blocking IO calls can be useful when | 503 | * Setting the packet capturer to use blocking IO calls can be useful when |
507 | * not using the socket notifier, e.g. without an application object. | 504 | * not using the socket notifier, e.g. without an application object. |
508 | */ | 505 | */ |
509 | void setBlocking( bool ); | 506 | void setBlocking( bool ); |
510 | /** | 507 | /** |
511 | * @returns true if the packet capturer uses blocking IO calls. | 508 | * @returns true if the packet capturer uses blocking IO calls. |
512 | */ | 509 | */ |
513 | bool blocking() const; | 510 | bool blocking() const; |
514 | /** | 511 | /** |
515 | * Closes the packet capturer. This is automatically done in the destructor. | 512 | * Closes the packet capturer. This is automatically done in the destructor. |
516 | */ | 513 | */ |
517 | void close(); | 514 | void close(); |
518 | /** | 515 | /** |
519 | * @returns the data link type. | 516 | * @returns the data link type. |
520 | * @see <pcap.h> for possible values. | 517 | * @see <pcap.h> for possible values. |
521 | */ | 518 | */ |
522 | int dataLink() const; | 519 | int dataLink() const; |
523 | /** | 520 | /** |
524 | * @returns the filedescriptor of the packet capturer. This is only useful, if | 521 | * @returns the filedescriptor of the packet capturer. This is only useful, if |
525 | * not using the socket notifier, e.g. without an application object. | 522 | * not using the socket notifier, e.g. without an application object. |
526 | */ | 523 | */ |
527 | int fileno() const; | 524 | int fileno() const; |
528 | /** | 525 | /** |
529 | * @returns the next @ref OPacket from the packet capturer. | 526 | * @returns the next @ref OPacket from the packet capturer. |
530 | * @note If blocking mode is true then this call might block. | 527 | * @note If blocking mode is true then this call might block. |
531 | */ | 528 | */ |
532 | OPacket* next(); | 529 | OPacket* next(); |
533 | /** | 530 | /** |
534 | * Open the packet capturer to capture packets in live-mode from @a interface. | 531 | * Open the packet capturer to capture packets in live-mode from @a interface. |
535 | * If a @a filename is given, all captured packets are output to a tcpdump-compatible capture file. | 532 | * If a @a filename is given, all captured packets are output to a tcpdump-compatible capture file. |
536 | */ | 533 | */ |
537 | bool open( const QString& interface, const QString& filename = QString::null ); | 534 | bool open( const QString& interface, const QString& filename = QString::null ); |
538 | /** | 535 | /** |
539 | * Open the packet capturer to capture packets in offline-mode from @a file. | 536 | * Open the packet capturer to capture packets in offline-mode from @a file. |
540 | */ | 537 | */ |
541 | bool open( const QFile& file ); | 538 | bool open( const QFile& file ); |
542 | /** | 539 | /** |
543 | * @returns true if the packet capturer is open | 540 | * @returns true if the packet capturer is open |
544 | */ | 541 | */ |
545 | bool isOpen() const; | 542 | bool isOpen() const; |
546 | 543 | ||
547 | const QMap<QString,int>& statistics() const; | 544 | const QMap<QString,int>& statistics() const; |
548 | 545 | ||
549 | signals: | 546 | signals: |
550 | /** | 547 | /** |
551 | * This signal is emitted, when a packet has been received. | 548 | * This signal is emitted, when a packet has been received. |
552 | */ | 549 | */ |
553 | void receivedPacket( OPacket* ); | 550 | void receivedPacket( OPacket* ); |
554 | 551 | ||
555 | protected slots: | 552 | protected slots: |
556 | void readyToReceive(); | 553 | void readyToReceive(); |
557 | 554 | ||
558 | protected: | 555 | protected: |
559 | QString _name; // devicename | 556 | QString _name; // devicename |
560 | bool _open; // check this before doing pcap calls | 557 | bool _open; // check this before doing pcap calls |
561 | pcap_t* _pch; // pcap library handle | 558 | pcap_t* _pch; // pcap library handle |
562 | pcap_dumper_t* _pcd; // pcap dumper handle | 559 | pcap_dumper_t* _pcd; // pcap dumper handle |
563 | QSocketNotifier* _sn; // socket notifier for main loop | 560 | QSocketNotifier* _sn; // socket notifier for main loop |
564 | mutable char _errbuf[PCAP_ERRBUF_SIZE]; // holds error strings from libpcap | 561 | mutable char _errbuf[PCAP_ERRBUF_SIZE]; // holds error strings from libpcap |
565 | QMap<QString, int> _stats; // statistics; | 562 | QMap<QString, int> _stats; // statistics; |
566 | }; | 563 | }; |
567 | 564 | ||
568 | #endif // OPCAP_H | 565 | #endif // OPCAP_H |
569 | 566 | ||
diff --git a/libopie2/opieui/opieui.pro b/libopie2/opieui/opieui.pro index 996e1a0..aa85955 100644 --- a/libopie2/opieui/opieui.pro +++ b/libopie2/opieui/opieui.pro | |||
@@ -1,48 +1,48 @@ | |||
1 | TEMPLATE = lib | 1 | TEMPLATE = lib |
2 | CONFIG += qt warn_on debug | 2 | CONFIG += qt warn_on debug |
3 | DESTDIR = $(OPIEDIR)/lib | 3 | DESTDIR = $(OPIEDIR)/lib |
4 | HEADERS = ocompletionbox.h \ | 4 | HEADERS = ocompletionbox.h \ |
5 | ocombobox.h \ | 5 | ocombobox.h \ |
6 | oeditlistbox.h \ | 6 | oeditlistbox.h \ |
7 | olineedit.h \ | 7 | olineedit.h \ |
8 | olistview.h \ | 8 | olistview.h \ |
9 | oimageeffect.h \ | 9 | oimageeffect.h \ |
10 | opixmapeffect.h \ | 10 | opixmapeffect.h \ |
11 | opopupmenu.h \ | 11 | opopupmenu.h \ |
12 | opixmapprovider.h \ | 12 | opixmapprovider.h \ |
13 | oselector.h \ | 13 | oselector.h \ |
14 | oversatileview.h \ | 14 | oversatileview.h \ |
15 | oversatileviewitem.h \ | 15 | oversatileviewitem.h \ |
16 | #ojanuswidget.h \ | 16 | #ojanuswidget.h \ |
17 | odialog.h \ | 17 | odialog.h \ |
18 | oseparator.h \ | 18 | oseparator.h \ |
19 | otaskbarapplet.h | 19 | otaskbarapplet.h |
20 | 20 | ||
21 | SOURCES = ocompletionbox.cpp \ | 21 | SOURCES = ocompletionbox.cpp \ |
22 | ocombobox.cpp \ | 22 | ocombobox.cpp \ |
23 | oeditlistbox.cpp \ | 23 | oeditlistbox.cpp \ |
24 | olineedit.cpp \ | 24 | olineedit.cpp \ |
25 | olistview.cpp \ | 25 | olistview.cpp \ |
26 | oimageeffect.cpp \ | 26 | oimageeffect.cpp \ |
27 | opixmapeffect.cpp \ | 27 | opixmapeffect.cpp \ |
28 | opopupmenu.cpp \ | 28 | opopupmenu.cpp \ |
29 | opixmapprovider.cpp \ | 29 | opixmapprovider.cpp \ |
30 | oselector.cpp \ | 30 | oselector.cpp \ |
31 | oversatileview.cpp \ | 31 | oversatileview.cpp \ |
32 | oversatileviewitem.cpp \ | 32 | oversatileviewitem.cpp \ |
33 | #ojanuswidget.cpp \ | 33 | #ojanuswidget.cpp \ |
34 | odialog.cpp \ | 34 | odialog.cpp \ |
35 | oseparator.cpp \ | 35 | oseparator.cpp \ |
36 | otaskbarapplet.cpp | 36 | otaskbarapplet.cpp |
37 | 37 | ||
38 | INTERFACES = | 38 | INTERFACES = |
39 | TARGET = opieui2 | 39 | TARGET = opieui2 |
40 | VERSION = 1.8.1 | 40 | VERSION = 1.8.1 |
41 | INCLUDEPATH += $(OPIEDIR)/include | 41 | INCLUDEPATH += $(OPIEDIR)/include |
42 | DEPENDPATH += $(OPIEDIR)/include | 42 | DEPENDPATH += $(OPIEDIR)/include |
43 | LIBS += -lopiecore2 | 43 | LIBS += -lopiecore2 |
44 | MOC_DIR = moc | 44 | MOC_DIR = moc |
45 | OBJECTS_DIR = obj | 45 | OBJECTS_DIR = obj |
46 | 46 | ||
47 | include ( $(OPIEDIR)/include.pro ) | 47 | include ( $(OPIEDIR)/include.pro ) |
48 | 48 | ||