Diffstat (limited to 'noncore/settings/networksettings2/network') (more/less context) (ignore whitespace changes)
10 files changed, 105 insertions, 128 deletions
diff --git a/noncore/settings/networksettings2/network/network_NN.cpp b/noncore/settings/networksettings2/network/network_NN.cpp index b5c41bf..23b3d44 100644 --- a/noncore/settings/networksettings2/network/network_NN.cpp +++ b/noncore/settings/networksettings2/network/network_NN.cpp | |||
@@ -1,3 +1,4 @@ | |||
1 | #include <qpe/qpeapplication.h> | 1 | #include <qpe/qpeapplication.h> |
2 | #include <asdevice.h> | 2 | #include <resources.h> |
3 | #include <netnode.h> | ||
3 | #include "network_NN.h" | 4 | #include "network_NN.h" |
@@ -10,2 +11,7 @@ static const char * NetworkNeeds[] = | |||
10 | 11 | ||
12 | static const char * NetworkProvides[] = | ||
13 | { "connection", | ||
14 | 0 | ||
15 | }; | ||
16 | |||
11 | /** | 17 | /** |
@@ -14,2 +20,5 @@ static const char * NetworkNeeds[] = | |||
14 | NetworkNetNode::NetworkNetNode() : ANetNode(tr("IP Configuration")) { | 20 | NetworkNetNode::NetworkNetNode() : ANetNode(tr("IP Configuration")) { |
21 | |||
22 | NSResources->addSystemFile( | ||
23 | "interfaces", "/etc/network/interfaces", 1 ); | ||
15 | } | 24 | } |
@@ -34,9 +43,7 @@ ANetNodeInstance * NetworkNetNode::createInstance( void ) { | |||
34 | 43 | ||
35 | bool NetworkNetNode::hasDataForFile( const QString & S ) { | 44 | bool NetworkNetNode::hasDataForFile( SystemFile & S ) { |
36 | return S == "interfaces"; | 45 | return S.name() == "interfaces"; |
37 | } | 46 | } |
38 | 47 | ||
39 | short NetworkNetNode::generateFile( const QString & ID, | 48 | short NetworkNetNode::generateFile( SystemFile & SF, |
40 | const QString & , | ||
41 | QTextStream & TS, | ||
42 | ANetNodeInstance * NNI, | 49 | ANetNodeInstance * NNI, |
@@ -44,8 +51,13 @@ short NetworkNetNode::generateFile( const QString & ID, | |||
44 | 51 | ||
52 | if( DevNr < 0 ) { | ||
53 | // generate device specific but common part | ||
54 | return 1; | ||
55 | } | ||
56 | |||
45 | QString NIC = NNI->runtime()->device()->netNode()->nodeClass()->genNic( DevNr ); | 57 | QString NIC = NNI->runtime()->device()->netNode()->nodeClass()->genNic( DevNr ); |
46 | 58 | ||
47 | if( ID == "interfaces" ) { | 59 | if( SF.name() == "interfaces" ) { |
48 | Log(("Generate entry for %s in %s\n", NIC.latin1(), ID.latin1() )); | 60 | Log(("Generate entry for %s in %s\n", NIC.latin1(), SF.name().latin1() )); |
49 | // generate mapping stanza for this interface | 61 | // generate mapping stanza for this interface |
50 | TS << "# check if " | 62 | SF << "# check if " |
51 | << NIC | 63 | << NIC |
@@ -53,8 +65,8 @@ short NetworkNetNode::generateFile( const QString & ID, | |||
53 | << endl; | 65 | << endl; |
54 | TS << "mapping " | 66 | SF << "mapping " |
55 | << NIC | 67 | << NIC |
56 | << endl; | 68 | << endl; |
57 | TS << " script " | 69 | SF << " script " |
58 | << QPEApplication::qpeDir() | 70 | << QPEApplication::qpeDir() |
59 | << "/bin/networksettings2-request" | 71 | << "bin/networksettings2-request" |
60 | << endl | 72 | << endl |
@@ -70,4 +82,4 @@ const char ** NetworkNetNode::needs( void ) { | |||
70 | 82 | ||
71 | const char * NetworkNetNode::provides( void ) { | 83 | const char ** NetworkNetNode::provides( void ) { |
72 | return "connection"; | 84 | return NetworkProvides; |
73 | } | 85 | } |
diff --git a/noncore/settings/networksettings2/network/network_NN.h b/noncore/settings/networksettings2/network/network_NN.h index 745d1a7..b063d4c 100644 --- a/noncore/settings/networksettings2/network/network_NN.h +++ b/noncore/settings/networksettings2/network/network_NN.h | |||
@@ -16,7 +16,5 @@ public: | |||
16 | 16 | ||
17 | virtual bool hasDataForFile( const QString & S ); | 17 | virtual bool hasDataForFile( SystemFile & S ); |
18 | 18 | ||
19 | virtual short generateFile( const QString & ID, | 19 | virtual short generateFile( SystemFile & TS, |
20 | const QString & Path, | ||
21 | QTextStream & TS, | ||
22 | ANetNodeInstance * NNI, | 20 | ANetNodeInstance * NNI, |
@@ -29,3 +27,3 @@ public: | |||
29 | virtual const char ** needs( void ); | 27 | virtual const char ** needs( void ); |
30 | virtual const char * provides( void ); | 28 | virtual const char ** provides( void ); |
31 | 29 | ||
diff --git a/noncore/settings/networksettings2/network/network_NNI.cpp b/noncore/settings/networksettings2/network/network_NNI.cpp index 324c6e2..78e6545 100644 --- a/noncore/settings/networksettings2/network/network_NNI.cpp +++ b/noncore/settings/networksettings2/network/network_NNI.cpp | |||
@@ -1,3 +1,3 @@ | |||
1 | #include <system.h> | 1 | #include <system.h> |
2 | #include <asdevice.h> | 2 | #include <netnode.h> |
3 | #include "networkedit.h" | 3 | #include "networkedit.h" |
@@ -101,11 +101,9 @@ void ANetwork::commit( void ) { | |||
101 | 101 | ||
102 | bool ANetwork::hasDataForFile( const QString & S ) { | 102 | bool ANetwork::hasDataForFile( SystemFile & S ) { |
103 | return S == "interfaces"; | 103 | return S.name() == "interfaces"; |
104 | } | 104 | } |
105 | 105 | ||
106 | short ANetwork::generateFile( const QString & ID, | 106 | short ANetwork::generateFile( SystemFile &SF, |
107 | const QString & Path, | 107 | long DevNr |
108 | QTextStream &TS, | 108 | ) { |
109 | long DevNr | ||
110 | ) { | ||
111 | 109 | ||
@@ -115,7 +113,7 @@ short ANetwork::generateFile( const QString & ID, | |||
115 | rvl = 1; | 113 | rvl = 1; |
116 | if( ID == "interfaces" ) { | 114 | if( SF.name() == "interfaces" ) { |
117 | Log(("Generate Network for %s\n", ID.latin1() )); | 115 | Log(("Generate Network for %s\n", SF.name().latin1() )); |
118 | // we can safely call from here since device item is deeper | 116 | // we can safely call from here since device item is deeper |
119 | if( Data.UseDHCP ) { | 117 | if( Data.UseDHCP ) { |
120 | TS << "iface " | 118 | SF << "iface " |
121 | << NIC | 119 | << NIC |
@@ -125,3 +123,3 @@ short ANetwork::generateFile( const QString & ID, | |||
125 | << endl; | 123 | << endl; |
126 | TS << " up echo \"" | 124 | SF << " up echo \"" |
127 | << NIC | 125 | << NIC |
@@ -132,3 +130,3 @@ short ANetwork::generateFile( const QString & ID, | |||
132 | if( Data.SendHostname ) { | 130 | if( Data.SendHostname ) { |
133 | TS << " hostname " | 131 | SF << " hostname " |
134 | << Data.Hostname | 132 | << Data.Hostname |
@@ -137,3 +135,3 @@ short ANetwork::generateFile( const QString & ID, | |||
137 | 135 | ||
138 | TS << " down rm -f /tmp/profile-" | 136 | SF << " down rm -f /tmp/profile-" |
139 | << connection()->number() | 137 | << connection()->number() |
@@ -142,3 +140,3 @@ short ANetwork::generateFile( const QString & ID, | |||
142 | } else { | 140 | } else { |
143 | TS << "iface " | 141 | SF << "iface " |
144 | << NIC << "-c" | 142 | << NIC << "-c" |
@@ -147,3 +145,3 @@ short ANetwork::generateFile( const QString & ID, | |||
147 | << endl; | 145 | << endl; |
148 | TS << " up echo \"" | 146 | SF << " up echo \"" |
149 | << NIC | 147 | << NIC |
@@ -153,3 +151,3 @@ short ANetwork::generateFile( const QString & ID, | |||
153 | << endl; | 151 | << endl; |
154 | TS << " down rm -f /tmp/profile-" | 152 | SF << " down rm -f /tmp/profile-" |
155 | << connection()->number() | 153 | << connection()->number() |
@@ -157,9 +155,9 @@ short ANetwork::generateFile( const QString & ID, | |||
157 | << endl; | 155 | << endl; |
158 | TS << " address " | 156 | SF << " address " |
159 | << Data.IPAddress | 157 | << Data.IPAddress |
160 | << endl; | 158 | << endl; |
161 | TS << " broadcast " | 159 | SF << " broadcast " |
162 | << Data.Broadcast | 160 | << Data.Broadcast |
163 | << endl; | 161 | << endl; |
164 | TS << " netmask " | 162 | SF << " netmask " |
165 | << Data.NetMask | 163 | << Data.NetMask |
@@ -177,3 +175,3 @@ short ANetwork::generateFile( const QString & ID, | |||
177 | arg( ipal[3].toShort() & nmal[3].toShort() ); | 175 | arg( ipal[3].toShort() & nmal[3].toShort() ); |
178 | TS << " network " | 176 | SF << " network " |
179 | << NW | 177 | << NW |
@@ -185,3 +183,3 @@ short ANetwork::generateFile( const QString & ID, | |||
185 | ++it ) { | 183 | ++it ) { |
186 | TS << " pre-up " | 184 | SF << " pre-up " |
187 | << (*it) | 185 | << (*it) |
@@ -192,3 +190,3 @@ short ANetwork::generateFile( const QString & ID, | |||
192 | ++it ) { | 190 | ++it ) { |
193 | TS << " up " | 191 | SF << " up " |
194 | << (*it) | 192 | << (*it) |
@@ -199,3 +197,3 @@ short ANetwork::generateFile( const QString & ID, | |||
199 | ++it ) { | 197 | ++it ) { |
200 | TS << " down " | 198 | SF << " down " |
201 | << (*it) | 199 | << (*it) |
@@ -206,3 +204,3 @@ short ANetwork::generateFile( const QString & ID, | |||
206 | ++it ) { | 204 | ++it ) { |
207 | TS << " post-down " | 205 | SF << " post-down " |
208 | << (*it) | 206 | << (*it) |
@@ -214,3 +212,3 @@ short ANetwork::generateFile( const QString & ID, | |||
214 | // embed other info in it | 212 | // embed other info in it |
215 | rvd = connection()->getToplevel()->generateFileEmbedded( ID, Path, TS, DevNr ); | 213 | rvd = connection()->getToplevel()->generateFileEmbedded( SF, DevNr ); |
216 | 214 | ||
diff --git a/noncore/settings/networksettings2/network/network_NNI.h b/noncore/settings/networksettings2/network/network_NNI.h index 5e42503..71c276a 100644 --- a/noncore/settings/networksettings2/network/network_NNI.h +++ b/noncore/settings/networksettings2/network/network_NNI.h | |||
@@ -29,7 +29,5 @@ public : | |||
29 | 29 | ||
30 | virtual bool hasDataForFile( const QString & S ); | 30 | virtual bool hasDataForFile( SystemFile & SF ); |
31 | virtual short generateFile( const QString & ID, | 31 | virtual short generateFile( SystemFile &TS, |
32 | const QString & Path, | 32 | long DevNr ); |
33 | QTextStream &TS, | ||
34 | long DevNr ); | ||
35 | 33 | ||
@@ -43,3 +41,3 @@ private : | |||
43 | NetworkEdit * GUI; | 41 | NetworkEdit * GUI; |
44 | NetworkData_t Data; | 42 | NetworkData Data; |
45 | NetworkRun * RT; | 43 | NetworkRun * RT; |
diff --git a/noncore/settings/networksettings2/network/networkdata.h b/noncore/settings/networksettings2/network/networkdata.h index 2c5da37..1df9dc4 100644 --- a/noncore/settings/networksettings2/network/networkdata.h +++ b/noncore/settings/networksettings2/network/networkdata.h | |||
@@ -5,3 +5,4 @@ | |||
5 | #include <qstringlist.h> | 5 | #include <qstringlist.h> |
6 | typedef struct NetworkData { | 6 | class NetworkData { |
7 | public : | ||
7 | bool UseDHCP; | 8 | bool UseDHCP; |
@@ -19,3 +20,3 @@ typedef struct NetworkData { | |||
19 | QStringList PostDown_SL; | 20 | QStringList PostDown_SL; |
20 | } NetworkData_t; | 21 | } ; |
21 | 22 | ||
diff --git a/noncore/settings/networksettings2/network/networkedit.cpp b/noncore/settings/networksettings2/network/networkedit.cpp index 05110d9..d13cb66 100644 --- a/noncore/settings/networksettings2/network/networkedit.cpp +++ b/noncore/settings/networksettings2/network/networkedit.cpp | |||
@@ -67,3 +67,3 @@ QString NetworkEdit::acceptable( void ) { | |||
67 | 67 | ||
68 | bool NetworkEdit::commit( NetworkData_t & Data ) { | 68 | bool NetworkEdit::commit( NetworkData & Data ) { |
69 | bool SM = 0; | 69 | bool SM = 0; |
@@ -87,3 +87,3 @@ bool NetworkEdit::commit( NetworkData_t & Data ) { | |||
87 | 87 | ||
88 | void NetworkEdit::showData( NetworkData_t & Data ) { | 88 | void NetworkEdit::showData( NetworkData & Data ) { |
89 | DHCP_CB->setChecked( Data.UseDHCP ); | 89 | DHCP_CB->setChecked( Data.UseDHCP ); |
diff --git a/noncore/settings/networksettings2/network/networkedit.h b/noncore/settings/networksettings2/network/networkedit.h index adc20e0..45635c8 100644 --- a/noncore/settings/networksettings2/network/networkedit.h +++ b/noncore/settings/networksettings2/network/networkedit.h | |||
@@ -11,4 +11,4 @@ public : | |||
11 | QString acceptable( void ); | 11 | QString acceptable( void ); |
12 | bool commit( NetworkData_t & Data ); | 12 | bool commit( NetworkData & Data ); |
13 | void showData( NetworkData_t & Data ); | 13 | void showData( NetworkData & Data ); |
14 | 14 | ||
diff --git a/noncore/settings/networksettings2/network/networkrun.cpp b/noncore/settings/networksettings2/network/networkrun.cpp index 3e24c5f..c17aa7f 100644 --- a/noncore/settings/networksettings2/network/networkrun.cpp +++ b/noncore/settings/networksettings2/network/networkrun.cpp | |||
@@ -1,26 +1,24 @@ | |||
1 | #include <system.h> | 1 | #include <system.h> |
2 | #include <asdevice.h> | 2 | #include <netnode.h> |
3 | #include <resources.h> | ||
3 | #include "networkrun.h" | 4 | #include "networkrun.h" |
4 | 5 | ||
5 | void NetworkRun::detectState( NodeCollection * NC ) { | 6 | State_t NetworkRun::detectState( void ) { |
6 | RuntimeInfo * RI = netNode()->nextNode()->runtime(); | 7 | InterfaceInfo * II = nodeCollection()->assignedInterface(); |
7 | AsDevice * Next = RI->asDevice(); | ||
8 | InterfaceInfo * II = Next->assignedInterface(); | ||
9 | 8 | ||
10 | if( II ) { | 9 | Log(( "Interface %p : %d\n", II, (II) ? II->IsUp : 0 )); |
10 | if( II && II->IsUp ) { | ||
11 | // device has assigned interface | 11 | // device has assigned interface |
12 | NC->setCurrentState( (( II->IsUp ) ? IsUp : Available) ); | 12 | return IsUp; |
13 | return; | ||
14 | } | 13 | } |
15 | 14 | ||
16 | Log(( "%s not ! UP or ava\n", NC->name().latin1() )); | 15 | // had no interface or interface is no longer up -> release |
17 | // has no interface -> delegate | 16 | nodeCollection()->assignInterface( 0 ); |
18 | RI->detectState( NC ); | 17 | |
18 | return Unknown; | ||
19 | } | 19 | } |
20 | 20 | ||
21 | bool NetworkRun::setState( NodeCollection * NC, Action_t A, bool Force ) { | 21 | QString NetworkRun::setMyState( NodeCollection * NC, Action_t A, bool ) { |
22 | // we handle UP and DOWN | 22 | // we handle UP and DOWN |
23 | RuntimeInfo * RI = netNode()->nextNode()->runtime(); | 23 | InterfaceInfo * II = NC->assignedInterface(); |
24 | AsDevice * Next = RI->asDevice(); | ||
25 | InterfaceInfo * II = Next->assignedInterface(); | ||
26 | 24 | ||
@@ -28,51 +26,26 @@ bool NetworkRun::setState( NodeCollection * NC, Action_t A, bool Force ) { | |||
28 | // we can bring UP if lower level is available | 26 | // we can bring UP if lower level is available |
29 | if( NC->currentState() == Available || Force ) { | 27 | QStringList SL; |
30 | QString S; | 28 | SL << "ifup" |
31 | S.sprintf( "ifup %s=%s-c%d-allowed", | 29 | << QString().sprintf( "%s=%s-c%d-allowed", |
32 | II->Name.latin1(), II->Name.latin1(), | 30 | II->Name.latin1(), II->Name.latin1(), |
33 | connection()->number() ); | 31 | nodeCollection()->number() ); |
34 | NSResources->system().runAsRoot( S ); | 32 | if( ! NSResources->system().runAsRoot( SL ) ) { |
33 | return QString("Cannot call %1").arg(SL.join(" ")); | ||
35 | } | 34 | } |
36 | return 1; | 35 | return QString(); |
37 | } else if( A == Down ) { | 36 | } |
38 | QString S; | 37 | |
39 | if( Force ) { | 38 | if( A == Down ) { |
40 | Log(("Force mode %d\n", Force )); | 39 | QStringList SL; |
41 | for( int i = 0; | 40 | if( II ) { |
42 | i < RI->netNode()->nodeClass()->instanceCount(); | 41 | SL << "ifdown" |
43 | i ++ ) { | 42 | << II->Name.latin1(); |
44 | S.sprintf( "ifdown %s", | 43 | if( ! NSResources->system().runAsRoot( SL ) ) { |
45 | RI->netNode()->nodeClass()->genNic( i ).latin1() ); | 44 | return QString( "Cannot call %1" ).arg( SL.join( " " )); |
46 | NSResources->system().runAsRoot( S ); | ||
47 | } | 45 | } |
48 | } else { | 46 | } else { |
49 | if( NC->currentState() == IsUp ) { | 47 | Log(( "no interface assigned." )); |
50 | S.sprintf( "ifdown %s=%s-c%d-allowed", | ||
51 | II->Name.latin1(), II->Name.latin1(), | ||
52 | connection()->number() ); | ||
53 | NSResources->system().runAsRoot( S ); | ||
54 | } | ||
55 | } | 48 | } |
56 | return 1; | ||
57 | } | ||
58 | // delegate | ||
59 | return RI->setState( NC, A, Force ); | ||
60 | } | ||
61 | |||
62 | bool NetworkRun::canSetState( State_t Curr, Action_t A ) { | ||
63 | // we handle UP and DOWN | ||
64 | RuntimeInfo * RI = netNode()->nextNode()->runtime(); | ||
65 | |||
66 | if( A == Up ) { | ||
67 | return ( Curr == Available ); | ||
68 | } else if( A == Down ) { | ||
69 | return ( Curr == IsUp ); | ||
70 | } | 49 | } |
71 | // delegate | 50 | return QString(); |
72 | return RI->canSetState( Curr, A ); | ||
73 | } | ||
74 | |||
75 | bool NetworkRun::handlesInterface( const QString & S ) { | ||
76 | // donno -> pass deeper | ||
77 | return netNode()->nextNode()->runtime()->handlesInterface(S); | ||
78 | } | 51 | } |
diff --git a/noncore/settings/networksettings2/network/networkrun.h b/noncore/settings/networksettings2/network/networkrun.h index 522a912..78a1694 100644 --- a/noncore/settings/networksettings2/network/networkrun.h +++ b/noncore/settings/networksettings2/network/networkrun.h | |||
@@ -1,5 +1,5 @@ | |||
1 | #include <asconnection.h> | 1 | #include <netnode.h> |
2 | #include "networkdata.h" | 2 | #include "networkdata.h" |
3 | 3 | ||
4 | class NetworkRun : public AsConnection { | 4 | class NetworkRun : public RuntimeInfo { |
5 | 5 | ||
@@ -8,16 +8,13 @@ public : | |||
8 | NetworkRun( ANetNodeInstance * NNI, | 8 | NetworkRun( ANetNodeInstance * NNI, |
9 | NetworkData & Data ) : AsConnection( NNI ) | 9 | NetworkData & Data ) : RuntimeInfo( NNI ) |
10 | { } | 10 | { } |
11 | 11 | ||
12 | virtual AsConnection * asConnection( void ) | 12 | virtual RuntimeInfo * connection( void ) |
13 | { return (AsConnection *)this; } | 13 | { return this; } |
14 | 14 | ||
15 | protected : | 15 | State_t detectState( void ); |
16 | |||
17 | void detectState( NodeCollection * ); | ||
18 | bool setState( NodeCollection * ,Action_t A, bool ); | ||
19 | bool canSetState( State_t , Action_t A ); | ||
20 | 16 | ||
21 | bool handlesInterface( const QString & I ); | 17 | protected : |
22 | 18 | ||
19 | QString setMyState( NodeCollection * , Action_t, bool ); | ||
23 | }; | 20 | }; |
diff --git a/noncore/settings/networksettings2/network/opie-networksettings2plugin-network.control b/noncore/settings/networksettings2/network/opie-networksettings2plugin-network.control index 3dbb808..7b1056b 100644 --- a/noncore/settings/networksettings2/network/opie-networksettings2plugin-network.control +++ b/noncore/settings/networksettings2/network/opie-networksettings2plugin-network.control | |||
@@ -1,2 +1,2 @@ | |||
1 | Package: opie-networksettingsplugin2-network | 1 | Package: opie-networksettings2plugin-network |
2 | Files: plugins/networksettings2/libnetwork.so* | 2 | Files: plugins/networksettings2/libnetwork.so* |