summaryrefslogtreecommitdiff
path: root/libopie2/opienet
authormickeyl <mickeyl>2004-02-24 22:56:24 (UTC)
committer mickeyl <mickeyl>2004-02-24 22:56:24 (UTC)
commit96ba6fcf27c785282c3fe05557df8b384df06852 (patch) (unidiff)
tree9b25648f8518c8d152d4774ac05f81548828f3d5 /libopie2/opienet
parenta1a6a1013eae9a4ca4607f2d656c98821a30f431 (diff)
downloadopie-96ba6fcf27c785282c3fe05557df8b384df06852.zip
opie-96ba6fcf27c785282c3fe05557df8b384df06852.tar.gz
opie-96ba6fcf27c785282c3fe05557df8b384df06852.tar.bz2
API extension: ONetwork::isPresent( const char* name )
Diffstat (limited to 'libopie2/opienet') (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opienet/onetwork.cpp11
-rw-r--r--libopie2/opienet/onetwork.h4
2 files changed, 15 insertions, 0 deletions
diff --git a/libopie2/opienet/onetwork.cpp b/libopie2/opienet/onetwork.cpp
index 915814d..e5b091f 100644
--- a/libopie2/opienet/onetwork.cpp
+++ b/libopie2/opienet/onetwork.cpp
@@ -99,96 +99,107 @@ void ONetwork::synchronize()
99 odebug << "ONetwork: found interface '" << str << "'" << oendl; 99 odebug << "ONetwork: found interface '" << str << "'" << oendl;
100 ONetworkInterface* iface; 100 ONetworkInterface* iface;
101 if ( isWirelessInterface( str ) ) 101 if ( isWirelessInterface( str ) )
102 { 102 {
103 iface = new OWirelessNetworkInterface( this, (const char*) str ); 103 iface = new OWirelessNetworkInterface( this, (const char*) str );
104 odebug << "ONetwork: interface '" << str << "' has Wireless Extensions" << oendl; 104 odebug << "ONetwork: interface '" << str << "' has Wireless Extensions" << oendl;
105 } 105 }
106 else 106 else
107 { 107 {
108 iface = new ONetworkInterface( this, (const char*) str ); 108 iface = new ONetworkInterface( this, (const char*) str );
109 } 109 }
110 _interfaces.insert( str, iface ); 110 _interfaces.insert( str, iface );
111 s.readLine(); 111 s.readLine();
112 } 112 }
113} 113}
114 114
115 115
116short ONetwork::wirelessExtensionVersion() 116short ONetwork::wirelessExtensionVersion()
117{ 117{
118 return WIRELESS_EXT; 118 return WIRELESS_EXT;
119} 119}
120 120
121 121
122int ONetwork::count() const 122int ONetwork::count() const
123{ 123{
124 return _interfaces.count(); 124 return _interfaces.count();
125} 125}
126 126
127 127
128ONetworkInterface* ONetwork::interface( const QString& iface ) const 128ONetworkInterface* ONetwork::interface( const QString& iface ) const
129{ 129{
130 return _interfaces[iface]; 130 return _interfaces[iface];
131} 131}
132 132
133 133
134ONetwork* ONetwork::instance() 134ONetwork* ONetwork::instance()
135{ 135{
136 if ( !_instance ) _instance = new ONetwork(); 136 if ( !_instance ) _instance = new ONetwork();
137 return _instance; 137 return _instance;
138} 138}
139 139
140 140
141ONetwork::InterfaceIterator ONetwork::iterator() const 141ONetwork::InterfaceIterator ONetwork::iterator() const
142{ 142{
143 return ONetwork::InterfaceIterator( _interfaces ); 143 return ONetwork::InterfaceIterator( _interfaces );
144} 144}
145 145
146 146
147bool ONetwork::isPresent( const char* name ) const
148{
149 int sfd = socket( AF_INET, SOCK_STREAM, 0 );
150 struct ifreq ifr;
151 memset( &ifr, 0, sizeof( struct ifreq ) );
152 strcpy( (char*) &ifr.ifr_name, name );
153 int result = ::ioctl( sfd, SIOCGIFFLAGS, &ifr );
154 return result != -1;
155}
156
157
147bool ONetwork::isWirelessInterface( const char* name ) const 158bool ONetwork::isWirelessInterface( const char* name ) const
148{ 159{
149 int sfd = socket( AF_INET, SOCK_STREAM, 0 ); 160 int sfd = socket( AF_INET, SOCK_STREAM, 0 );
150 struct iwreq iwr; 161 struct iwreq iwr;
151 memset( &iwr, 0, sizeof( struct iwreq ) ); 162 memset( &iwr, 0, sizeof( struct iwreq ) );
152 strcpy( (char*) &iwr.ifr_name, name ); 163 strcpy( (char*) &iwr.ifr_name, name );
153 int result = ::ioctl( sfd, SIOCGIWNAME, &iwr ); 164 int result = ::ioctl( sfd, SIOCGIWNAME, &iwr );
154 return result != -1; 165 return result != -1;
155} 166}
156 167
157/*====================================================================================== 168/*======================================================================================
158 * ONetworkInterface 169 * ONetworkInterface
159 *======================================================================================*/ 170 *======================================================================================*/
160 171
161ONetworkInterface::ONetworkInterface( QObject* parent, const char* name ) 172ONetworkInterface::ONetworkInterface( QObject* parent, const char* name )
162 :QObject( parent, name ), 173 :QObject( parent, name ),
163 _sfd( socket( AF_INET, SOCK_DGRAM, 0 ) ), _mon( 0 ) 174 _sfd( socket( AF_INET, SOCK_DGRAM, 0 ) ), _mon( 0 )
164{ 175{
165 odebug << "ONetworkInterface::ONetworkInterface()" << oendl; 176 odebug << "ONetworkInterface::ONetworkInterface()" << oendl;
166 init(); 177 init();
167} 178}
168 179
169 180
170struct ifreq& ONetworkInterface::ifr() const 181struct ifreq& ONetworkInterface::ifr() const
171{ 182{
172 return _ifr; 183 return _ifr;
173} 184}
174 185
175 186
176void ONetworkInterface::init() 187void ONetworkInterface::init()
177{ 188{
178 odebug << "ONetworkInterface::init()" << oendl; 189 odebug << "ONetworkInterface::init()" << oendl;
179 190
180 memset( &_ifr, 0, sizeof( struct ifreq ) ); 191 memset( &_ifr, 0, sizeof( struct ifreq ) );
181 192
182 if ( _sfd == -1 ) 193 if ( _sfd == -1 )
183 { 194 {
184 odebug << "ONetworkInterface::init(): Warning - can't get socket for device '" << name() << "'" << oendl; 195 odebug << "ONetworkInterface::init(): Warning - can't get socket for device '" << name() << "'" << oendl;
185 return; 196 return;
186 } 197 }
187} 198}
188 199
189 200
190bool ONetworkInterface::ioctl( int call, struct ifreq& ifreq ) const 201bool ONetworkInterface::ioctl( int call, struct ifreq& ifreq ) const
191{ 202{
192 #ifndef NODEBUG 203 #ifndef NODEBUG
193 int result = ::ioctl( _sfd, call, &ifreq ); 204 int result = ::ioctl( _sfd, call, &ifreq );
194 if ( result == -1 ) 205 if ( result == -1 )
diff --git a/libopie2/opienet/onetwork.h b/libopie2/opienet/onetwork.h
index 0a51108..93b129f 100644
--- a/libopie2/opienet/onetwork.h
+++ b/libopie2/opienet/onetwork.h
@@ -49,96 +49,100 @@
49#include <opie2/ostation.h> 49#include <opie2/ostation.h>
50 50
51/* QT */ 51/* QT */
52 52
53#include <qvaluelist.h> 53#include <qvaluelist.h>
54#include <qdict.h> 54#include <qdict.h>
55#include <qmap.h> 55#include <qmap.h>
56#include <qobject.h> 56#include <qobject.h>
57#include <qhostaddress.h> 57#include <qhostaddress.h>
58 58
59class ONetworkInterface; 59class ONetworkInterface;
60class OWirelessNetworkInterface; 60class OWirelessNetworkInterface;
61class OChannelHopper; 61class OChannelHopper;
62class OMonitoringInterface; 62class OMonitoringInterface;
63 63
64/*====================================================================================== 64/*======================================================================================
65 * ONetwork 65 * ONetwork
66 *======================================================================================*/ 66 *======================================================================================*/
67 67
68/** 68/**
69 * @brief A container class for all network interfaces 69 * @brief A container class for all network interfaces
70 * 70 *
71 * This class provides access to all available network interfaces of your computer. 71 * This class provides access to all available network interfaces of your computer.
72 * 72 *
73 * @author Michael 'Mickey' Lauer <mickey@vanille.de> 73 * @author Michael 'Mickey' Lauer <mickey@vanille.de>
74 */ 74 */
75class ONetwork : public QObject 75class ONetwork : public QObject
76{ 76{
77 Q_OBJECT 77 Q_OBJECT
78 78
79 public: 79 public:
80 typedef QDict<ONetworkInterface> InterfaceMap; 80 typedef QDict<ONetworkInterface> InterfaceMap;
81 typedef QDictIterator<ONetworkInterface> InterfaceIterator; 81 typedef QDictIterator<ONetworkInterface> InterfaceIterator;
82 82
83 public: 83 public:
84 /** 84 /**
85 * @returns the number of available interfaces 85 * @returns the number of available interfaces
86 */ 86 */
87 int count() const; 87 int count() const;
88 /** 88 /**
89 * @returns a pointer to the (one and only) @ref ONetwork instance. 89 * @returns a pointer to the (one and only) @ref ONetwork instance.
90 */ 90 */
91 static ONetwork* instance(); 91 static ONetwork* instance();
92 /** 92 /**
93 * @returns an iterator usable for iterating through all network interfaces. 93 * @returns an iterator usable for iterating through all network interfaces.
94 */ 94 */
95 InterfaceIterator iterator() const; 95 InterfaceIterator iterator() const;
96 /** 96 /**
97 * @returns true, if the @a interface is present.
98 */
99 bool isPresent( const char* interface ) const;
100 /**
97 * @returns true, if the @a interface supports the wireless extension protocol. 101 * @returns true, if the @a interface supports the wireless extension protocol.
98 */ 102 */
99 bool isWirelessInterface( const char* interface ) const; 103 bool isWirelessInterface( const char* interface ) const;
100 /** 104 /**
101 * @returns a pointer to the @ref ONetworkInterface object for the specified @a interface or 0, if not found. 105 * @returns a pointer to the @ref ONetworkInterface object for the specified @a interface or 0, if not found.
102 * @see ONetworkInterface 106 * @see ONetworkInterface
103 */ 107 */
104 ONetworkInterface* interface( const QString& interface ) const; 108 ONetworkInterface* interface( const QString& interface ) const;
105 /** 109 /**
106 * @internal Rebuild the internal interface database 110 * @internal Rebuild the internal interface database
107 * @note Sometimes it might be useful to call this from client code, 111 * @note Sometimes it might be useful to call this from client code,
108 * e.g. after issuing a cardctl insert 112 * e.g. after issuing a cardctl insert
109 */ 113 */
110 void synchronize(); 114 void synchronize();
111 /** 115 /**
112 * @returns the wireless extension version used at compile time. 116 * @returns the wireless extension version used at compile time.
113 **/ 117 **/
114 static short wirelessExtensionVersion(); 118 static short wirelessExtensionVersion();
115 119
116 protected: 120 protected:
117 ONetwork(); 121 ONetwork();
118 122
119 private: 123 private:
120 static ONetwork* _instance; 124 static ONetwork* _instance;
121 InterfaceMap _interfaces; 125 InterfaceMap _interfaces;
122}; 126};
123 127
124 128
125/*====================================================================================== 129/*======================================================================================
126 * ONetworkInterface 130 * ONetworkInterface
127 *======================================================================================*/ 131 *======================================================================================*/
128 132
129/** 133/**
130 * @brief A network interface wrapper. 134 * @brief A network interface wrapper.
131 * 135 *
132 * 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
133 * Linux ioctls are hidden under a convenient high-level interface. 137 * Linux ioctls are hidden under a convenient high-level interface.
134 * @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
135 * process permissions to work. 139 * process permissions to work.
136 * 140 *
137 * @author Michael 'Mickey' Lauer <mickey@vanille.de> 141 * @author Michael 'Mickey' Lauer <mickey@vanille.de>
138 */ 142 */
139class ONetworkInterface : public QObject 143class ONetworkInterface : public QObject
140{ 144{
141 friend class OMonitoringInterface; 145 friend class OMonitoringInterface;
142 friend class OCiscoMonitoringInterface; 146 friend class OCiscoMonitoringInterface;
143 friend class OWlanNGMonitoringInterface; 147 friend class OWlanNGMonitoringInterface;
144 friend class OHostAPMonitoringInterface; 148 friend class OHostAPMonitoringInterface;