summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings2/networksettings2/system.h
blob: 96ee9bd456c22f9723148901cd71864e68c580f0 (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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#ifndef __SYSTEM__H
#define __SYSTEM__H

// for hardware types
#include <net/if_arp.h>
#include <qdict.h>

class ANetNodeInstance;
class QFile;

class InterfaceInfo {

public :

        InterfaceInfo() :
            Name(),
            MACAddress(),
            BCastAddress(),
            Netmask(),
            DstAddress() {
        }

        ANetNodeInstance * assignedNode()
          { return NetNode; }

        void assignNode( ANetNodeInstance * NNI )
          { NetNode = NNI; }

        ANetNodeInstance * NetNode;     // netnode taking care of me
        QString Name;                   // name of interface
        int     CardType;               // type of card
        QString MACAddress;             // MAC address
        QString Address;                // IP Address
        QString BCastAddress;           // Broadcast Address
        QString Netmask;                // Netmask
        QString DstAddress;             // Peer address (if P-t-P)
        bool    IsUp;                   // interface is UP
        bool    HasMulticast;           // Supports Multicast
        bool    IsPointToPoint;         // IsPointToPoint card

        QString RcvBytes;
        QString SndBytes;
        QString RcvErrors;
        QString SndErrors;
        QString RcvDropped;
        QString SndDropped;
        QString Collisions;
};

class System {

public :

      System( void );
      ~System( void );

      QDict<InterfaceInfo> & interfaces( void ) 
        { return ProbedInterfaces; }
      InterfaceInfo * interface( const QString& N ) 
        { return ProbedInterfaces[N]; }

      // exec command as root
      int runAsRoot( const QString & S );

      // exec command as user
      void execAsUser( QString & Cmd, char * argv[] );

      // refresh stats for this interface
      void refreshStatistics( InterfaceInfo & );

      // reloads interfaces
      void probeInterfaces( void );

private  :

      QDict<InterfaceInfo>  ProbedInterfaces;
      QFile *               ProcDevNet;

};

#endif