summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings2/network/networkrun.cpp
blob: 7039a36ad25eb10a295ba4f47bdc4e8a24fdeb41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <system.h>
#include <netnode.h>
#include <resources.h>
#include "networkrun.h"

State_t NetworkRun::detectState( void ) { 
    InterfaceInfo * II = networkSetup()->assignedInterface();

    if( II && II->IsUp ) {
      // device has assigned interface
      return IsUp;
    }

    // had no interface or interface is no longer up -> release
    networkSetup()->assignInterface( 0 );

    return Unknown;
}

QString NetworkRun::setMyState( NetworkSetup * NC, Action_t A, bool ) { 
    // we handle UP and DOWN
    InterfaceInfo * II = NC->assignedInterface();

    if( ! II ) {
      Log(( "no interface assigned." ));
      return QString();
    }

    QStringList SL;

    if( A == Up ) {
      // we can bring UP if lower level is available
      SL << "ifup";
    } else if( A == Down ) {
      SL << "ifdown";
    } else {
      return QString();
    }

    SL << QString().sprintf( "%s=A%ld%s",
                        II->Name.latin1(), 
                        networkSetup()->number(),
                        II->Name.latin1() );

    if( ! NSResources->system().runAsRoot( SL ) ) {
      return QString("Cannot call %1").arg(SL.join(" "));
    }

    return QString();
}