summaryrefslogtreecommitdiff
path: root/libopie2/opienet/onetwork.cpp
Unidiff
Diffstat (limited to 'libopie2/opienet/onetwork.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opienet/onetwork.cpp41
1 files changed, 40 insertions, 1 deletions
diff --git a/libopie2/opienet/onetwork.cpp b/libopie2/opienet/onetwork.cpp
index f0094c7..be2736a 100644
--- a/libopie2/opienet/onetwork.cpp
+++ b/libopie2/opienet/onetwork.cpp
@@ -99,24 +99,30 @@ void ONetwork::synchronize()
99 qDebug( "ONetwork: interface '%s' has Wireless Extensions", (const char*) str ); 99 qDebug( "ONetwork: interface '%s' has Wireless Extensions", (const char*) str );
100 } 100 }
101 else 101 else
102 { 102 {
103 iface = new ONetworkInterface( this, (const char*) str ); 103 iface = new ONetworkInterface( this, (const char*) str );
104 } 104 }
105 _interfaces.insert( str, iface ); 105 _interfaces.insert( str, iface );
106 s.readLine(); 106 s.readLine();
107 } 107 }
108} 108}
109 109
110 110
111int ONetwork::count() const
112{
113 return _interfaces.count();
114}
115
116
111ONetworkInterface* ONetwork::interface( const QString& iface ) const 117ONetworkInterface* ONetwork::interface( const QString& iface ) const
112{ 118{
113 return _interfaces[iface]; 119 return _interfaces[iface];
114} 120}
115 121
116 122
117ONetwork* ONetwork::instance() 123ONetwork* ONetwork::instance()
118{ 124{
119 if ( !_instance ) _instance = new ONetwork(); 125 if ( !_instance ) _instance = new ONetwork();
120 return _instance; 126 return _instance;
121} 127}
122 128
@@ -202,29 +208,39 @@ bool ONetworkInterface::setUp( bool b )
202 else _ifr.ifr_flags &= (~IFF_UP); 208 else _ifr.ifr_flags &= (~IFF_UP);
203 return ioctl( SIOCSIFFLAGS ); 209 return ioctl( SIOCSIFFLAGS );
204} 210}
205 211
206 212
207bool ONetworkInterface::isUp() const 213bool ONetworkInterface::isUp() const
208{ 214{
209 ioctl( SIOCGIFFLAGS ); 215 ioctl( SIOCGIFFLAGS );
210 return _ifr.ifr_flags & IFF_UP; 216 return _ifr.ifr_flags & IFF_UP;
211} 217}
212 218
213 219
220void ONetworkInterface::setIPV4Address( const QHostAddress& addr )
221{
222 struct sockaddr_in *sa = (struct sockaddr_in *) &_ifr.ifr_addr;
223 sa->sin_family = AF_INET;
224 sa->sin_port = 0;
225 sa->sin_addr.s_addr = htonl( addr.ip4Addr() );
226 ioctl( SIOCSIFADDR );
227}
228
229
214QString ONetworkInterface::ipV4Address() const 230QString ONetworkInterface::ipV4Address() const
215{ 231{
216 if ( ioctl( SIOCGIFADDR ) ) 232 if ( ioctl( SIOCGIFADDR ) )
217 { 233 {
218 struct sockaddr_in *sa = (struct sockaddr_in *) &_ifr.ifr_addr; 234 struct sockaddr_in* sa = (struct sockaddr_in *) &_ifr.ifr_addr;
219 //FIXME: Use QHostAddress here 235 //FIXME: Use QHostAddress here
220 return QString( inet_ntoa( sa->sin_addr ) ); 236 return QString( inet_ntoa( sa->sin_addr ) );
221 } 237 }
222 else 238 else
223 return "<unknown>"; 239 return "<unknown>";
224} 240}
225 241
226 242
227void ONetworkInterface::setMacAddress( const OMacAddress& addr ) 243void ONetworkInterface::setMacAddress( const OMacAddress& addr )
228{ 244{
229 _ifr.ifr_hwaddr.sa_family = ARPHRD_ETHER; 245 _ifr.ifr_hwaddr.sa_family = ARPHRD_ETHER;
230 memcpy( &_ifr.ifr_hwaddr.sa_data, addr.native(), 6 ); 246 memcpy( &_ifr.ifr_hwaddr.sa_data, addr.native(), 6 );
@@ -236,24 +252,47 @@ OMacAddress ONetworkInterface::macAddress() const
236{ 252{
237 if ( ioctl( SIOCGIFHWADDR ) ) 253 if ( ioctl( SIOCGIFHWADDR ) )
238 { 254 {
239 return OMacAddress( _ifr ); 255 return OMacAddress( _ifr );
240 } 256 }
241 else 257 else
242 { 258 {
243 return OMacAddress::unknown; 259 return OMacAddress::unknown;
244 } 260 }
245} 261}
246 262
247 263
264void ONetworkInterface::setIPV4Netmask( const QHostAddress& addr )
265{
266 struct sockaddr_in *sa = (struct sockaddr_in *) &_ifr.ifr_addr;
267 sa->sin_family = AF_INET;
268 sa->sin_port = 0;
269 sa->sin_addr.s_addr = htonl( addr.ip4Addr() );
270 ioctl( SIOCSIFNETMASK );
271}
272
273
274QString ONetworkInterface::ipV4Netmask() const
275{
276 if ( ioctl( SIOCGIFNETMASK ) )
277 {
278 struct sockaddr_in* sa = (struct sockaddr_in *) &_ifr.ifr_addr;
279 //FIXME: Use QHostAddress here
280 return QString( inet_ntoa( sa->sin_addr ) );
281 }
282 else
283 return "<unknown>";
284}
285
286
248int ONetworkInterface::dataLinkType() const 287int ONetworkInterface::dataLinkType() const
249{ 288{
250 if ( ioctl( SIOCGIFHWADDR ) ) 289 if ( ioctl( SIOCGIFHWADDR ) )
251 { 290 {
252 return _ifr.ifr_hwaddr.sa_family; 291 return _ifr.ifr_hwaddr.sa_family;
253 } 292 }
254 else 293 else
255 { 294 {
256 return -1; 295 return -1;
257 } 296 }
258} 297}
259 298