summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/interfaces/interface.cpp46
-rw-r--r--noncore/settings/networksettings/interfaces/interface.h1
2 files changed, 42 insertions, 5 deletions
diff --git a/noncore/settings/networksettings/interfaces/interface.cpp b/noncore/settings/networksettings/interfaces/interface.cpp
index 46f3e19..44c0264 100644
--- a/noncore/settings/networksettings/interfaces/interface.cpp
+++ b/noncore/settings/networksettings/interfaces/interface.cpp
@@ -1,40 +1,47 @@
1/** 1/**
2 * $Author$ 2 * $Author$
3 * $Date$ 3 * $Date$
4 */ 4 */
5 5
6#include "interface.h" 6#include "interface.h"
7 7
8#include <opie2/odebug.h> 8#include <opie2/odebug.h>
9#include <opie2/oprocess.h>
10#include <opie2/owait.h>
9 11
12#include <qpe/global.h>
13
14#include <qapplication.h>
10#include <qdatetime.h> 15#include <qdatetime.h>
11#include <qfile.h> 16#include <qfile.h>
12#include <qdir.h> 17#include <qdir.h>
13#include <qfileinfo.h> 18#include <qfileinfo.h>
14#include <qtextstream.h> 19#include <qtextstream.h>
15 20
16#define IFCONFIG "/sbin/ifconfig" 21#define IFCONFIG "/sbin/ifconfig"
22#define IF_UP "/sbin/ifup"
23#define IF_DOWN "/sbin/ifdown"
17#define DHCP_INFO_DIR "/etc/dhcpc" 24#define DHCP_INFO_DIR "/etc/dhcpc"
18 25
19#include <stdio.h> 26#include <stdio.h>
20#include <stdlib.h> 27#include <stdlib.h>
21 28
22Interface::Interface(QObject * parent, const char * name, bool newSatus): QObject(parent, name), hardwareName("Unknown"), moduleOwner(NULL), status(newSatus), attached(false), dhcp(false), macAddress(""), ip("0.0.0.0"), broadcast(""), subnetMask("0.0.0.0"){ 29Interface::Interface(QObject * parent, const char * name, bool newSatus): QObject(parent, name), hardwareName("Unknown"), moduleOwner(NULL), status(newSatus), attached(false), dhcp(false), macAddress(""), ip("0.0.0.0"), broadcast(""), subnetMask("0.0.0.0"){
23 refresh(); 30 refresh();
24} 31}
25 32
26/** 33/**
27 * Set status 34 * Set status
28 * @param newStatus - the new status 35 * @param newStatus - the new status
29 * emit updateInterface 36 * emit updateInterface
30 */ 37 */
31void Interface::setStatus(bool newStatus){ 38void Interface::setStatus(bool newStatus){
32 if(status != newStatus){ 39 if(status != newStatus){
33 status = newStatus; 40 status = newStatus;
34 refresh(); 41 refresh();
35 } 42 }
36}; 43};
37 44
38/** 45/**
39 * Set if attached or not (802.11 card pulled out for example) 46 * Set if attached or not (802.11 card pulled out for example)
40 * @param isAttached - if attached 47 * @param isAttached - if attached
@@ -45,82 +52,111 @@ void Interface::setAttached(bool isAttached){
45 emit(updateInterface(this)); 52 emit(updateInterface(this));
46}; 53};
47 54
48/** 55/**
49 * Set Hardware name 56 * Set Hardware name
50 * @param name - the new name 57 * @param name - the new name
51 * emit updateInterface 58 * emit updateInterface
52 */ 59 */
53void Interface::setHardwareName(const QString &name){ 60void Interface::setHardwareName(const QString &name){
54 hardwareName = name; 61 hardwareName = name;
55 emit(updateInterface(this)); 62 emit(updateInterface(this));
56}; 63};
57 64
58/** 65/**
59 * Set Module owner 66 * Set Module owner
60 * @param owner - the new owner 67 * @param owner - the new owner
61 * emit updateInterface 68 * emit updateInterface
62 */ 69 */
63void Interface::setModuleOwner(Module *owner){ 70void Interface::setModuleOwner(Module *owner){
64 moduleOwner = owner; 71 moduleOwner = owner;
65 emit(updateInterface(this)); 72 emit(updateInterface(this));
66}; 73};
67 74
68 75
76bool Interface::callProcess( const QStringList& names ) {
77 Opie::Ui::OWait *owait = new Opie::Ui::OWait();
78 Global::statusMessage( tr( "Restarting interface" ) );
79
80 owait->show();
81 qApp->processEvents();
82
83 Opie::Core::OProcess restart;
84 restart << names;
85 if ( !restart.start(Opie::Core::OProcess::Block,
86 Opie::Core::OProcess::NoCommunication ) ) {
87 owarn << "unable to spawn command" << names << oendl;
88 return false;
89 }
90 owait->hide();
91 delete owait;
92
93 if ( restart.normalExit() || restart.exitStatus() != 0 )
94 return false;
95
96 return true;
97}
98
69/** 99/**
70 * Try to start the interface. 100 * Try to start the interface.
71 */ 101 */
72void Interface::start(){ 102void Interface::start(){
73 // check to see if we are already running. 103 // check to see if we are already running.
74 if(true == status){ 104 if(true == status){
75 emit (updateMessage("Unable to start interface,\n already started")); 105 emit (updateMessage("Unable to start interface,\n already started"));
76 return; 106 return;
77 } 107 }
78 108
79 int ret = system(QString("%1 %2 up").arg(IFCONFIG).arg(this->name()).latin1()); 109 /* prepare command and call it */
80 // See if it was successful... 110 QStringList lst;
81 if(ret != 0){ 111 lst << IF_UP;
112 lst << name();
113 if ( !callProcess(lst) ) {
82 emit (updateMessage("Starting interface failed")); 114 emit (updateMessage("Starting interface failed"));
83 return; 115 return;
84 } 116 }
85 117
86 status = true; 118 status = true;
87 refresh(); 119 refresh();
88 emit (updateMessage("Start successful")); 120 emit (updateMessage("Start successful"));
89} 121}
90 122
91/** 123/**
92 * Try to stop the interface. 124 * Try to stop the interface.
93 */ 125 */
94void Interface::stop(){ 126void Interface::stop(){
95 // check to see if we are already stopped. 127 // check to see if we are already stopped.
96 if(false == status){ 128 if(false == status){
97 emit (updateMessage("Unable to stop interface,\n already stopped")); 129 emit (updateMessage("Unable to stop interface,\n already stopped"));
98 return; 130 return;
99 } 131 }
100 132
101 int ret = system(QString("%1 %2 down").arg(IFCONFIG).arg(this->name()).latin1()); 133 QStringList lst;
102 if(ret != 0){ 134 lst << IF_DOWN;
135 lst << name();
136
137 /* prepare command and call it */
138 if( !callProcess( lst ) ){
103 emit (updateMessage("Stopping interface failed")); 139 emit (updateMessage("Stopping interface failed"));
104 return; 140 return;
105 } 141 }
106 142
107 status = false; 143 status = false;
108 refresh(); 144 refresh();
109 emit (updateMessage("Stop successful")); 145 emit (updateMessage("Stop successful"));
110} 146}
111 147
112/** 148/**
113 * Try to restart the interface. 149 * Try to restart the interface.
114 */ 150 */
115void Interface::restart(){ 151void Interface::restart(){
116 stop(); 152 stop();
117 start(); 153 start();
118} 154}
119 155
120/** 156/**
121 * Try to refresh the information about the interface. 157 * Try to refresh the information about the interface.
122 * First call ifconfig, then check the dhcp-info file 158 * First call ifconfig, then check the dhcp-info file
123 * @return bool true if successful. 159 * @return bool true if successful.
124 */ 160 */
125bool Interface::refresh(){ 161bool Interface::refresh(){
126 // See if we are up. 162 // See if we are up.
diff --git a/noncore/settings/networksettings/interfaces/interface.h b/noncore/settings/networksettings/interfaces/interface.h
index 83ab088..e9ab0c2 100644
--- a/noncore/settings/networksettings/interfaces/interface.h
+++ b/noncore/settings/networksettings/interfaces/interface.h
@@ -34,47 +34,48 @@ public:
34 34
35 QString getHardwareName() const { return hardwareName; }; 35 QString getHardwareName() const { return hardwareName; };
36 void setHardwareName(const QString &name="Unknown"); 36 void setHardwareName(const QString &name="Unknown");
37 37
38 Module* getModuleOwner() const { return moduleOwner; }; 38 Module* getModuleOwner() const { return moduleOwner; };
39 void setModuleOwner(Module *owner=NULL); 39 void setModuleOwner(Module *owner=NULL);
40 40
41 // inet information. 41 // inet information.
42 QString getMacAddress() const { return macAddress; }; 42 QString getMacAddress() const { return macAddress; };
43 QString getIp() const { return ip; }; 43 QString getIp() const { return ip; };
44 QString getSubnetMask() const { return subnetMask; }; 44 QString getSubnetMask() const { return subnetMask; };
45 QString getBroadcast() const { return broadcast; }; 45 QString getBroadcast() const { return broadcast; };
46 bool isDhcp() const { return dhcp; }; 46 bool isDhcp() const { return dhcp; };
47 QString getDhcpServerIp() const { return dhcpServerIp; }; 47 QString getDhcpServerIp() const { return dhcpServerIp; };
48 QString getLeaseObtained() const { return leaseObtained; }; 48 QString getLeaseObtained() const { return leaseObtained; };
49 QString getLeaseExpires() const { return leaseExpires; }; 49 QString getLeaseExpires() const { return leaseExpires; };
50 50
51 public slots: 51 public slots:
52 virtual bool refresh(); 52 virtual bool refresh();
53 virtual void start(); 53 virtual void start();
54 virtual void stop(); 54 virtual void stop();
55 virtual void restart(); 55 virtual void restart();
56 56
57protected: 57protected:
58 bool callProcess( const QStringList& name );
58 // Interface information 59 // Interface information
59 QString hardwareName; 60 QString hardwareName;
60 Module *moduleOwner; 61 Module *moduleOwner;
61 bool status; 62 bool status;
62 bool attached; 63 bool attached;
63 64
64 // Network information 65 // Network information
65 bool dhcp; 66 bool dhcp;
66 QString dhcpServerIp; 67 QString dhcpServerIp;
67 QString leaseObtained; 68 QString leaseObtained;
68 QString leaseExpires; 69 QString leaseExpires;
69 70
70 QString macAddress; 71 QString macAddress;
71 QString ip; 72 QString ip;
72 QString broadcast; 73 QString broadcast;
73 QString subnetMask; 74 QString subnetMask;
74 75
75}; 76};
76 77
77#endif 78#endif
78 79
79// interface.h 80// interface.h
80 81