author | mickeyl <mickeyl> | 2003-04-07 18:07:38 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-04-07 18:07:38 (UTC) |
commit | cac6a08e456a057a19cc1fc56824fc98ff4f0bc1 (patch) (unidiff) | |
tree | b17fa559629bcb9f49d685d3ec8b8dddc6a20f46 | |
parent | 75f029f87d4c84b37ccfe1c81ef205a6cd5fca79 (diff) | |
download | opie-cac6a08e456a057a19cc1fc56824fc98ff4f0bc1.zip opie-cac6a08e456a057a19cc1fc56824fc98ff4f0bc1.tar.gz opie-cac6a08e456a057a19cc1fc56824fc98ff4f0bc1.tar.bz2 |
- add OManufacturerDB
- API extensions for OMacAddress
- add data packet recognition for miniwellenreiter
-rw-r--r-- | libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp | 63 | ||||
-rw-r--r-- | libopie2/examples/opienet/onetworkdemo/onetworkdemo.cpp | 1 | ||||
-rw-r--r-- | libopie2/libopie2.control | 6 | ||||
-rw-r--r-- | libopie2/opienet/omanufacturerdb.cpp | 96 | ||||
-rw-r--r-- | libopie2/opienet/omanufacturerdb.h | 37 | ||||
-rw-r--r-- | libopie2/opienet/onetutils.cpp | 21 | ||||
-rw-r--r-- | libopie2/opienet/onetutils.h | 3 | ||||
-rw-r--r-- | libopie2/opienet/opcap.cpp | 8 | ||||
-rw-r--r-- | libopie2/opienet/opienet.pro | 12 |
9 files changed, 205 insertions, 42 deletions
diff --git a/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp b/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp index 7581888..f800336 100644 --- a/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp +++ b/libopie2/examples/opienet/miniwellenreiter/miniwellenreiter.cpp | |||
@@ -1,202 +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 | /* | ||
87 | |||
88 | // ifconfig down the interface - this enable more crash-proof | ||
89 | // scanning with drivers like spectrum_cs... | ||
90 | if ( wiface->isUp() ) | ||
91 | { | ||
92 | printf( "Interface status is up... switching to down... " ); | ||
93 | wiface->setUp( false ); | ||
94 | if ( wiface->isUp() ) | ||
95 | { | ||
96 | printf( "failed (%s). Exiting.\n", strerror( errno ) ); | ||
97 | exit( -1 ); | ||
98 | } | ||
99 | else | ||
100 | { | ||
101 | printf( "ok.\n" ); | ||
102 | } | ||
103 | } | ||
104 | else | ||
105 | printf( "Interface status is already down - good.\n" ); | ||
106 | |||
107 | */ | ||
108 | |||
109 | // ifconfig +promisc the interface to receive all packets | 86 | // ifconfig +promisc the interface to receive all packets |
110 | if ( !wiface->promiscuousMode() ) | 87 | if ( !wiface->promiscuousMode() ) |
111 | { | 88 | { |
112 | printf( "Interface status is not promisc... switching to promisc... " ); | 89 | printf( "Interface status is not promisc... switching to promisc... " ); |
113 | wiface->setPromiscuousMode( true ); | 90 | wiface->setPromiscuousMode( true ); |
114 | if ( !wiface->promiscuousMode() ) | 91 | if ( !wiface->promiscuousMode() ) |
115 | { | 92 | { |
116 | printf( "failed (%s). Exiting.\n", strerror( errno ) ); | 93 | printf( "failed (%s). Exiting.\n", strerror( errno ) ); |
117 | exit( -1 ); | 94 | exit( -1 ); |
118 | } | 95 | } |
119 | else | 96 | else |
120 | { | 97 | { |
121 | printf( "ok.\n" ); | 98 | printf( "ok.\n" ); |
122 | } | 99 | } |
123 | } | 100 | } |
124 | else | 101 | else |
125 | printf( "Interface status is already promisc - good.\n" ); | 102 | printf( "Interface status is already promisc - good.\n" ); |
126 | 103 | ||
127 | // connect a monitoring strategy to the interface | 104 | // connect a monitoring strategy to the interface |
128 | if ( driver == "orinoco" ) | 105 | if ( driver == "orinoco" ) |
129 | new OOrinocoMonitoringInterface( wiface ); | 106 | new OOrinocoMonitoringInterface( wiface ); |
130 | else | 107 | else |
131 | { | 108 | { |
132 | printf( "Unknown driver. Exiting\n" ); | 109 | printf( "Unknown driver. Exiting\n" ); |
133 | exit( -1 ); | 110 | exit( -1 ); |
134 | } | 111 | } |
135 | 112 | ||
136 | // enable monitoring mode | 113 | // enable monitoring mode |
137 | printf( "Enabling monitor mode...\n" ); | 114 | printf( "Enabling monitor mode...\n" ); |
138 | wiface->setMonitorMode( true ); | 115 | wiface->setMonitorMode( true ); |
139 | 116 | ||
140 | // open a packet capturer | 117 | // open a packet capturer |
141 | cap = new OPacketCapturer(); | 118 | cap = new OPacketCapturer(); |
142 | cap->open( interface ); | 119 | cap->open( interface ); |
143 | if ( !cap->isOpen() ) | 120 | if ( !cap->isOpen() ) |
144 | { | 121 | { |
145 | printf( "Unable to open libpcap (%s). Exiting.\n", strerror( errno ) ); | 122 | printf( "Unable to open libpcap (%s). Exiting.\n", strerror( errno ) ); |
146 | exit( -1 ); | 123 | exit( -1 ); |
147 | } | 124 | } |
148 | 125 | ||
149 | // set capturer to non-blocking mode | 126 | // set capturer to non-blocking mode |
150 | cap->setBlocking( false ); | 127 | cap->setBlocking( false ); |
151 | 128 | ||
152 | // start channel hopper | 129 | // start channel hopper |
153 | wiface->setChannelHopping( 1000 ); | 130 | wiface->setChannelHopping( 1000 ); |
154 | 131 | ||
155 | // connect | 132 | // connect |
156 | connect( cap, SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); | 133 | connect( cap, SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); |
157 | 134 | ||
158 | } | 135 | } |
159 | 136 | ||
160 | ~Wellenreiter() {}; | 137 | ~Wellenreiter() {}; |
161 | 138 | ||
162 | public slots: | 139 | public slots: |
163 | void receivePacket(OPacket* p) | 140 | void receivePacket(OPacket* p) |
164 | { | 141 | { |
165 | if (!p) | 142 | if (!p) |
166 | { | 143 | { |
167 | printf( "(empty packet received)\n" ); | 144 | printf( "(empty packet received)\n" ); |
168 | return; | 145 | return; |
169 | } | 146 | } |
170 | 147 | ||
171 | OWaveLanManagementPacket* beacon = (OWaveLanManagementPacket*) p->child( "802.11 Management" ); | 148 | OWaveLanManagementPacket* beacon = (OWaveLanManagementPacket*) p->child( "802.11 Management" ); |
172 | |||
173 | if ( beacon ) | 149 | if ( beacon ) |
174 | { | 150 | { |
175 | OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) ); | 151 | OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) ); |
176 | QString essid = ssid ? ssid->ID() : "<unknown>"; | 152 | QString essid = ssid ? ssid->ID() : "<unknown>"; |
177 | 153 | ||
178 | if ( stations.find( essid ) ) | 154 | if ( stations.find( essid ) ) |
179 | stations[essid]->beacons++; | 155 | stations[essid]->beacons++; |
180 | else | 156 | else |
181 | { | 157 | { |
182 | 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 ); |
183 | stations.insert( essid, new Station( "unknown", wiface->channel(), | 159 | stations.insert( essid, new Station( "unknown", wiface->channel(), |
184 | ((OWaveLanPacket*) beacon->parent())->usesWep() ) ); | 160 | ((OWaveLanPacket*) beacon->parent())->usesWep() ) ); |
185 | } | 161 | } |
162 | return; | ||
163 | } | ||
164 | |||
165 | OWaveLanDataPacket* data = (OWaveLanDataPacket*) p->child( "802.11 Data" ); | ||
166 | if ( data ) | ||
167 | { | ||
168 | OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" ); | ||
169 | if ( wlan->fromDS() && !wlan->toDS() ) | ||
170 | { | ||
171 | printf( "FromDS: '%s' -> '%s' via '%s'\n", | ||
172 | (const char*) wlan->macAddress3().toString(true), | ||
173 | (const char*) wlan->macAddress1().toString(true), | ||
174 | (const char*) wlan->macAddress2().toString(true) ); | ||
175 | } | ||
176 | else | ||
177 | if ( !wlan->fromDS() && wlan->toDS() ) | ||
178 | { | ||
179 | printf( "ToDS: '%s' -> '%s' via '%s'\n", | ||
180 | (const char*) wlan->macAddress2().toString(true), | ||
181 | (const char*) wlan->macAddress3().toString(true), | ||
182 | (const char*) wlan->macAddress1().toString(true) ); | ||
183 | } | ||
184 | else | ||
185 | if ( wlan->fromDS() && wlan->toDS() ) | ||
186 | { | ||
187 | printf( "WSD(bridge): '%s' -> '%s' via '%s' and '%s'\n", | ||
188 | (const char*) wlan->macAddress4().toString(true), | ||
189 | (const char*) wlan->macAddress3().toString(true), | ||
190 | (const char*) wlan->macAddress1().toString(true), | ||
191 | (const char*) wlan->macAddress2().toString(true) ); | ||
192 | } | ||
193 | else | ||
194 | { | ||
195 | printf( "IBSS(AdHoc): '%s' -> '%s' (Cell: '%s')'\n", | ||
196 | (const char*) wlan->macAddress2().toString(true), | ||
197 | (const char*) wlan->macAddress1().toString(true), | ||
198 | (const char*) wlan->macAddress3().toString(true) ); | ||
199 | } | ||
200 | return; | ||
186 | } | 201 | } |
187 | } | 202 | } |
188 | private: | 203 | private: |
189 | OPacketCapturer* cap; | 204 | OPacketCapturer* cap; |
190 | OWirelessNetworkInterface* wiface; | 205 | OWirelessNetworkInterface* wiface; |
191 | }; | 206 | }; |
192 | 207 | ||
193 | 208 | ||
194 | int main( int argc, char** argv ) | 209 | int main( int argc, char** argv ) |
195 | { | 210 | { |
196 | Wellenreiter w( argc, argv ); | 211 | Wellenreiter w( argc, argv ); |
197 | w.exec(); | 212 | w.exec(); |
198 | return 0; | 213 | return 0; |
199 | } | 214 | } |
200 | 215 | ||
201 | #include "miniwellenreiter.moc" | 216 | #include "miniwellenreiter.moc" |
202 | 217 | ||
diff --git a/libopie2/examples/opienet/onetworkdemo/onetworkdemo.cpp b/libopie2/examples/opienet/onetworkdemo/onetworkdemo.cpp index 020fc23..f801b15 100644 --- a/libopie2/examples/opienet/onetworkdemo/onetworkdemo.cpp +++ b/libopie2/examples/opienet/onetworkdemo/onetworkdemo.cpp | |||
@@ -1,61 +1,62 @@ | |||
1 | #include <opie2/onetwork.h> | 1 | #include <opie2/onetwork.h> |
2 | 2 | ||
3 | int main( int argc, char** argv ) | 3 | int main( int argc, char** argv ) |
4 | { | 4 | { |
5 | qDebug( "OPIE Network Demo" ); | 5 | qDebug( "OPIE Network Demo" ); |
6 | 6 | ||
7 | ONetwork* net = ONetwork::instance(); | 7 | ONetwork* net = ONetwork::instance(); |
8 | 8 | ||
9 | ONetwork::InterfaceIterator it = net->iterator(); | 9 | ONetwork::InterfaceIterator it = net->iterator(); |
10 | 10 | ||
11 | while ( it.current() ) | 11 | while ( it.current() ) |
12 | { | 12 | { |
13 | qDebug( "DEMO: ONetwork contains Interface '%s'", (const char*) it.current()->name() ); | 13 | qDebug( "DEMO: ONetwork contains Interface '%s'", (const char*) it.current()->name() ); |
14 | qDebug( "DEMO: MAC Address is '%s'", (const char*) it.current()->macAddress().toString() ); | 14 | qDebug( "DEMO: MAC Address is '%s'", (const char*) it.current()->macAddress().toString() ); |
15 | qDebug( "DEMO: MAC Address is '%s'", (const char*) it.current()->macAddress().toString(true) ); | ||
15 | qDebug( "Demo: IPv4 Address is '%s'", (const char*) it.current()->ipV4Address() ); | 16 | qDebug( "Demo: IPv4 Address is '%s'", (const char*) it.current()->ipV4Address() ); |
16 | if ( it.current()->isWireless() ) | 17 | if ( it.current()->isWireless() ) |
17 | { | 18 | { |
18 | OWirelessNetworkInterface* iface = static_cast<OWirelessNetworkInterface*>( it.current() ); | 19 | OWirelessNetworkInterface* iface = static_cast<OWirelessNetworkInterface*>( it.current() ); |
19 | qDebug( "DEMO: '%s' seems to feature the wireless extensions.", (const char*) iface->name() ); | 20 | qDebug( "DEMO: '%s' seems to feature the wireless extensions.", (const char*) iface->name() ); |
20 | qDebug( "DEMO: Current SSID is '%s'", (const char*) iface->SSID() ); | 21 | qDebug( "DEMO: Current SSID is '%s'", (const char*) iface->SSID() ); |
21 | qDebug( "DEMO: Current NickName is '%s'", (const char*) iface->nickName() ); | 22 | qDebug( "DEMO: Current NickName is '%s'", (const char*) iface->nickName() ); |
22 | qDebug( "DEMO: Antenna is tuned to '%f', that is channel %d", iface->frequency(), iface->channel() ); | 23 | qDebug( "DEMO: Antenna is tuned to '%f', that is channel %d", iface->frequency(), iface->channel() ); |
23 | 24 | ||
24 | //if ( iface->mode() == OWirelessNetworkInterface::adhoc ) | 25 | //if ( iface->mode() == OWirelessNetworkInterface::adhoc ) |
25 | //{ | 26 | //{ |
26 | qDebug( "DEMO: Associated AP has MAC Address '%s'", (const char*) iface->associatedAP() ); | 27 | qDebug( "DEMO: Associated AP has MAC Address '%s'", (const char*) iface->associatedAP() ); |
27 | //} | 28 | //} |
28 | 29 | ||
29 | // try to set monitor mode | 30 | // try to set monitor mode |
30 | 31 | ||
31 | /* | 32 | /* |
32 | 33 | ||
33 | // first some wrong calls to check if this is working | 34 | // first some wrong calls to check if this is working |
34 | iface->setPrivate( "seppel", 10 ); | 35 | iface->setPrivate( "seppel", 10 ); |
35 | iface->setPrivate( "monitor", 0 ); | 36 | iface->setPrivate( "monitor", 0 ); |
36 | 37 | ||
37 | // now the real deal | 38 | // now the real deal |
38 | iface->setPrivate( "monitor", 2, 2, 3 ); | 39 | iface->setPrivate( "monitor", 2, 2, 3 ); |
39 | 40 | ||
40 | */ | 41 | */ |
41 | 42 | ||
42 | // trying to set hw address to 12:34:56:AB:CD:EF | 43 | // trying to set hw address to 12:34:56:AB:CD:EF |
43 | 44 | ||
44 | /* | 45 | /* |
45 | 46 | ||
46 | OMacAddress addr = OMacAddress::fromString( "12:34:56:AB:CD:EF" ); | 47 | OMacAddress addr = OMacAddress::fromString( "12:34:56:AB:CD:EF" ); |
47 | iface->setUp( false ); | 48 | iface->setUp( false ); |
48 | iface->setMacAddress( addr ); | 49 | iface->setMacAddress( addr ); |
49 | iface->setUp( true ); | 50 | iface->setUp( true ); |
50 | qDebug( "DEMO: MAC Address now is '%s'", (const char*) iface->macAddress().toString() ); | 51 | qDebug( "DEMO: MAC Address now is '%s'", (const char*) iface->macAddress().toString() ); |
51 | 52 | ||
52 | */ | 53 | */ |
53 | 54 | ||
54 | 55 | ||
55 | } | 56 | } |
56 | ++it; | 57 | ++it; |
57 | } | 58 | } |
58 | 59 | ||
59 | return 0; | 60 | return 0; |
60 | 61 | ||
61 | } | 62 | } |
diff --git a/libopie2/libopie2.control b/libopie2/libopie2.control index 24a7c37..866d106 100644 --- a/libopie2/libopie2.control +++ b/libopie2/libopie2.control | |||
@@ -1,10 +1,10 @@ | |||
1 | Files: $OPIEDIR/lib/libopiecore2.so.1.8.1 $OPIEDIR/lib/libopiecore2.so.1.8 $OPIEDIR/lib/libopiecore2.so.1 $OPIEDIR/lib/libopienet2.so.1.8.1 $OPIEDIR/lib/libopienet2.so.1.8 $OPIEDIR/lib/libopienet2.so.1 $OPIEDIR/lib/libopieui2.so.1.8.1 $OPIEDIR/lib/libopieui2.so.1.8 $OPIEDIR/lib/libopieui2.so.1 | 1 | Files: $OPIEDIR/lib/libopiecore2.so.1.8.1 $OPIEDIR/lib/libopiecore2.so.1.8 $OPIEDIR/lib/libopiecore2.so.1 $OPIEDIR/lib/libopienet2.so.1.8.1 $OPIEDIR/lib/libopienet2.so.1.8 $OPIEDIR/lib/libopienet2.so.1 $OPIEDIR/lib/libopieui2.so.1.8.1 $OPIEDIR/lib/libopieui2.so.1.8 $OPIEDIR/lib/libopieui2.so.1 $OPIEDIR/etc/manufacturers |
2 | Priority: optional | 2 | Priority: optional |
3 | Section: opie/system | 3 | Section: opie/system |
4 | Maintainer: Opie Team <opie@handhelds.org> | 4 | Maintainer: Opie Team <opie@handhelds.org> |
5 | Architecture: arm | 5 | Architecture: arm |
6 | Version: 1.8.1-$SUB_VERSION.1 | 6 | Version: 1.8.1-$SUB_VERSION.2 |
7 | Depends: libqpe1 | 7 | Depends: libqpe1 |
8 | Provides: libopie2 | 8 | Provides: libopie2 |
9 | Replaces: libopie2 | ||
10 | Description: Opie library 2.0 | 9 | Description: Opie library 2.0 |
10 | |||
diff --git a/libopie2/opienet/omanufacturerdb.cpp b/libopie2/opienet/omanufacturerdb.cpp new file mode 100644 index 0000000..ea15125 --- a/dev/null +++ b/libopie2/opienet/omanufacturerdb.cpp | |||
@@ -0,0 +1,96 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Opie Environment. | ||
5 | ** | ||
6 | ** This file may be distributed and/or modified under the terms of the | ||
7 | ** GNU General Public License version 2 as published by the Free Software | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | ||
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
13 | ** | ||
14 | **********************************************************************/ | ||
15 | |||
16 | #include "omanufacturerdb.h" | ||
17 | |||
18 | // Qt | ||
19 | #include <qstring.h> | ||
20 | #include <qfile.h> | ||
21 | #include <qtextstream.h> | ||
22 | |||
23 | OManufacturerDB* OManufacturerDB::_instance = 0; | ||
24 | |||
25 | OManufacturerDB* OManufacturerDB::instance() | ||
26 | { | ||
27 | if ( !OManufacturerDB::_instance ) | ||
28 | { | ||
29 | qDebug( "OManufacturerDB::instance(): creating OManufacturerDB..." ); | ||
30 | _instance = new OManufacturerDB(); | ||
31 | } | ||
32 | return _instance; | ||
33 | } | ||
34 | |||
35 | |||
36 | OManufacturerDB::OManufacturerDB() | ||
37 | { | ||
38 | QString filename( "/etc/manufacturers" ); | ||
39 | qDebug( "OManufacturerDB: trying to read '%s'...", (const char*) filename ); | ||
40 | if ( !QFile::exists( filename ) ) | ||
41 | { | ||
42 | filename = "/opt/QtPalmtop/etc/manufacturers"; | ||
43 | qDebug( "OManufacturerDB: trying to read '%s'...", (const char*) filename ); | ||
44 | if ( !QFile::exists( filename ) ) | ||
45 | { | ||
46 | filename = "/usr/share/wellenreiter/manufacturers"; | ||
47 | qDebug( "OManufacturerDB: trying to read '%s'...", (const char*) filename ); | ||
48 | } | ||
49 | } | ||
50 | |||
51 | QFile file( filename ); | ||
52 | bool hasFile = file.open( IO_ReadOnly ); | ||
53 | if (!hasFile) | ||
54 | { | ||
55 | qWarning( "OManufacturerDB: no valid manufacturer list found.", (const char*) filename ); | ||
56 | } | ||
57 | else | ||
58 | { | ||
59 | qDebug( "OManufacturerDB: found manufacturer list in '%s'...", (const char*) filename ); | ||
60 | QTextStream s( &file ); | ||
61 | QString addr; | ||
62 | QString manu; | ||
63 | while (!s.atEnd()) | ||
64 | { | ||
65 | s >> addr; | ||
66 | if ( !addr ) // read nothing!? | ||
67 | { | ||
68 | continue; | ||
69 | } | ||
70 | else | ||
71 | if ( addr[0] == '#' ) | ||
72 | { | ||
73 | s.readLine(); | ||
74 | continue; | ||
75 | } | ||
76 | s.skipWhiteSpace(); | ||
77 | s >> manu; | ||
78 | s.readLine(); | ||
79 | //qDebug( "ManufacturerDB: read pair %s, %s", (const char*) addr, (const char*) manu ); | ||
80 | manufacturers.insert( addr, manu ); | ||
81 | |||
82 | } | ||
83 | } | ||
84 | |||
85 | } | ||
86 | |||
87 | |||
88 | OManufacturerDB::~OManufacturerDB() | ||
89 | { | ||
90 | } | ||
91 | |||
92 | |||
93 | const QString& OManufacturerDB::lookup( const QString& macaddr ) const | ||
94 | { | ||
95 | return manufacturers[macaddr.upper().left(8)]; | ||
96 | } | ||
diff --git a/libopie2/opienet/omanufacturerdb.h b/libopie2/opienet/omanufacturerdb.h new file mode 100644 index 0000000..5e66c37 --- a/dev/null +++ b/libopie2/opienet/omanufacturerdb.h | |||
@@ -0,0 +1,37 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Opie Environment. | ||
5 | ** | ||
6 | ** This file may be distributed and/or modified under the terms of the | ||
7 | ** GNU General Public License version 2 as published by the Free Software | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | ||
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
13 | ** | ||
14 | **********************************************************************/ | ||
15 | |||
16 | #ifndef OMANUFACTURERDB_H | ||
17 | #define OMANUFACTURERDB_H | ||
18 | |||
19 | #include <qmap.h> | ||
20 | |||
21 | class OManufacturerDB | ||
22 | { | ||
23 | public: | ||
24 | static OManufacturerDB* instance(); | ||
25 | const QString& lookup( const QString& macaddr ) const; | ||
26 | |||
27 | protected: | ||
28 | OManufacturerDB(); | ||
29 | virtual ~OManufacturerDB(); | ||
30 | |||
31 | private: | ||
32 | QMap<QString, QString> manufacturers; | ||
33 | static OManufacturerDB* _instance; | ||
34 | }; | ||
35 | |||
36 | #endif | ||
37 | |||
diff --git a/libopie2/opienet/onetutils.cpp b/libopie2/opienet/onetutils.cpp index 2485f30..236f108 100644 --- a/libopie2/opienet/onetutils.cpp +++ b/libopie2/opienet/onetutils.cpp | |||
@@ -1,212 +1,221 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 4 | (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
5 | =. | 5 | =. |
6 | .=l. | 6 | .=l. |
7 | .>+-= | 7 | .>+-= |
8 | _;:, .> :=|. This program is free software; you can | 8 | _;:, .> :=|. This program is free software; you can |
9 | .> <`_, > . <= redistribute it and/or modify it under | 9 | .> <`_, > . <= redistribute it and/or modify it under |
10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
11 | .="- .-=="i, .._ License as published by the Free Software | 11 | .="- .-=="i, .._ License as published by the Free Software |
12 | - . .-<_> .<> Foundation; either version 2 of the License, | 12 | - . .-<_> .<> Foundation; either version 2 of the License, |
13 | ._= =} : or (at your option) any later version. | 13 | ._= =} : or (at your option) any later version. |
14 | .%`+i> _;_. | 14 | .%`+i> _;_. |
15 | .i_,=:_. -<s. This program is distributed in the hope that | 15 | .i_,=:_. -<s. This program is distributed in the hope that |
16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
17 | : .. .:, . . . without even the implied warranty of | 17 | : .. .:, . . . without even the implied warranty of |
18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
20 | ..}^=.= = ; Library General Public License for more | 20 | ..}^=.= = ; Library General Public License for more |
21 | ++= -. .` .: details. | 21 | ++= -. .` .: details. |
22 | : = ...= . :.=- | 22 | : = ...= . :.=- |
23 | -. .:....=;==+<; You should have received a copy of the GNU | 23 | -. .:....=;==+<; You should have received a copy of the GNU |
24 | -_. . . )=. = Library General Public License along with | 24 | -_. . . )=. = Library General Public License along with |
25 | -- :-=` this library; see the file COPYING.LIB. | 25 | -- :-=` this library; see the file COPYING.LIB. |
26 | If not, write to the Free Software Foundation, | 26 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 27 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 28 | Boston, MA 02111-1307, USA. |
29 | 29 | ||
30 | */ | 30 | */ |
31 | 31 | ||
32 | #include <opie2/onetutils.h> | 32 | #include <opie2/onetutils.h> |
33 | #include <opie2/onetwork.h> | 33 | #include <opie2/onetwork.h> |
34 | #include <opie2/omanufacturerdb.h> | ||
34 | 35 | ||
35 | #include <net/if.h> | 36 | #include <net/if.h> |
36 | 37 | ||
37 | #include <cstdio> | 38 | #include <cstdio> |
38 | using namespace std; | 39 | using namespace std; |
39 | 40 | ||
40 | #define IW_PRIV_TYPE_MASK 0x7000 | 41 | #define IW_PRIV_TYPE_MASK 0x7000 |
41 | #define IW_PRIV_TYPE_NONE 0x0000 | 42 | #define IW_PRIV_TYPE_NONE 0x0000 |
42 | #define IW_PRIV_TYPE_BYTE 0x1000 | 43 | #define IW_PRIV_TYPE_BYTE 0x1000 |
43 | #define IW_PRIV_TYPE_CHAR 0x2000 | 44 | #define IW_PRIV_TYPE_CHAR 0x2000 |
44 | #define IW_PRIV_TYPE_INT 0x4000 | 45 | #define IW_PRIV_TYPE_INT 0x4000 |
45 | #define IW_PRIV_TYPE_FLOAT 0x5000 | 46 | #define IW_PRIV_TYPE_FLOAT 0x5000 |
46 | #define IW_PRIV_TYPE_ADDR 0x6000 | 47 | #define IW_PRIV_TYPE_ADDR 0x6000 |
47 | #define IW_PRIV_SIZE_FIXED 0x0800 | 48 | #define IW_PRIV_SIZE_FIXED 0x0800 |
48 | #define IW_PRIV_SIZE_MASK 0x07FF | 49 | #define IW_PRIV_SIZE_MASK 0x07FF |
49 | 50 | ||
50 | /*====================================================================================== | 51 | /*====================================================================================== |
51 | * OMacAddress | 52 | * OMacAddress |
52 | *======================================================================================*/ | 53 | *======================================================================================*/ |
53 | 54 | ||
54 | // static initializer for broadcast and unknown MAC Adresses | 55 | // static initializer for broadcast and unknown MAC Adresses |
55 | const unsigned char __broadcast[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; | 56 | const unsigned char __broadcast[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; |
56 | const OMacAddress& OMacAddress::broadcast = OMacAddress( __broadcast ); | 57 | const OMacAddress& OMacAddress::broadcast = OMacAddress( __broadcast ); |
57 | const unsigned char __unknown[6] = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 }; | 58 | const unsigned char __unknown[6] = { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 }; |
58 | const OMacAddress& OMacAddress::unknown = OMacAddress( __unknown ); | 59 | const OMacAddress& OMacAddress::unknown = OMacAddress( __unknown ); |
59 | 60 | ||
60 | 61 | ||
61 | //TODO: Incorporate Ethernet Manufacturer database here! | 62 | //TODO: Incorporate Ethernet Manufacturer database here! |
62 | 63 | ||
63 | OMacAddress::OMacAddress( unsigned char* p ) | 64 | OMacAddress::OMacAddress( unsigned char* p ) |
64 | { | 65 | { |
65 | memcpy( _bytes, p, 6 ); | 66 | memcpy( _bytes, p, 6 ); |
66 | } | 67 | } |
67 | 68 | ||
68 | 69 | ||
69 | OMacAddress::OMacAddress( const unsigned char* p ) | 70 | OMacAddress::OMacAddress( const unsigned char* p ) |
70 | { | 71 | { |
71 | memcpy( _bytes, p, 6 ); | 72 | memcpy( _bytes, p, 6 ); |
72 | } | 73 | } |
73 | 74 | ||
74 | 75 | ||
75 | OMacAddress::OMacAddress( struct ifreq& ifr ) | 76 | OMacAddress::OMacAddress( struct ifreq& ifr ) |
76 | { | 77 | { |
77 | memcpy( _bytes, ifr.ifr_hwaddr.sa_data, 6 ); | 78 | memcpy( _bytes, ifr.ifr_hwaddr.sa_data, 6 ); |
78 | } | 79 | } |
79 | 80 | ||
80 | 81 | ||
81 | OMacAddress::~OMacAddress() | 82 | OMacAddress::~OMacAddress() |
82 | { | 83 | { |
83 | } | 84 | } |
84 | 85 | ||
85 | 86 | ||
86 | //#ifdef QT_NO_DEBUG | 87 | //#ifdef QT_NO_DEBUG |
87 | //inline | 88 | //inline |
88 | //#endif | 89 | //#endif |
89 | const unsigned char* OMacAddress::native() const | 90 | const unsigned char* OMacAddress::native() const |
90 | { | 91 | { |
91 | return (const unsigned char*) &_bytes; | 92 | return (const unsigned char*) &_bytes; |
92 | } | 93 | } |
93 | 94 | ||
94 | 95 | ||
95 | OMacAddress OMacAddress::fromString( const QString& str ) | 96 | OMacAddress OMacAddress::fromString( const QString& str ) |
96 | { | 97 | { |
97 | QString addr( str ); | 98 | QString addr( str ); |
98 | unsigned char buf[6]; | 99 | unsigned char buf[6]; |
99 | bool ok = true; | 100 | bool ok = true; |
100 | int index = 14; | 101 | int index = 14; |
101 | for ( int i = 5; i >= 0; --i ) | 102 | for ( int i = 5; i >= 0; --i ) |
102 | { | 103 | { |
103 | buf[i] = addr.right( 2 ).toUShort( &ok, 16 ); | 104 | buf[i] = addr.right( 2 ).toUShort( &ok, 16 ); |
104 | if ( !ok ) return OMacAddress::unknown; | 105 | if ( !ok ) return OMacAddress::unknown; |
105 | addr.truncate( index ); | 106 | addr.truncate( index ); |
106 | index -= 3; | 107 | index -= 3; |
107 | } | 108 | } |
108 | return (const unsigned char*) &buf; | 109 | return (const unsigned char*) &buf; |
109 | } | 110 | } |
110 | 111 | ||
111 | 112 | ||
112 | QString OMacAddress::toString() const | 113 | QString OMacAddress::toString( bool substitute ) const |
113 | { | 114 | { |
114 | QString s; | 115 | QString manu; |
115 | s.sprintf( "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", | 116 | manu.sprintf( "%.2X:%.2X:%.2X", _bytes[0]&0xff, _bytes[1]&0xff, _bytes[2]&0xff ); |
116 | _bytes[0]&0xff, _bytes[1]&0xff, _bytes[2]&0xff, | 117 | QString serial; |
117 | _bytes[3]&0xff, _bytes[4]&0xff, _bytes[5]&0xff ); | 118 | serial.sprintf( ":%.2X:%.2X:%.2X", _bytes[3]&0xff, _bytes[4]&0xff, _bytes[5]&0xff ); |
118 | return s; | 119 | if ( !substitute ) return manu+serial; |
120 | // fallback - if no vendor is found, just use the number | ||
121 | QString textmanu = OManufacturerDB::instance()->lookup( manu ); | ||
122 | return textmanu.isNull() ? manu+serial : textmanu + serial; | ||
119 | } | 123 | } |
120 | 124 | ||
121 | 125 | ||
126 | QString OMacAddress::manufacturer() const | ||
127 | { | ||
128 | return OManufacturerDB::instance()->lookup( toString() ); | ||
129 | } | ||
130 | |||
122 | bool operator==( const OMacAddress &m1, const OMacAddress &m2 ) | 131 | bool operator==( const OMacAddress &m1, const OMacAddress &m2 ) |
123 | { | 132 | { |
124 | return memcmp( &m1._bytes, &m2._bytes, 6 ) == 0; | 133 | return memcmp( &m1._bytes, &m2._bytes, 6 ) == 0; |
125 | } | 134 | } |
126 | 135 | ||
127 | 136 | ||
128 | /*====================================================================================== | 137 | /*====================================================================================== |
129 | * OHostAddress | 138 | * OHostAddress |
130 | *======================================================================================*/ | 139 | *======================================================================================*/ |
131 | 140 | ||
132 | 141 | ||
133 | /*====================================================================================== | 142 | /*====================================================================================== |
134 | * OPrivateIOCTL | 143 | * OPrivateIOCTL |
135 | *======================================================================================*/ | 144 | *======================================================================================*/ |
136 | 145 | ||
137 | OPrivateIOCTL::OPrivateIOCTL( QObject* parent, const char* name, int cmd, int getargs, int setargs ) | 146 | OPrivateIOCTL::OPrivateIOCTL( QObject* parent, const char* name, int cmd, int getargs, int setargs ) |
138 | :QObject( parent, name ), _ioctl( cmd ), _getargs( getargs ), _setargs( setargs ) | 147 | :QObject( parent, name ), _ioctl( cmd ), _getargs( getargs ), _setargs( setargs ) |
139 | { | 148 | { |
140 | } | 149 | } |
141 | 150 | ||
142 | 151 | ||
143 | OPrivateIOCTL::~OPrivateIOCTL() | 152 | OPrivateIOCTL::~OPrivateIOCTL() |
144 | { | 153 | { |
145 | } | 154 | } |
146 | 155 | ||
147 | 156 | ||
148 | #ifdef QT_NO_DEBUG | 157 | #ifdef QT_NO_DEBUG |
149 | inline | 158 | inline |
150 | #endif | 159 | #endif |
151 | int OPrivateIOCTL::numberGetArgs() const | 160 | int OPrivateIOCTL::numberGetArgs() const |
152 | { | 161 | { |
153 | return _getargs & IW_PRIV_SIZE_MASK; | 162 | return _getargs & IW_PRIV_SIZE_MASK; |
154 | } | 163 | } |
155 | 164 | ||
156 | 165 | ||
157 | #ifdef QT_NO_DEBUG | 166 | #ifdef QT_NO_DEBUG |
158 | inline | 167 | inline |
159 | #endif | 168 | #endif |
160 | int OPrivateIOCTL::typeGetArgs() const | 169 | int OPrivateIOCTL::typeGetArgs() const |
161 | { | 170 | { |
162 | return _getargs & IW_PRIV_TYPE_MASK >> 12; | 171 | return _getargs & IW_PRIV_TYPE_MASK >> 12; |
163 | } | 172 | } |
164 | 173 | ||
165 | 174 | ||
166 | #ifdef QT_NO_DEBUG | 175 | #ifdef QT_NO_DEBUG |
167 | inline | 176 | inline |
168 | #endif | 177 | #endif |
169 | int OPrivateIOCTL::numberSetArgs() const | 178 | int OPrivateIOCTL::numberSetArgs() const |
170 | { | 179 | { |
171 | return _setargs & IW_PRIV_SIZE_MASK; | 180 | return _setargs & IW_PRIV_SIZE_MASK; |
172 | } | 181 | } |
173 | 182 | ||
174 | 183 | ||
175 | #ifdef QT_NO_DEBUG | 184 | #ifdef QT_NO_DEBUG |
176 | inline | 185 | inline |
177 | #endif | 186 | #endif |
178 | int OPrivateIOCTL::typeSetArgs() const | 187 | int OPrivateIOCTL::typeSetArgs() const |
179 | { | 188 | { |
180 | return _setargs & IW_PRIV_TYPE_MASK >> 12; | 189 | return _setargs & IW_PRIV_TYPE_MASK >> 12; |
181 | } | 190 | } |
182 | 191 | ||
183 | 192 | ||
184 | void OPrivateIOCTL::invoke() const | 193 | void OPrivateIOCTL::invoke() const |
185 | { | 194 | { |
186 | ( (OWirelessNetworkInterface*) parent() )->wioctl( _ioctl ); | 195 | ( (OWirelessNetworkInterface*) parent() )->wioctl( _ioctl ); |
187 | } | 196 | } |
188 | 197 | ||
189 | 198 | ||
190 | void OPrivateIOCTL::setParameter( int num, u_int32_t value ) | 199 | void OPrivateIOCTL::setParameter( int num, u_int32_t value ) |
191 | { | 200 | { |
192 | u_int32_t* arglist = (u_int32_t*) &( (OWirelessNetworkInterface*) parent() )->_iwr.u.name; | 201 | u_int32_t* arglist = (u_int32_t*) &( (OWirelessNetworkInterface*) parent() )->_iwr.u.name; |
193 | arglist[num] = value; | 202 | arglist[num] = value; |
194 | } | 203 | } |
195 | 204 | ||
196 | /*====================================================================================== | 205 | /*====================================================================================== |
197 | * assorted functions | 206 | * assorted functions |
198 | *======================================================================================*/ | 207 | *======================================================================================*/ |
199 | 208 | ||
200 | void dumpBytes( const unsigned char* data, int num ) | 209 | void dumpBytes( const unsigned char* data, int num ) |
201 | { | 210 | { |
202 | printf( "Dumping %d bytes @ %0x", num, data ); | 211 | printf( "Dumping %d bytes @ %0x", num, data ); |
203 | printf( "-------------------------------------------\n" ); | 212 | printf( "-------------------------------------------\n" ); |
204 | 213 | ||
205 | for ( int i = 0; i < num; ++i ) | 214 | for ( int i = 0; i < num; ++i ) |
206 | { | 215 | { |
207 | printf( "%02x ", data[i] ); | 216 | printf( "%02x ", data[i] ); |
208 | if ( !((i+1) % 32) ) printf( "\n" ); | 217 | if ( !((i+1) % 32) ) printf( "\n" ); |
209 | } | 218 | } |
210 | printf( "\n\n" ); | 219 | printf( "\n\n" ); |
211 | } | 220 | } |
212 | 221 | ||
diff --git a/libopie2/opienet/onetutils.h b/libopie2/opienet/onetutils.h index 73d52cc..bedea63 100644 --- a/libopie2/opienet/onetutils.h +++ b/libopie2/opienet/onetutils.h | |||
@@ -1,154 +1,155 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 4 | (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
5 | =. | 5 | =. |
6 | .=l. | 6 | .=l. |
7 | .>+-= | 7 | .>+-= |
8 | _;:, .> :=|. This program is free software; you can | 8 | _;:, .> :=|. This program is free software; you can |
9 | .> <`_, > . <= redistribute it and/or modify it under | 9 | .> <`_, > . <= redistribute it and/or modify it under |
10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
11 | .="- .-=="i, .._ License as published by the Free Software | 11 | .="- .-=="i, .._ License as published by the Free Software |
12 | - . .-<_> .<> Foundation; either version 2 of the License, | 12 | - . .-<_> .<> Foundation; either version 2 of the License, |
13 | ._= =} : or (at your option) any later version. | 13 | ._= =} : or (at your option) any later version. |
14 | .%`+i> _;_. | 14 | .%`+i> _;_. |
15 | .i_,=:_. -<s. This program is distributed in the hope that | 15 | .i_,=:_. -<s. This program is distributed in the hope that |
16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
17 | : .. .:, . . . without even the implied warranty of | 17 | : .. .:, . . . without even the implied warranty of |
18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
20 | ..}^=.= = ; Library General Public License for more | 20 | ..}^=.= = ; Library General Public License for more |
21 | ++= -. .` .: details. | 21 | ++= -. .` .: details. |
22 | : = ...= . :.=- | 22 | : = ...= . :.=- |
23 | -. .:....=;==+<; You should have received a copy of the GNU | 23 | -. .:....=;==+<; You should have received a copy of the GNU |
24 | -_. . . )=. = Library General Public License along with | 24 | -_. . . )=. = Library General Public License along with |
25 | -- :-=` this library; see the file COPYING.LIB. | 25 | -- :-=` this library; see the file COPYING.LIB. |
26 | If not, write to the Free Software Foundation, | 26 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 27 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 28 | Boston, MA 02111-1307, USA. |
29 | 29 | ||
30 | */ | 30 | */ |
31 | 31 | ||
32 | #ifndef ONETUTILS_H | 32 | #ifndef ONETUTILS_H |
33 | #define ONETUTILS_H | 33 | #define ONETUTILS_H |
34 | 34 | ||
35 | #include <qdict.h> | 35 | #include <qdict.h> |
36 | #include <qmap.h> | 36 | #include <qmap.h> |
37 | #include <qstring.h> | 37 | #include <qstring.h> |
38 | #include <qhostaddress.h> | 38 | #include <qhostaddress.h> |
39 | #include <qobject.h> | 39 | #include <qobject.h> |
40 | 40 | ||
41 | #include <sys/types.h> | 41 | #include <sys/types.h> |
42 | 42 | ||
43 | struct ifreq; | 43 | struct ifreq; |
44 | class OWirelessNetworkInterface; | 44 | class OWirelessNetworkInterface; |
45 | 45 | ||
46 | /*====================================================================================== | 46 | /*====================================================================================== |
47 | * OMacAddress | 47 | * OMacAddress |
48 | *======================================================================================*/ | 48 | *======================================================================================*/ |
49 | 49 | ||
50 | class OMacAddress | 50 | class OMacAddress |
51 | { | 51 | { |
52 | public: | 52 | public: |
53 | OMacAddress( unsigned char* ); | 53 | OMacAddress( unsigned char* ); |
54 | OMacAddress( const unsigned char* ); | 54 | OMacAddress( const unsigned char* ); |
55 | OMacAddress( struct ifreq& ); | 55 | OMacAddress( struct ifreq& ); |
56 | ~OMacAddress(); | 56 | ~OMacAddress(); |
57 | 57 | ||
58 | QString toString() const; | 58 | QString manufacturer() const; |
59 | QString toString( bool substitute = false ) const; | ||
59 | const unsigned char* native() const; | 60 | const unsigned char* native() const; |
60 | 61 | ||
61 | static OMacAddress fromString( const QString& ); | 62 | static OMacAddress fromString( const QString& ); |
62 | 63 | ||
63 | public: | 64 | public: |
64 | static const OMacAddress& broadcast; // ff:ff:ff:ff:ff:ff | 65 | static const OMacAddress& broadcast; // ff:ff:ff:ff:ff:ff |
65 | static const OMacAddress& unknown; // 44:44:44:44:44:44 | 66 | static const OMacAddress& unknown; // 44:44:44:44:44:44 |
66 | 67 | ||
67 | private: | 68 | private: |
68 | unsigned char _bytes[6]; | 69 | unsigned char _bytes[6]; |
69 | 70 | ||
70 | friend bool operator==( const OMacAddress &m1, const OMacAddress &m2 ); | 71 | friend bool operator==( const OMacAddress &m1, const OMacAddress &m2 ); |
71 | 72 | ||
72 | }; | 73 | }; |
73 | 74 | ||
74 | bool operator==( const OMacAddress &m1, const OMacAddress &m2 ); | 75 | bool operator==( const OMacAddress &m1, const OMacAddress &m2 ); |
75 | 76 | ||
76 | 77 | ||
77 | /*====================================================================================== | 78 | /*====================================================================================== |
78 | * OHostAddress | 79 | * OHostAddress |
79 | *======================================================================================*/ | 80 | *======================================================================================*/ |
80 | 81 | ||
81 | class OHostAddress : public QHostAddress | 82 | class OHostAddress : public QHostAddress |
82 | { | 83 | { |
83 | public: | 84 | public: |
84 | OHostAddress(); | 85 | OHostAddress(); |
85 | ~OHostAddress(); | 86 | ~OHostAddress(); |
86 | }; | 87 | }; |
87 | 88 | ||
88 | 89 | ||
89 | /*====================================================================================== | 90 | /*====================================================================================== |
90 | * OPrivateIOCTL | 91 | * OPrivateIOCTL |
91 | *======================================================================================*/ | 92 | *======================================================================================*/ |
92 | 93 | ||
93 | class OPrivateIOCTL : public QObject | 94 | class OPrivateIOCTL : public QObject |
94 | { | 95 | { |
95 | public: | 96 | public: |
96 | OPrivateIOCTL( QObject* parent, const char* name, int cmd, int getargs, int setargs ); | 97 | OPrivateIOCTL( QObject* parent, const char* name, int cmd, int getargs, int setargs ); |
97 | ~OPrivateIOCTL(); | 98 | ~OPrivateIOCTL(); |
98 | 99 | ||
99 | int numberGetArgs() const; | 100 | int numberGetArgs() const; |
100 | int typeGetArgs() const; | 101 | int typeGetArgs() const; |
101 | int numberSetArgs() const; | 102 | int numberSetArgs() const; |
102 | int typeSetArgs() const; | 103 | int typeSetArgs() const; |
103 | 104 | ||
104 | void invoke() const; | 105 | void invoke() const; |
105 | void setParameter( int, u_int32_t ); | 106 | void setParameter( int, u_int32_t ); |
106 | 107 | ||
107 | private: | 108 | private: |
108 | u_int32_t _ioctl; | 109 | u_int32_t _ioctl; |
109 | u_int16_t _getargs; | 110 | u_int16_t _getargs; |
110 | u_int16_t _setargs; | 111 | u_int16_t _setargs; |
111 | 112 | ||
112 | }; | 113 | }; |
113 | 114 | ||
114 | /*====================================================================================== | 115 | /*====================================================================================== |
115 | * Miscellaneous | 116 | * Miscellaneous |
116 | *======================================================================================*/ | 117 | *======================================================================================*/ |
117 | 118 | ||
118 | /* dump bytes */ | 119 | /* dump bytes */ |
119 | 120 | ||
120 | void dumpBytes( const unsigned char* data, int num ); | 121 | void dumpBytes( const unsigned char* data, int num ); |
121 | 122 | ||
122 | /* Network to host order macros */ | 123 | /* Network to host order macros */ |
123 | 124 | ||
124 | #ifdef LBL_ALIGN | 125 | #ifdef LBL_ALIGN |
125 | #define EXTRACT_16BITS(p) \ | 126 | #define EXTRACT_16BITS(p) \ |
126 | ((u_int16_t)((u_int16_t)*((const u_int8_t *)(p) + 0) << 8 | \ | 127 | ((u_int16_t)((u_int16_t)*((const u_int8_t *)(p) + 0) << 8 | \ |
127 | (u_int16_t)*((const u_int8_t *)(p) + 1))) | 128 | (u_int16_t)*((const u_int8_t *)(p) + 1))) |
128 | #define EXTRACT_32BITS(p) \ | 129 | #define EXTRACT_32BITS(p) \ |
129 | ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 0) << 24 | \ | 130 | ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 0) << 24 | \ |
130 | (u_int32_t)*((const u_int8_t *)(p) + 1) << 16 | \ | 131 | (u_int32_t)*((const u_int8_t *)(p) + 1) << 16 | \ |
131 | (u_int32_t)*((const u_int8_t *)(p) + 2) << 8 | \ | 132 | (u_int32_t)*((const u_int8_t *)(p) + 2) << 8 | \ |
132 | (u_int32_t)*((const u_int8_t *)(p) + 3))) | 133 | (u_int32_t)*((const u_int8_t *)(p) + 3))) |
133 | #else | 134 | #else |
134 | #define EXTRACT_16BITS(p) \ | 135 | #define EXTRACT_16BITS(p) \ |
135 | ((u_int16_t)ntohs(*(const u_int16_t *)(p))) | 136 | ((u_int16_t)ntohs(*(const u_int16_t *)(p))) |
136 | #define EXTRACT_32BITS(p) \ | 137 | #define EXTRACT_32BITS(p) \ |
137 | ((u_int32_t)ntohl(*(const u_int32_t *)(p))) | 138 | ((u_int32_t)ntohl(*(const u_int32_t *)(p))) |
138 | #endif | 139 | #endif |
139 | 140 | ||
140 | #define EXTRACT_24BITS(p) \ | 141 | #define EXTRACT_24BITS(p) \ |
141 | ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 0) << 16 | \ | 142 | ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 0) << 16 | \ |
142 | (u_int32_t)*((const u_int8_t *)(p) + 1) << 8 | \ | 143 | (u_int32_t)*((const u_int8_t *)(p) + 1) << 8 | \ |
143 | (u_int32_t)*((const u_int8_t *)(p) + 2))) | 144 | (u_int32_t)*((const u_int8_t *)(p) + 2))) |
144 | 145 | ||
145 | /* Little endian protocol host order macros */ | 146 | /* Little endian protocol host order macros */ |
146 | #define EXTRACT_LE_8BITS(p) (*(p)) | 147 | #define EXTRACT_LE_8BITS(p) (*(p)) |
147 | #define EXTRACT_LE_16BITS(p) \ | 148 | #define EXTRACT_LE_16BITS(p) \ |
148 | ((u_int16_t)((u_int16_t)*((const u_int8_t *)(p) + 1) << 8 | \ | 149 | ((u_int16_t)((u_int16_t)*((const u_int8_t *)(p) + 1) << 8 | \ |
149 | (u_int16_t)*((const u_int8_t *)(p) + 0))) | 150 | (u_int16_t)*((const u_int8_t *)(p) + 0))) |
150 | #define EXTRACT_LE_32BITS(p) \ | 151 | #define EXTRACT_LE_32BITS(p) \ |
151 | ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 3) << 24 | \ | 152 | ((u_int32_t)((u_int32_t)*((const u_int8_t *)(p) + 3) << 24 | \ |
152 | (u_int32_t)*((const u_int8_t *)(p) + 2) << 16 | \ | 153 | (u_int32_t)*((const u_int8_t *)(p) + 2) << 16 | \ |
153 | (u_int32_t)*((const u_int8_t *)(p) + 1) << 8 | \ | 154 | (u_int32_t)*((const u_int8_t *)(p) + 1) << 8 | \ |
154 | (u_int32_t)*((const u_int8_t *)(p) + 0))) | 155 | (u_int32_t)*((const u_int8_t *)(p) + 0))) |
diff --git a/libopie2/opienet/opcap.cpp b/libopie2/opienet/opcap.cpp index 6ddd457..40aac2c 100644 --- a/libopie2/opienet/opcap.cpp +++ b/libopie2/opienet/opcap.cpp | |||
@@ -546,214 +546,214 @@ OWaveLanManagementCF::OWaveLanManagementCF( const unsigned char* end, const stru | |||
546 | qDebug( "OWaveLanManagementCF()" ); | 546 | qDebug( "OWaveLanManagementCF()" ); |
547 | } | 547 | } |
548 | 548 | ||
549 | 549 | ||
550 | OWaveLanManagementCF::~OWaveLanManagementCF() | 550 | OWaveLanManagementCF::~OWaveLanManagementCF() |
551 | { | 551 | { |
552 | } | 552 | } |
553 | 553 | ||
554 | /*====================================================================================== | 554 | /*====================================================================================== |
555 | * OWaveLanManagementFH | 555 | * OWaveLanManagementFH |
556 | *======================================================================================*/ | 556 | *======================================================================================*/ |
557 | 557 | ||
558 | OWaveLanManagementFH::OWaveLanManagementFH( const unsigned char* end, const struct fh_t* data, QObject* parent ) | 558 | OWaveLanManagementFH::OWaveLanManagementFH( const unsigned char* end, const struct fh_t* data, QObject* parent ) |
559 | :QObject( parent, "802.11 FH" ), _data( data ) | 559 | :QObject( parent, "802.11 FH" ), _data( data ) |
560 | { | 560 | { |
561 | qDebug( "OWaveLanManagementFH()" ); | 561 | qDebug( "OWaveLanManagementFH()" ); |
562 | } | 562 | } |
563 | 563 | ||
564 | 564 | ||
565 | OWaveLanManagementFH::~OWaveLanManagementFH() | 565 | OWaveLanManagementFH::~OWaveLanManagementFH() |
566 | { | 566 | { |
567 | } | 567 | } |
568 | 568 | ||
569 | /*====================================================================================== | 569 | /*====================================================================================== |
570 | * OWaveLanManagementDS | 570 | * OWaveLanManagementDS |
571 | *======================================================================================*/ | 571 | *======================================================================================*/ |
572 | 572 | ||
573 | OWaveLanManagementDS::OWaveLanManagementDS( const unsigned char* end, const struct ds_t* data, QObject* parent ) | 573 | OWaveLanManagementDS::OWaveLanManagementDS( const unsigned char* end, const struct ds_t* data, QObject* parent ) |
574 | :QObject( parent, "802.11 DS" ), _data( data ) | 574 | :QObject( parent, "802.11 DS" ), _data( data ) |
575 | { | 575 | { |
576 | qDebug( "OWaveLanManagementDS()" ); | 576 | qDebug( "OWaveLanManagementDS()" ); |
577 | } | 577 | } |
578 | 578 | ||
579 | 579 | ||
580 | OWaveLanManagementDS::~OWaveLanManagementDS() | 580 | OWaveLanManagementDS::~OWaveLanManagementDS() |
581 | { | 581 | { |
582 | } | 582 | } |
583 | 583 | ||
584 | 584 | ||
585 | int OWaveLanManagementDS::channel() const | 585 | int OWaveLanManagementDS::channel() const |
586 | { | 586 | { |
587 | return _data->channel; | 587 | return _data->channel; |
588 | } | 588 | } |
589 | 589 | ||
590 | /*====================================================================================== | 590 | /*====================================================================================== |
591 | * OWaveLanManagementTim | 591 | * OWaveLanManagementTim |
592 | *======================================================================================*/ | 592 | *======================================================================================*/ |
593 | 593 | ||
594 | OWaveLanManagementTim::OWaveLanManagementTim( const unsigned char* end, const struct tim_t* data, QObject* parent ) | 594 | OWaveLanManagementTim::OWaveLanManagementTim( const unsigned char* end, const struct tim_t* data, QObject* parent ) |
595 | :QObject( parent, "802.11 Tim" ), _data( data ) | 595 | :QObject( parent, "802.11 Tim" ), _data( data ) |
596 | { | 596 | { |
597 | qDebug( "OWaveLanManagementTim()" ); | 597 | qDebug( "OWaveLanManagementTim()" ); |
598 | } | 598 | } |
599 | 599 | ||
600 | 600 | ||
601 | OWaveLanManagementTim::~OWaveLanManagementTim() | 601 | OWaveLanManagementTim::~OWaveLanManagementTim() |
602 | { | 602 | { |
603 | } | 603 | } |
604 | 604 | ||
605 | /*====================================================================================== | 605 | /*====================================================================================== |
606 | * OWaveLanManagementIBSS | 606 | * OWaveLanManagementIBSS |
607 | *======================================================================================*/ | 607 | *======================================================================================*/ |
608 | 608 | ||
609 | OWaveLanManagementIBSS::OWaveLanManagementIBSS( const unsigned char* end, const struct ibss_t* data, QObject* parent ) | 609 | OWaveLanManagementIBSS::OWaveLanManagementIBSS( const unsigned char* end, const struct ibss_t* data, QObject* parent ) |
610 | :QObject( parent, "802.11 IBSS" ), _data( data ) | 610 | :QObject( parent, "802.11 IBSS" ), _data( data ) |
611 | { | 611 | { |
612 | qDebug( "OWaveLanManagementIBSS()" ); | 612 | qDebug( "OWaveLanManagementIBSS()" ); |
613 | } | 613 | } |
614 | 614 | ||
615 | 615 | ||
616 | OWaveLanManagementIBSS::~OWaveLanManagementIBSS() | 616 | OWaveLanManagementIBSS::~OWaveLanManagementIBSS() |
617 | { | 617 | { |
618 | } | 618 | } |
619 | 619 | ||
620 | /*====================================================================================== | 620 | /*====================================================================================== |
621 | * OWaveLanManagementChallenge | 621 | * OWaveLanManagementChallenge |
622 | *======================================================================================*/ | 622 | *======================================================================================*/ |
623 | 623 | ||
624 | OWaveLanManagementChallenge::OWaveLanManagementChallenge( const unsigned char* end, const struct challenge_t* data, QObject* parent ) | 624 | OWaveLanManagementChallenge::OWaveLanManagementChallenge( const unsigned char* end, const struct challenge_t* data, QObject* parent ) |
625 | :QObject( parent, "802.11 Challenge" ), _data( data ) | 625 | :QObject( parent, "802.11 Challenge" ), _data( data ) |
626 | { | 626 | { |
627 | qDebug( "OWaveLanManagementChallenge()" ); | 627 | qDebug( "OWaveLanManagementChallenge()" ); |
628 | } | 628 | } |
629 | 629 | ||
630 | 630 | ||
631 | OWaveLanManagementChallenge::~OWaveLanManagementChallenge() | 631 | OWaveLanManagementChallenge::~OWaveLanManagementChallenge() |
632 | { | 632 | { |
633 | } | 633 | } |
634 | 634 | ||
635 | /*====================================================================================== | 635 | /*====================================================================================== |
636 | * OWaveLanDataPacket | 636 | * OWaveLanDataPacket |
637 | *======================================================================================*/ | 637 | *======================================================================================*/ |
638 | 638 | ||
639 | OWaveLanDataPacket::OWaveLanDataPacket( const unsigned char* end, const struct ieee_802_11_data_header* data, OWaveLanPacket* parent ) | 639 | OWaveLanDataPacket::OWaveLanDataPacket( const unsigned char* end, const struct ieee_802_11_data_header* data, OWaveLanPacket* parent ) |
640 | :QObject( parent, "802.11 Data" ), _header( data ) | 640 | :QObject( parent, "802.11 Data" ), _header( data ) |
641 | { | 641 | { |
642 | //qDebug( "size of header = %d", sizeof( struct ieee_802_11_data_header ) ); | 642 | qDebug( "OWaveLanDataPacket::OWaveLanDataPacket(): decoding frame..." ); |
643 | //qDebug( "header: %0x", data ); | 643 | |
644 | const unsigned char* payload = (const unsigned char*) data + sizeof( struct ieee_802_11_data_header ); | 644 | const unsigned char* payload = (const unsigned char*) data + sizeof( struct ieee_802_11_data_header ); |
645 | //qDebug( "payload: %0x", payload ); | ||
646 | 645 | ||
646 | #warning The next line works for most cases, but can not be correct generally! | ||
647 | if (!( ( (OWaveLanPacket*) this->parent())->duration() )) payload -= 6; // compensation for missing last address | 647 | if (!( ( (OWaveLanPacket*) this->parent())->duration() )) payload -= 6; // compensation for missing last address |
648 | 648 | ||
649 | new OLLCPacket( end, (const struct ieee_802_11_802_2_header*) payload, this ); | 649 | new OLLCPacket( end, (const struct ieee_802_11_802_2_header*) payload, this ); |
650 | } | 650 | } |
651 | 651 | ||
652 | 652 | ||
653 | OWaveLanDataPacket::~OWaveLanDataPacket() | 653 | OWaveLanDataPacket::~OWaveLanDataPacket() |
654 | { | 654 | { |
655 | } | 655 | } |
656 | 656 | ||
657 | 657 | ||
658 | /*====================================================================================== | 658 | /*====================================================================================== |
659 | * OLLCPacket | 659 | * OLLCPacket |
660 | *======================================================================================*/ | 660 | *======================================================================================*/ |
661 | 661 | ||
662 | OLLCPacket::OLLCPacket( const unsigned char* end, const struct ieee_802_11_802_2_header* data, QObject* parent ) | 662 | OLLCPacket::OLLCPacket( const unsigned char* end, const struct ieee_802_11_802_2_header* data, QObject* parent ) |
663 | :QObject( parent, "802.11 802_2" ), _header( data ) | 663 | :QObject( parent, "802.11 LLC" ), _header( data ) |
664 | { | 664 | { |
665 | qDebug( "OLLCPacket::OLLCPacket(): decoding frame..." ); | 665 | qDebug( "OLLCPacket::OLLCPacket(): decoding frame..." ); |
666 | 666 | ||
667 | if ( !(_header->oui[0] || _header->oui[1] || _header->oui[2]) ) | 667 | if ( !(_header->oui[0] || _header->oui[1] || _header->oui[2]) ) |
668 | { | 668 | { |
669 | qDebug( "OLLCPacket::OLLCPacket(): contains an encapsulated Ethernet frame (type=%04X)", EXTRACT_16BITS( &_header->type ) ); | 669 | qDebug( "OLLCPacket::OLLCPacket(): contains an encapsulated Ethernet frame (type=%04X)", EXTRACT_16BITS( &_header->type ) ); |
670 | 670 | ||
671 | switch ( EXTRACT_16BITS( &_header->type ) ) // defined in linux/if_ether.h | 671 | switch ( EXTRACT_16BITS( &_header->type ) ) // defined in linux/if_ether.h |
672 | { | 672 | { |
673 | case ETH_P_IP: new OIPPacket( end, (const struct iphdr*) (data+1), this ); break; | 673 | case ETH_P_IP: new OIPPacket( end, (const struct iphdr*) (data+1), this ); break; |
674 | default: qDebug( "OLLCPacket::OLLCPacket(): Unknown Encapsulation Type" ); | 674 | default: qDebug( "OLLCPacket::OLLCPacket(): Unknown Encapsulation Type" ); |
675 | } | 675 | } |
676 | 676 | ||
677 | } | 677 | } |
678 | } | 678 | } |
679 | 679 | ||
680 | 680 | ||
681 | OLLCPacket::~OLLCPacket() | 681 | OLLCPacket::~OLLCPacket() |
682 | { | 682 | { |
683 | } | 683 | } |
684 | 684 | ||
685 | /*====================================================================================== | 685 | /*====================================================================================== |
686 | * OPacketCapturer | 686 | * OPacketCapturer |
687 | *======================================================================================*/ | 687 | *======================================================================================*/ |
688 | 688 | ||
689 | OPacketCapturer::OPacketCapturer( QObject* parent, const char* name ) | 689 | OPacketCapturer::OPacketCapturer( QObject* parent, const char* name ) |
690 | :QObject( parent, name ), _name( QString::null ), _open( false ), | 690 | :QObject( parent, name ), _name( QString::null ), _open( false ), |
691 | _pch( 0 ), _sn( 0 ) | 691 | _pch( 0 ), _sn( 0 ) |
692 | { | 692 | { |
693 | } | 693 | } |
694 | 694 | ||
695 | 695 | ||
696 | OPacketCapturer::~OPacketCapturer() | 696 | OPacketCapturer::~OPacketCapturer() |
697 | { | 697 | { |
698 | if ( _open ) | 698 | if ( _open ) |
699 | { | 699 | { |
700 | qDebug( "OPacketCapturer::~OPacketCapturer(): pcap still open, autoclosing." ); | 700 | qDebug( "OPacketCapturer::~OPacketCapturer(): pcap still open, autoclosing." ); |
701 | close(); | 701 | close(); |
702 | } | 702 | } |
703 | } | 703 | } |
704 | 704 | ||
705 | 705 | ||
706 | void OPacketCapturer::setBlocking( bool b ) | 706 | void OPacketCapturer::setBlocking( bool b ) |
707 | { | 707 | { |
708 | if ( pcap_setnonblock( _pch, 1-b, _errbuf ) != -1 ) | 708 | if ( pcap_setnonblock( _pch, 1-b, _errbuf ) != -1 ) |
709 | { | 709 | { |
710 | qDebug( "OPacketCapturer::setBlocking(): blocking mode changed successfully." ); | 710 | qDebug( "OPacketCapturer::setBlocking(): blocking mode changed successfully." ); |
711 | } | 711 | } |
712 | else | 712 | else |
713 | { | 713 | { |
714 | qDebug( "OPacketCapturer::setBlocking(): can't change blocking mode: %s", _errbuf ); | 714 | qDebug( "OPacketCapturer::setBlocking(): can't change blocking mode: %s", _errbuf ); |
715 | } | 715 | } |
716 | } | 716 | } |
717 | 717 | ||
718 | 718 | ||
719 | bool OPacketCapturer::blocking() const | 719 | bool OPacketCapturer::blocking() const |
720 | { | 720 | { |
721 | int b = pcap_getnonblock( _pch, _errbuf ); | 721 | int b = pcap_getnonblock( _pch, _errbuf ); |
722 | if ( b == -1 ) | 722 | if ( b == -1 ) |
723 | { | 723 | { |
724 | qDebug( "OPacketCapturer::blocking(): can't get blocking mode: %s", _errbuf ); | 724 | qDebug( "OPacketCapturer::blocking(): can't get blocking mode: %s", _errbuf ); |
725 | return -1; | 725 | return -1; |
726 | } | 726 | } |
727 | return !b; | 727 | return !b; |
728 | } | 728 | } |
729 | 729 | ||
730 | 730 | ||
731 | void OPacketCapturer::close() | 731 | void OPacketCapturer::close() |
732 | { | 732 | { |
733 | if ( _open ) | 733 | if ( _open ) |
734 | { | 734 | { |
735 | if ( _sn ) | 735 | if ( _sn ) |
736 | { | 736 | { |
737 | _sn->disconnect( SIGNAL( activated(int) ), this, SLOT( readyToReceive() ) ); | 737 | _sn->disconnect( SIGNAL( activated(int) ), this, SLOT( readyToReceive() ) ); |
738 | delete _sn; | 738 | delete _sn; |
739 | } | 739 | } |
740 | pcap_close( _pch ); | 740 | pcap_close( _pch ); |
741 | _open = false; | 741 | _open = false; |
742 | } | 742 | } |
743 | } | 743 | } |
744 | 744 | ||
745 | 745 | ||
746 | int OPacketCapturer::dataLink() const | 746 | int OPacketCapturer::dataLink() const |
747 | { | 747 | { |
748 | return pcap_datalink( _pch ); | 748 | return pcap_datalink( _pch ); |
749 | } | 749 | } |
750 | 750 | ||
751 | 751 | ||
752 | int OPacketCapturer::fileno() const | 752 | int OPacketCapturer::fileno() const |
753 | { | 753 | { |
754 | if ( _open ) | 754 | if ( _open ) |
755 | { | 755 | { |
756 | return pcap_fileno( _pch ); | 756 | return pcap_fileno( _pch ); |
757 | } | 757 | } |
758 | else | 758 | else |
759 | { | 759 | { |
diff --git a/libopie2/opienet/opienet.pro b/libopie2/opienet/opienet.pro index e73afbf..3f9166a 100644 --- a/libopie2/opienet/opienet.pro +++ b/libopie2/opienet/opienet.pro | |||
@@ -1,18 +1,22 @@ | |||
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 = onetutils.cpp onetwork.h opcap.h | 4 | HEADERS = omanufacturerdb.cpp \ |
5 | 5 | onetutils.cpp \ | |
6 | SOURCES = onetutils.cpp onetwork.cpp opcap.cpp | 6 | onetwork.h \ |
7 | opcap.h | ||
8 | SOURCES = omanufacturerdb.cpp \ | ||
9 | onetutils.cpp \ | ||
10 | onetwork.cpp \ | ||
11 | opcap.cpp | ||
7 | INTERFACES = | 12 | INTERFACES = |
8 | TARGET = opienet2 | 13 | TARGET = opienet2 |
9 | VERSION = 1.8.1 | 14 | VERSION = 1.8.1 |
10 | INCLUDEPATH += $(OPIEDIR)/include | 15 | INCLUDEPATH += $(OPIEDIR)/include |
11 | DEPENDPATH += $(OPIEDIR)/include | 16 | DEPENDPATH += $(OPIEDIR)/include |
12 | LIBS += -lpcap | 17 | LIBS += -lpcap |
13 | |||
14 | MOC_DIR = moc | 18 | MOC_DIR = moc |
15 | OBJECTS_DIR = obj | 19 | OBJECTS_DIR = obj |
16 | 20 | ||
17 | include ( $(OPIEDIR)/include.pro ) | 21 | include ( $(OPIEDIR)/include.pro ) |
18 | 22 | ||