author | mickeyl <mickeyl> | 2005-05-16 17:48:03 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2005-05-16 17:48:03 (UTC) |
commit | d2426de3452342ab4af8e95214b9ff408f30744e (patch) (unidiff) | |
tree | 41eb23ab226a83778112aaf6d14ab3e8fc5dc896 | |
parent | a0276f0957bd503491e8d435b7ad1a6479ce24eb (diff) | |
download | opie-d2426de3452342ab4af8e95214b9ff408f30744e.zip opie-d2426de3452342ab4af8e95214b9ff408f30744e.tar.gz opie-d2426de3452342ab4af8e95214b9ff408f30744e.tar.bz2 |
- add ONetworkInterfaceDriverInfo block extracting info using ethtool ioctls
- adjust example
-rw-r--r-- | examples/opienet/onetworkdemo/onetworkdemo.cpp | 5 | ||||
-rw-r--r-- | libopie2/opienet/onetutils.h | 26 | ||||
-rw-r--r-- | libopie2/opienet/onetwork.cpp | 31 | ||||
-rw-r--r-- | libopie2/opienet/onetwork.h | 7 | ||||
-rw-r--r-- | libopie2/opienet/opienet.pro | 2 |
5 files changed, 60 insertions, 11 deletions
diff --git a/examples/opienet/onetworkdemo/onetworkdemo.cpp b/examples/opienet/onetworkdemo/onetworkdemo.cpp index e0c93a2..b3a1115 100644 --- a/examples/opienet/onetworkdemo/onetworkdemo.cpp +++ b/examples/opienet/onetworkdemo/onetworkdemo.cpp | |||
@@ -48,6 +48,11 @@ int main( int argc, char** argv ) | |||
48 | while ( it.current() ) | 48 | while ( it.current() ) |
49 | { | 49 | { |
50 | odebug << "DEMO: ONetwork contains Interface '" << it.current()->name() << "'" << oendl; | 50 | odebug << "DEMO: ONetwork contains Interface '" << it.current()->name() << "'" << oendl; |
51 | ONetworkInterfaceDriverInfo info = it.current()->driverInfo(); | ||
52 | odebug << "DEMO: DriverName reported as '" << info.name() << "'" << oendl; | ||
53 | odebug << "DEMO: DriverVersion reported as '" << info.version() << "'" << oendl; | ||
54 | odebug << "DEMO: DriverFirmware reported as '" << info.firmware() << "'" << oendl; | ||
55 | odebug << "DEMO: DriverBus reported as '" << info.bus() << "'" << oendl; | ||
51 | odebug << "DEMO: Datalink code is '" << it.current()->dataLinkType() << "'" << oendl; | 56 | odebug << "DEMO: Datalink code is '" << it.current()->dataLinkType() << "'" << oendl; |
52 | odebug << "DEMO: MAC Address is '" << it.current()->macAddress().toString() << "'" << oendl; | 57 | odebug << "DEMO: MAC Address is '" << it.current()->macAddress().toString() << "'" << oendl; |
53 | odebug << "DEMO: MAC Address is '" << it.current()->macAddress().toString(true) << "'" << oendl; | 58 | odebug << "DEMO: MAC Address is '" << it.current()->macAddress().toString(true) << "'" << oendl; |
diff --git a/libopie2/opienet/onetutils.h b/libopie2/opienet/onetutils.h index 32f5355..25c9238 100644 --- a/libopie2/opienet/onetutils.h +++ b/libopie2/opienet/onetutils.h | |||
@@ -100,6 +100,32 @@ class OHostAddress : public QHostAddress | |||
100 | 100 | ||
101 | 101 | ||
102 | /*====================================================================================== | 102 | /*====================================================================================== |
103 | * ONetworkInterfaceDriverInfo | ||
104 | *======================================================================================*/ | ||
105 | |||
106 | class ONetworkInterfaceDriverInfo | ||
107 | { | ||
108 | public: | ||
109 | ONetworkInterfaceDriverInfo( const QString& name = "<unknown>", | ||
110 | const QString& version = "<unknown>", | ||
111 | const QString& firmware = "<unknown>", | ||
112 | const QString& bus = "<unknown>" ) : | ||
113 | _name( name ), _version( version ), _firmware( firmware ), _bus( bus ) { }; | ||
114 | ~ONetworkInterfaceDriverInfo() { }; | ||
115 | |||
116 | QString name() const { return _name; }; | ||
117 | QString version() const { return _version; }; | ||
118 | QString firmware() const { return _firmware; }; | ||
119 | QString bus() const { return _bus; }; | ||
120 | |||
121 | private: | ||
122 | const QString _name; | ||
123 | const QString _version; | ||
124 | const QString _firmware; | ||
125 | const QString _bus; | ||
126 | }; | ||
127 | |||
128 | /*====================================================================================== | ||
103 | * OPrivateIOCTL | 129 | * OPrivateIOCTL |
104 | *======================================================================================*/ | 130 | *======================================================================================*/ |
105 | 131 | ||
diff --git a/libopie2/opienet/onetwork.cpp b/libopie2/opienet/onetwork.cpp index 05513f8..1deb051 100644 --- a/libopie2/opienet/onetwork.cpp +++ b/libopie2/opienet/onetwork.cpp | |||
@@ -29,38 +29,40 @@ | |||
29 | */ | 29 | */ |
30 | 30 | ||
31 | /* OPIE */ | 31 | /* OPIE */ |
32 | |||
33 | #include <opie2/onetwork.h> | 32 | #include <opie2/onetwork.h> |
34 | #include <opie2/ostation.h> | 33 | #include <opie2/ostation.h> |
35 | #include <opie2/odebug.h> | 34 | #include <opie2/odebug.h> |
35 | using namespace Opie::Core; | ||
36 | 36 | ||
37 | /* QT */ | 37 | /* QT */ |
38 | |||
39 | #include <qfile.h> | 38 | #include <qfile.h> |
40 | #include <qtextstream.h> | 39 | #include <qtextstream.h> |
41 | #include <qapplication.h> | 40 | #include <qapplication.h> |
42 | 41 | ||
43 | /* UNIX */ | 42 | /* STD */ |
44 | |||
45 | #include <assert.h> | 43 | #include <assert.h> |
46 | #include <arpa/inet.h> | 44 | #include <arpa/inet.h> |
47 | #include <errno.h> | 45 | #include <errno.h> |
46 | #include <stdarg.h> | ||
48 | #include <string.h> | 47 | #include <string.h> |
49 | #include <stdlib.h> | 48 | #include <stdlib.h> |
50 | #include <math.h> | 49 | #include <math.h> |
50 | #include <unistd.h> | ||
51 | #include <net/if_arp.h> | ||
52 | #include <net/ethernet.h> | ||
51 | #include <sys/ioctl.h> | 53 | #include <sys/ioctl.h> |
52 | #include <sys/socket.h> | 54 | #include <sys/socket.h> |
53 | #include <sys/types.h> | 55 | #include <sys/types.h> |
54 | #include <unistd.h> | 56 | #include <linux/types.h> |
55 | #include <linux/sockios.h> | 57 | #include <linux/sockios.h> |
56 | #include <net/if_arp.h> | 58 | #define u64 __u64 |
57 | #include <net/ethernet.h> | 59 | #define u32 __u32 |
58 | #include <stdarg.h> | 60 | #define u16 __u16 |
61 | #define u8 __u8 | ||
62 | #include <linux/ethtool.h> | ||
59 | 63 | ||
60 | #ifndef NODEBUG | 64 | #ifndef NODEBUG |
61 | #include <opie2/odebugmapper.h> | 65 | #include <opie2/odebugmapper.h> |
62 | |||
63 | using namespace Opie::Core; | ||
64 | using namespace Opie::Net::Internal; | 66 | using namespace Opie::Net::Internal; |
65 | DebugMapper* debugmapper = new DebugMapper(); | 67 | DebugMapper* debugmapper = new DebugMapper(); |
66 | #endif | 68 | #endif |
@@ -381,6 +383,14 @@ bool ONetworkInterface::isWireless() const | |||
381 | } | 383 | } |
382 | 384 | ||
383 | 385 | ||
386 | ONetworkInterfaceDriverInfo ONetworkInterface::driverInfo() const | ||
387 | { | ||
388 | struct ethtool_drvinfo info; | ||
389 | info.cmd = ETHTOOL_GDRVINFO; | ||
390 | _ifr.ifr_data = (caddr_t) &info; | ||
391 | return ioctl( SIOCETHTOOL ) ? ONetworkInterfaceDriverInfo( info.driver, info.version, info.fw_version, info.bus_info) : ONetworkInterfaceDriverInfo(); | ||
392 | } | ||
393 | |||
384 | /*====================================================================================== | 394 | /*====================================================================================== |
385 | * OChannelHopper | 395 | * OChannelHopper |
386 | *======================================================================================*/ | 396 | *======================================================================================*/ |
@@ -405,6 +415,7 @@ OChannelHopper::OChannelHopper( OWirelessNetworkInterface* iface ) | |||
405 | if ( _maxChannel >= 11 ) _channels.append( 11 ); | 415 | if ( _maxChannel >= 11 ) _channels.append( 11 ); |
406 | if ( _maxChannel >= 6 ) _channels.append( 6 ); | 416 | if ( _maxChannel >= 6 ) _channels.append( 6 ); |
407 | if ( _maxChannel >= 12 ) _channels.append( 12 ); | 417 | if ( _maxChannel >= 12 ) _channels.append( 12 ); |
418 | //FIXME: Add 802.11a/g channels | ||
408 | _channel = _channels.begin(); | 419 | _channel = _channels.begin(); |
409 | } | 420 | } |
410 | 421 | ||
diff --git a/libopie2/opienet/onetwork.h b/libopie2/opienet/onetwork.h index fa9f39f..f0c4450 100644 --- a/libopie2/opienet/onetwork.h +++ b/libopie2/opienet/onetwork.h | |||
@@ -202,6 +202,7 @@ class ONetworkInterface : public QObject | |||
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 | * @note This operation needs root privileges | ||
205 | * @warning This is not supported by all drivers. | 206 | * @warning This is not supported by all drivers. |
206 | */ | 207 | */ |
207 | void setMacAddress( const OMacAddress& addr ); | 208 | void setMacAddress( const OMacAddress& addr ); |
@@ -222,6 +223,12 @@ class ONetworkInterface : public QObject | |||
222 | * @see #include <net/if_arp.h> for possible values. | 223 | * @see #include <net/if_arp.h> for possible values. |
223 | */ | 224 | */ |
224 | int dataLinkType() const; | 225 | int dataLinkType() const; |
226 | /** | ||
227 | * @returns a ONetworkInterfaceDriverInfo driver information block | ||
228 | * @note This operation needs root privileges | ||
229 | * @warning This is not supported by all drivers | ||
230 | */ | ||
231 | ONetworkInterfaceDriverInfo driverInfo() const; | ||
225 | 232 | ||
226 | protected: | 233 | protected: |
227 | const int _sfd; | 234 | const int _sfd; |
diff --git a/libopie2/opienet/opienet.pro b/libopie2/opienet/opienet.pro index 460de0a..854e5ff 100644 --- a/libopie2/opienet/opienet.pro +++ b/libopie2/opienet/opienet.pro | |||
@@ -18,7 +18,7 @@ SOURCES = odebugmapper.cpp \ | |||
18 | ostation.cpp | 18 | ostation.cpp |
19 | INTERFACES = | 19 | INTERFACES = |
20 | TARGET = opienet2 | 20 | TARGET = opienet2 |
21 | VERSION = 1.8.6 | 21 | VERSION = 1.8.7 |
22 | INCLUDEPATH += $(OPIEDIR)/include | 22 | INCLUDEPATH += $(OPIEDIR)/include |
23 | DEPENDPATH += $(OPIEDIR)/include | 23 | DEPENDPATH += $(OPIEDIR)/include |
24 | LIBS += -lpcap | 24 | LIBS += -lpcap |