summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/interfaces/interface.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/noncore/settings/networksettings/interfaces/interface.cpp b/noncore/settings/networksettings/interfaces/interface.cpp
index 2ace5fd..230dbe1 100644
--- a/noncore/settings/networksettings/interfaces/interface.cpp
+++ b/noncore/settings/networksettings/interfaces/interface.cpp
@@ -1,196 +1,197 @@
1/** 1/**
2 * $Author$ 2 * $Author$
3 * $Date$ 3 * $Date$
4 * $Id$ 4 * $Id$
5 * $File$
5 */ 6 */
6 7
7#include "interface.h" 8#include "interface.h"
8#include <qdatetime.h> 9#include <qdatetime.h>
9#include <qfile.h> 10#include <qfile.h>
10#include <qdir.h> 11#include <qdir.h>
11#include <qfileinfo.h> 12#include <qfileinfo.h>
12#include <qtextstream.h> 13#include <qtextstream.h>
13 14
14#define IFCONFIG "/sbin/ifconfig" 15#define IFCONFIG "/sbin/ifconfig"
15#define DHCP_INFO_DIR "/etc/dhcpc" 16#define DHCP_INFO_DIR "/etc/dhcpc"
16 17
17#include <stdio.h> 18#include <stdio.h>
18#include <stdlib.h> 19#include <stdlib.h>
19 20
20Interface::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"){ 21Interface::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"){
21 refresh(); 22 refresh();
22} 23}
23 24
24/** 25/**
25 * Set status 26 * Set status
26 * @param newStatus - the new status 27 * @param newStatus - the new status
27 * emit updateInterface 28 * emit updateInterface
28 */ 29 */
29void Interface::setStatus(bool newStatus){ 30void Interface::setStatus(bool newStatus){
30 if(status != newStatus){ 31 if(status != newStatus){
31 status = newStatus; 32 status = newStatus;
32 refresh(); 33 refresh();
33 } 34 }
34}; 35};
35 36
36/** 37/**
37 * Set if attached or not (802.11 card pulled out for example) 38 * Set if attached or not (802.11 card pulled out for example)
38 * @param isAttached - if attached 39 * @param isAttached - if attached
39 * emit updateInterface 40 * emit updateInterface
40 */ 41 */
41void Interface::setAttached(bool isAttached){ 42void Interface::setAttached(bool isAttached){
42 attached = isAttached; 43 attached = isAttached;
43 emit(updateInterface(this)); 44 emit(updateInterface(this));
44}; 45};
45 46
46/** 47/**
47 * Set Hardware name 48 * Set Hardware name
48 * @param name - the new name 49 * @param name - the new name
49 * emit updateInterface 50 * emit updateInterface
50 */ 51 */
51void Interface::setHardwareName(const QString &name){ 52void Interface::setHardwareName(const QString &name){
52 hardwareName = name; 53 hardwareName = name;
53 emit(updateInterface(this)); 54 emit(updateInterface(this));
54}; 55};
55 56
56/** 57/**
57 * Set Module owner 58 * Set Module owner
58 * @param owner - the new owner 59 * @param owner - the new owner
59 * emit updateInterface 60 * emit updateInterface
60 */ 61 */
61void Interface::setModuleOwner(Module *owner){ 62void Interface::setModuleOwner(Module *owner){
62 moduleOwner = owner; 63 moduleOwner = owner;
63 emit(updateInterface(this)); 64 emit(updateInterface(this));
64}; 65};
65 66
66 67
67/** 68/**
68 * Try to start the interface. 69 * Try to start the interface.
69 */ 70 */
70void Interface::start(){ 71void Interface::start(){
71 // check to see if we are already running. 72 // check to see if we are already running.
72 if(true == status){ 73 if(true == status){
73 emit (updateMessage("Unable to start interface,\n already started")); 74 emit (updateMessage("Unable to start interface,\n already started"));
74 return; 75 return;
75 } 76 }
76 77
77 int ret = system(QString("%1 %2 up").arg(IFCONFIG).arg(this->name()).latin1()); 78 int ret = system(QString("%1 %2 up").arg(IFCONFIG).arg(this->name()).latin1());
78 // See if it was successfull... 79 // See if it was successfull...
79 if(ret != 0){ 80 if(ret != 0){
80 emit (updateMessage("Starting interface failed")); 81 emit (updateMessage("Starting interface failed"));
81 return; 82 return;
82 } 83 }
83 84
84 status = true; 85 status = true;
85 refresh(); 86 refresh();
86 emit (updateMessage("Start successfull")); 87 emit (updateMessage("Start successfull"));
87} 88}
88 89
89/** 90/**
90 * Try to stop the interface. 91 * Try to stop the interface.
91 */ 92 */
92void Interface::stop(){ 93void Interface::stop(){
93 // check to see if we are already stopped. 94 // check to see if we are already stopped.
94 if(false == status){ 95 if(false == status){
95 emit (updateMessage("Unable to stop interface,\n already stopped")); 96 emit (updateMessage("Unable to stop interface,\n already stopped"));
96 return; 97 return;
97 } 98 }
98 99
99 int ret = system(QString("%1 %2 down").arg(IFCONFIG).arg(this->name()).latin1()); 100 int ret = system(QString("%1 %2 down").arg(IFCONFIG).arg(this->name()).latin1());
100 if(ret != 0){ 101 if(ret != 0){
101 emit (updateMessage("Stopping interface failed")); 102 emit (updateMessage("Stopping interface failed"));
102 return; 103 return;
103 } 104 }
104 105
105 status = false; 106 status = false;
106 refresh(); 107 refresh();
107 emit (updateMessage("Stop successfull")); 108 emit (updateMessage("Stop successfull"));
108} 109}
109 110
110/** 111/**
111 * Try to restart the interface. 112 * Try to restart the interface.
112 */ 113 */
113void Interface::restart(){ 114void Interface::restart(){
114 stop(); 115 stop();
115 start(); 116 start();
116} 117}
117 118
118/** 119/**
119 * Try to refresh the information about the interface. 120 * Try to refresh the information about the interface.
120 * First call ifconfig, then check the dhcp-info file 121 * First call ifconfig, then check the dhcp-info file
121 * @return bool true if successfull. 122 * @return bool true if successfull.
122 */ 123 */
123bool Interface::refresh(){ 124bool Interface::refresh(){
124 // See if we are up. 125 // See if we are up.
125 if(status == false){ 126 if(status == false){
126 macAddress = ""; 127 macAddress = "";
127 ip = "0.0.0.0"; 128 ip = "0.0.0.0";
128 subnetMask = "0.0.0.0"; 129 subnetMask = "0.0.0.0";
129 broadcast = ""; 130 broadcast = "";
130 dhcp = false; 131 dhcp = false;
131 dhcpServerIp = ""; 132 dhcpServerIp = "";
132 leaseObtained = ""; 133 leaseObtained = "";
133 leaseExpires = ""; 134 leaseExpires = "";
134 emit(updateInterface(this)); 135 emit(updateInterface(this));
135 return true; 136 return true;
136 } 137 }
137 138
138 QString fileName = QString("/tmp/%1_ifconfig_info").arg(this->name()); 139 QString fileName = QString("/tmp/%1_ifconfig_info").arg(this->name());
139 int ret = system(QString("%1 %2 > %3").arg(IFCONFIG).arg(this->name()).arg(fileName).latin1()); 140 int ret = system(QString("%1 %2 > %3").arg(IFCONFIG).arg(this->name()).arg(fileName).latin1());
140 if(ret != 0){ 141 if(ret != 0){
141 qDebug(QString("Interface: Ifconfig return value: %1, is not 0").arg(ret).latin1()); 142 qDebug(QString("Interface: Ifconfig return value: %1, is not 0").arg(ret).latin1());
142 return false; 143 return false;
143 } 144 }
144 145
145 QFile file(fileName); 146 QFile file(fileName);
146 if (!file.open(IO_ReadOnly)){ 147 if (!file.open(IO_ReadOnly)){
147 qDebug(QString("Interface: Can't open file: %1").arg(fileName).latin1()); 148 qDebug(QString("Interface: Can't open file: %1").arg(fileName).latin1());
148 return false; 149 return false;
149 } 150 }
150 151
151 // Set to the defaults 152 // Set to the defaults
152 macAddress = ""; 153 macAddress = "";
153 ip = "0.0.0.0"; 154 ip = "0.0.0.0";
154 subnetMask = "0.0.0.0"; 155 subnetMask = "0.0.0.0";
155 broadcast = ""; 156 broadcast = "";
156 157
157 QTextStream stream( &file ); 158 QTextStream stream( &file );
158 QString line; 159 QString line;
159 while ( !stream.eof() ) { 160 while ( !stream.eof() ) {
160 line = stream.readLine(); 161 line = stream.readLine();
161 if(line.contains("HWaddr")){ 162 if(line.contains("HWaddr")){
162 int mac = line.find("HWaddr"); 163 int mac = line.find("HWaddr");
163 macAddress = line.mid(mac+7, line.length()); 164 macAddress = line.mid(mac+7, line.length());
164 } 165 }
165 if(line.contains("inet addr")){ 166 if(line.contains("inet addr")){
166 int ipl = line.find("inet addr"); 167 int ipl = line.find("inet addr");
167 int space = line.find(" ", ipl+10); 168 int space = line.find(" ", ipl+10);
168 ip = line.mid(ipl+10, space-ipl-10); 169 ip = line.mid(ipl+10, space-ipl-10);
169 } 170 }
170 if(line.contains("Mask")){ 171 if(line.contains("Mask")){
171 int mask = line.find("Mask"); 172 int mask = line.find("Mask");
172 subnetMask = line.mid(mask+5, line.length()); 173 subnetMask = line.mid(mask+5, line.length());
173 } 174 }
174 if(line.contains("Bcast")){ 175 if(line.contains("Bcast")){
175 int mask = line.find("Bcast"); 176 int mask = line.find("Bcast");
176 int space = line.find(" ", mask+6); 177 int space = line.find(" ", mask+6);
177 broadcast = line.mid(mask+6, space-mask-6); 178 broadcast = line.mid(mask+6, space-mask-6);
178 } 179 }
179 } 180 }
180 file.close(); 181 file.close();
181 QFile::remove(fileName); 182 QFile::remove(fileName);
182 183
183 // DHCP TESTING 184 // DHCP TESTING
184 // reset DHCP info 185 // reset DHCP info
185 dhcpServerIp = ""; 186 dhcpServerIp = "";
186 leaseObtained = ""; 187 leaseObtained = "";
187 leaseExpires = ""; 188 leaseExpires = "";
188 dhcp = false; 189 dhcp = false;
189 190
190 QString dhcpDirectory(DHCP_INFO_DIR); 191 QString dhcpDirectory(DHCP_INFO_DIR);
191 QDir d(dhcpDirectory); 192 QDir d(dhcpDirectory);
192 if(!d.exists(dhcpDirectory)) 193 if(!d.exists(dhcpDirectory))
193 dhcpDirectory = "/var/run"; 194 dhcpDirectory = "/var/run";
194 195
195 // See if we have 196 // See if we have
196 QString dhcpFile(QString(dhcpDirectory+"/dhcpcd-%1.info").arg(this->name())); 197 QString dhcpFile(QString(dhcpDirectory+"/dhcpcd-%1.info").arg(this->name()));