summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings2/network
Side-by-side diff
Diffstat (limited to 'noncore/settings/networksettings2/network') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings2/network/network_NN.cpp11
-rw-r--r--noncore/settings/networksettings2/network/network_NN.h4
-rw-r--r--noncore/settings/networksettings2/network/network_NNI.cpp5
-rw-r--r--noncore/settings/networksettings2/network/networkedit.cpp6
-rw-r--r--noncore/settings/networksettings2/network/networkrun.cpp10
-rw-r--r--noncore/settings/networksettings2/network/networkrun.h3
6 files changed, 24 insertions, 15 deletions
diff --git a/noncore/settings/networksettings2/network/network_NN.cpp b/noncore/settings/networksettings2/network/network_NN.cpp
index bb371ad..a6b15c6 100644
--- a/noncore/settings/networksettings2/network/network_NN.cpp
+++ b/noncore/settings/networksettings2/network/network_NN.cpp
@@ -22,43 +22,50 @@ const QString NetworkNetNode::nodeDescription(){
return tr("\
<p>Sets up TCP/IP options.</p>\
<p>Use this to configure the TCP/IP protocol</p>\
"
);
}
ANetNodeInstance * NetworkNetNode::createInstance( void ) {
return new ANetwork( this );
}
const char ** NetworkNetNode::needs( void ) {
return NetworkNeeds;
}
const char * NetworkNetNode::provides( void ) {
return "connection";
}
bool NetworkNetNode::generateProperFilesFor(
ANetNodeInstance * ) {
return 1;
}
-bool NetworkNetNode::hasDataFor( const QString & S ) {
- if( S == "interfaces" ) {
+bool NetworkNetNode::hasDataFor( const QString & S, bool DS ) {
+ if( ! DS && S == "interfaces" ) {
return 1;
}
return 0;
}
bool NetworkNetNode::generateDataForCommonFile(
SystemFile & S,
long DevNr,
ANetNodeInstance * NNI ) {
return ((ANetwork *)NNI)->generateDataForCommonFile(S, DevNr);
}
+bool NetworkNetNode::generateDeviceDataForCommonFile(
+ SystemFile & ,
+ long ,
+ ANetNodeInstance * ) {
+ return 1;
+}
+
extern "C" {
void create_plugin( QList<ANetNode> & PNN ) {
PNN.append( new NetworkNetNode() );
}
}
diff --git a/noncore/settings/networksettings2/network/network_NN.h b/noncore/settings/networksettings2/network/network_NN.h
index 220e00f..62a3f10 100644
--- a/noncore/settings/networksettings2/network/network_NN.h
+++ b/noncore/settings/networksettings2/network/network_NN.h
@@ -7,38 +7,40 @@ class ANetwork;
class NetworkNetNode : public ANetNode{
Q_OBJECT
public:
NetworkNetNode();
virtual ~NetworkNetNode();
virtual const QString pixmapName()
{ return "Devices/tcpip"; }
virtual const QString nodeName()
{ return tr("IP Configuration"); }
virtual const QString nodeDescription() ;
virtual ANetNodeInstance * createInstance( void );
virtual const char ** needs( void );
virtual const char * provides( void );
virtual bool generateProperFilesFor( ANetNodeInstance * NNI );
- virtual bool hasDataFor( const QString & S );
+ virtual bool hasDataFor( const QString & S, bool DS );
virtual bool generateDataForCommonFile(
SystemFile & SF, long DevNr, ANetNodeInstance * NNI );
+ virtual bool generateDeviceDataForCommonFile(
+ SystemFile & SF, long DevNr, ANetNodeInstance * NNI );
private:
};
extern "C"
{
void create_plugin( QList<ANetNode> & PNN );
};
#endif
diff --git a/noncore/settings/networksettings2/network/network_NNI.cpp b/noncore/settings/networksettings2/network/network_NNI.cpp
index 7130764..eac2d66 100644
--- a/noncore/settings/networksettings2/network/network_NNI.cpp
+++ b/noncore/settings/networksettings2/network/network_NNI.cpp
@@ -83,53 +83,48 @@ void ANetwork::saveSpecificAttribute( QTextStream & TS ) {
TS << "postdown=" << quote(*it) << endl;
}
}
QWidget * ANetwork::edit( QWidget * parent ) {
GUI = new NetworkEdit( parent );
GUI->showData( Data );
return GUI;
}
QString ANetwork::acceptable( void ) {
return ( GUI ) ? GUI->acceptable( ) : QString();
}
void ANetwork::commit( void ) {
if( GUI && GUI->commit( Data ) )
setModified( 1 );
}
bool ANetwork::generateDataForCommonFile( SystemFile & S, long DevNr ) {
AsDevice * Dev = runtime()->device();
QString NIC = Dev->genNic( DevNr );
if( S.name() == "interfaces" ) {
- // generate mapping stanza for this interface
- S << "# check if " << NIC << " can be brought UP" << endl;
- S << "mapping " << NIC << endl;
- S << " script networksettings2-request" << endl << endl;
-
// we can safely call from here since device item is deeper
if( Data.UseDHCP ) {
S << "iface " << NIC << "-c" << connection()->number() <<
"-allowed inet dhcp" << endl;
S << " up echo \"" << NIC << "\" > /tmp/profile-" << connection()->number() <<
".up" << Data.IPAddress << endl;
if( Data.SendHostname ) {
S << " hostname "<< Data.Hostname << endl;
}
S << " down rm -f /tmp/profile-" << connection()->number() <<
".up" << Data.IPAddress << endl;
} else {
S << "iface " << NIC << "-c" << connection()->number() <<
"-allowed inet static" << endl;
S << " up echo \"" << NIC << "\" > /tmp/profile-" << connection()->number() <<
".up" << Data.IPAddress << endl;
S << " down rm -f /tmp/profile-" << connection()->number() <<
".up" << Data.IPAddress << endl;
S << " address " << Data.IPAddress << endl;
S << " broadcast " << Data.Broadcast << endl;
S << " netmask " << Data.NetMask << endl;
// derive network address = IPAddress & netmask
diff --git a/noncore/settings/networksettings2/network/networkedit.cpp b/noncore/settings/networksettings2/network/networkedit.cpp
index b17d745..182213b 100644
--- a/noncore/settings/networksettings2/network/networkedit.cpp
+++ b/noncore/settings/networksettings2/network/networkedit.cpp
@@ -31,55 +31,55 @@ NetworkEdit::NetworkEdit( QWidget * Parent ) : NetworkGUI( Parent ){
}
QString NetworkEdit::acceptable( void ) {
if( DHCP_CB->isChecked() ) {
if( SendHostname_CB->isChecked() )
if( Hostname_LE->text().isEmpty() )
return tr("Hostname needed");
return QString();
}
if( IPAddress_LE->text().isEmpty() )
return tr("IPAddress needed");
if( Broadcast_LE->text().isEmpty() )
return tr("Broadcast needed");
if( SubnetMask_LE->text().isEmpty() )
return tr("Subnet mask needed");
// valid IP ?
if( ! validIP( IPAddress_LE->text() ) )
return tr("IPAddress not valid");
if( ! validIP( SubnetMask_LE->text() ) )
return tr("Subnet mask not valid");
if( ! validIP( Broadcast_LE->text() ) )
return tr("Broadcast address not valid");
- if( Gateway_LE->text().isEmpty() &&
+ if( Gateway_LE->text().isEmpty() ||
! validIP( Gateway_LE->text() ) )
return tr("Gateway address not valid");
- if( DNS1_LE->text().isEmpty() &&
+ if( ! DNS1_LE->text().isEmpty() &&
! validIP( DNS1_LE->text() ) )
return tr("DNS1 address not valid");
- if( DNS2_LE->text().isEmpty() &&
+ if( ! DNS2_LE->text().isEmpty() &&
! validIP( DNS2_LE->text() ) )
return tr("DNS2 address not valid");
return QString();
}
bool NetworkEdit::commit( NetworkData_t & Data ) {
bool SM = 0;
CBM( Data.UseDHCP, DHCP_CB, SM );
TXTM( Data.IPAddress, IPAddress_LE, SM );
CBM( Data.SendHostname, SendHostname_CB, SM );
TXTM( Data.Hostname, Hostname_LE, SM );
TXTM( Data.Gateway, Gateway_LE, SM );
TXTM( Data.Broadcast, Broadcast_LE, SM );
TXTM( Data.NetMask, SubnetMask_LE, SM );
TXTM( Data.DNS1, DNS1_LE, SM );
TXTM( Data.DNS2, DNS2_LE, SM );
SM |= updateList( Data.PreUp_SL, PreUp_LB );
SM |= updateList( Data.PostUp_SL, PostUp_LB );
SM |= updateList( Data.PreDown_SL, PreDown_LB );
SM |= updateList( Data.PostDown_SL, PostDown_LB );
return SM;
}
diff --git a/noncore/settings/networksettings2/network/networkrun.cpp b/noncore/settings/networksettings2/network/networkrun.cpp
index 8deca14..f34fdbf 100644
--- a/noncore/settings/networksettings2/network/networkrun.cpp
+++ b/noncore/settings/networksettings2/network/networkrun.cpp
@@ -5,59 +5,61 @@
void NetworkRun::detectState( NodeCollection * NC ) {
RuntimeInfo * RI = netNode()->nextNode()->runtime();
AsDevice * Next = RI->asDevice();
InterfaceInfo * II = Next->assignedInterface();
if( II ) {
// device has assigned interface
NC->setCurrentState( (( II->IsUp ) ? IsUp : Available) );
}
// has no interface -> delegate
RI->detectState( NC );
}
bool NetworkRun::setState( NodeCollection * NC, Action_t A ) {
// we handle UP and DOWN
RuntimeInfo * RI = netNode()->nextNode()->runtime();
AsDevice * Next = RI->asDevice();
InterfaceInfo * II = Next->assignedInterface();
if( A == Up ) {
// we can bring UP if lower level is available
if( NC->currentState() == Available ) {
QString S;
- S.sprintf( "ifup %s", II->Name.latin1() );
+ S.sprintf( "ifup %s=%s-c%d-allowed",
+ II->Name.latin1(), II->Name.latin1(),
+ connection()->number() );
NSResources->system().execute( S );
- NC->setCurrentState( IsUp );
}
return 1;
} else if( A == Down ) {
if( NC->currentState() == IsUp ) {
QString S;
- S.sprintf( "ifdown %s", II->Name.latin1() );
+ S.sprintf( "ifdown %s=%s-c%d-allowed",
+ II->Name.latin1(), II->Name.latin1(),
+ connection()->number() );
NSResources->system().execute( S );
- NC->setCurrentState( Available );
}
return 1;
}
// delegate
return RI->setState( NC, A );
}
bool NetworkRun::canSetState( State_t Curr, Action_t A ) {
// we handle UP and DOWN
RuntimeInfo * RI = netNode()->nextNode()->runtime();
if( A == Up ) {
return ( Curr == Available );
} else if( A == Down ) {
return ( Curr == IsUp );
}
// delegate
return RI->canSetState( Curr, A );
}
bool NetworkRun::handlesInterface( const QString & S ) {
// donno -> pass deeper
return netNode()->nextNode()->runtime()->handlesInterface(S);
}
diff --git a/noncore/settings/networksettings2/network/networkrun.h b/noncore/settings/networksettings2/network/networkrun.h
index f3d840e..fa16365 100644
--- a/noncore/settings/networksettings2/network/networkrun.h
+++ b/noncore/settings/networksettings2/network/networkrun.h
@@ -1,20 +1,23 @@
#include <asconnection.h>
#include "networkdata.h"
class NetworkRun : public AsConnection {
public :
NetworkRun( ANetNodeInstance * NNI,
NetworkData & Data ) : AsConnection( NNI )
{ }
+ virtual AsConnection * asConnection( void )
+ { return (AsConnection *)this; }
+
protected :
void detectState( NodeCollection * );
bool setState( NodeCollection * ,Action_t A );
bool canSetState( State_t , Action_t A );
bool handlesInterface( const QString & I );
};