summaryrefslogtreecommitdiff
path: root/noncore/net/networksetup/interfaces/interfaces.h
blob: e09ea71e7f70e38153fa90453dd9a7abb3c44258 (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
#ifndef INTERFACES_H
#define INTERFACES_H

#include <qstring.h>
#include <qstringlist.h>

#define INTERFACES_LOOPBACK "loopback"

#define INTERFACES_FAMILY_INET "inet"
#define INTERFACES_FAMILY_IPX "ipx"
#define INTERFACES_FAMILY_INET6 "inet6"

#define INTERFACES_METHOD_DHCP "dhcp"
#define INTERFACES_METHOD_STATIC "static"
#define INTERFACES_METHOD_PPP "ppp"

/**
 * This class provides a clean frontend for parsing the network interfaces file.
 * It provides helper functions to minipulate the options within the file.
 * See the interfaces man page for the syntax rules.
 */
class Interfaces {

public:
  Interfaces(QString useInterfacesFile = "/etc/network/interfaces");
  QStringList getInterfaceList();
  
  bool isAuto(QString interface);
  bool setAuto(QString interface, bool setAuto);
  
  bool removeInterface();
  bool addInterface(QString interface, QString family, QString method);
  bool copyInterface(QString oldInterface, QString newInterface);
  bool setInterface(QString interface);
  bool isInterfaceSet();
  QString getInterfaceName(bool &error);
  bool setInterfaceName(QString newName);
  QString getInterfaceFamily(bool &error);
  bool setInterfaceFamily(QString newName);
  QString getInterfaceMethod(bool &error);
  bool setInterfaceMethod(QString newName);
  QString getInterfaceOption(QString option, bool &error); 
  bool setInterfaceOption(QString option, QString value);
  bool removeInterfaceOption(QString option, QString value);
  bool removeAllInterfaceOptions();
  
  bool setMapping(QString interface);
  bool removeMapping();
  void addMapping(QString options);
  bool setMap(QString map, QString value);
  bool removeMap(QString map, QString value);
  QString getMap(QString map, bool &error);
  bool setScript(QString);
  QString getScript(bool &error);
		  
  bool write();
  
private:
  bool setStanza(QString stanza, QString option,QStringList::Iterator &iterator);
  bool setOption(QStringList::Iterator start, QString option, QString value);
  bool removeOption(QStringList::Iterator start, QString option, QString value);
  QString getOption(QStringList::Iterator start, QString option, bool &error);
  bool removeAllOptions(QStringList::Iterator start);
  
  QString interfacesFile;
  QStringList interfaces;
  QStringList::Iterator currentIface;
  QStringList::Iterator currentMapping;

  QStringList acceptedFamily;
};

#endif

// interfaces