author | kergoth <kergoth> | 2003-04-15 00:46:48 (UTC) |
---|---|---|
committer | kergoth <kergoth> | 2003-04-15 00:46:48 (UTC) |
commit | 79e83da7936995f247f7ad7ad0f768b6e2545cf1 (patch) (side-by-side diff) | |
tree | a0c1d7c382d6374c2c941b30a00515cbdcfd9270 | |
parent | f3905e771c1abd5fdc430aba364934b717dfa115 (diff) | |
download | opie-79e83da7936995f247f7ad7ad0f768b6e2545cf1.zip opie-79e83da7936995f247f7ad7ad0f768b6e2545cf1.tar.gz opie-79e83da7936995f247f7ad7ad0f768b6e2545cf1.tar.bz2 |
Only restart interface if it was UP previously.
-rw-r--r-- | noncore/settings/networksettings/interfaces/interfacesetupimp.cpp | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp index 8d78828..49a47ae 100644 --- a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp +++ b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp @@ -2,126 +2,126 @@ #include "interface.h" #include <qcheckbox.h> #include <qlineedit.h> #include <qspinbox.h> #include <qgroupbox.h> #include <qlabel.h> #include <qmessagebox.h> #include <opie/oprocess.h> #ifdef QWS #include <opie/owait.h> #include <qpe/global.h> #include <qapplication.h> #endif #define DNSSCRIPT "changedns" /** * Constuctor. Set up the connection. A profile must be set. */ InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, Interfaces *j, WFlags fl) : InterfaceSetup(parent, name, fl), interface(i), interfaces(j), delInterfaces(false){ if (j == 0) { delInterfaces = true; interfaces = new Interfaces; } } /** * Destructor */ InterfaceSetupImp::~InterfaceSetupImp(){ if(delInterfaces) { delete interfaces; } } /** * Save the current settings, then write out the interfaces file and close. */ bool InterfaceSetupImp::saveChanges(){ bool error; QString iface = interfaces->getInterfaceName(error); if(!saveSettings()) return false; - qWarning("restarting interface %s\n", iface.latin1()); interfaces->write(); - QString ifup; - ifup += "ifdown "; - ifup += iface; - ifup += "; ifup "; - ifup += iface; - ifup += ";"; - - OProcess restart; - restart << "sh"; - restart << "-c"; - restart << ifup; - - OWait *owait = new OWait(); - Global::statusMessage( tr( "Restarting interface" ) ); - - owait->show(); - qApp->processEvents(); - - if (!restart.start(OProcess::Block, OProcess::NoCommunication) ) { - qWarning("unstable to spawn ifdown/ifup"); + if (interface->getStatus()) { + QString ifup; + ifup += "ifdown "; + ifup += iface; + ifup += "; ifup "; + ifup += iface; + ifup += ";"; + + OProcess restart; + restart << "sh"; + restart << "-c"; + restart << ifup; + + OWait *owait = new OWait(); + Global::statusMessage( tr( "Restarting interface" ) ); + + owait->show(); + qApp->processEvents(); + + if (!restart.start(OProcess::Block, OProcess::NoCommunication) ) { + qWarning("unstable to spawn ifdown/ifup"); + } + + owait->hide(); + delete owait; + + interface->refresh(); } - - owait->hide(); - delete owait; - - interface->refresh(); - return true; } /** * Save the settings for the current Interface. * @return bool true if successfull, false otherwise */ bool InterfaceSetupImp::saveSettings(){ // eh can't really do anything about it other then return. :-D if(!interfaces->isInterfaceSet()) return true; bool error = false; // Loopback case if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); return true; } if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty())){ QMessageBox::information(this, "Not Saved.", "Please fill in the IP address and\n subnet entries.", QMessageBox::Ok); return false; } // DHCP if(dhcpCheckBox->isChecked()) { interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP); interfaces->removeInterfaceOption("address"); interfaces->removeInterfaceOption("netmask"); interfaces->removeInterfaceOption("gateway"); interfaces->removeInterfaceOption("up "DNSSCRIPT" -a "); interfaces->removeInterfaceOption("down "DNSSCRIPT" -r "); } else{ interfaces->setInterfaceMethod("static"); interfaces->setInterfaceOption("address", ipAddressEdit->text()); interfaces->setInterfaceOption("netmask", subnetMaskEdit->text()); interfaces->setInterfaceOption("gateway", gatewayEdit->text()); if(!firstDNSLineEdit->text().isEmpty() || !secondDNSLineEdit->text().isEmpty()){ QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text(); interfaces->setInterfaceOption("up "DNSSCRIPT" -a ", dns); interfaces->setInterfaceOption("down "DNSSCRIPT" -r ", dns); } } // IP Information interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); return true; } |