Dibbler - a portable DHCPv6  1.0.2RC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ClntCfgMgr.h
Go to the documentation of this file.
1 /*
2  * Dibbler - a portable DHCPv6
3  *
4  * authors: Tomasz Mrugalski <thomson@klub.com.pl>
5  * Marek Senderski <msend@o2.pl>
6  * changes: Krzysztof WNuk <keczi@poczta.onet.pl>
7  * Michal Kowalczuk <michal@kowalczuk.eu>
8  *
9  * released under GNU GPL v2 only licence
10  *
11  * $Id: ClntCfgMgr.h,v 1.30 2008-08-30 21:41:10 thomson Exp $
12  */
13 
14 class TClntCfgMgr;
15 class TClntCfgIface;
16 class ClntParser;
17 #ifndef CLNTCFGMGR_H
18 #define CLNTCFGMGR_H
19 
20 #include <string>
21 #include <vector>
22 #include "SmartPtr.h"
23 #include "Container.h"
24 #include "ClntCfgIface.h"
25 #include "ClntIfaceMgr.h"
26 #include "ClntCfgIA.h"
27 #include "ClntCfgPD.h"
28 #include "CfgMgr.h"
29 
30 #ifndef MOD_DISABLE_AUTH
31 #include "KeyList.h"
32 #endif
33 
34 #define ClntCfgMgr() (TClntCfgMgr::instance())
35 
36 class TClntCfgMgr : public TCfgMgr
37 {
38  friend std::ostream & operator<<(std::ostream &strum, TClntCfgMgr &x);
39  private:
40  TClntCfgMgr(const std::string& cfgFile);
41 
42  public:
43  static TClntCfgMgr & instance();
44  static void instanceCreate(const std::string& cfgFile);
45  ~TClntCfgMgr();
46 
47  // --- Iface related ---
48  SPtr<TClntCfgIA> getIA(long IAID);
49  SPtr<TClntCfgPD> getPD(long IAID);
52  void firstIface();
54  void makeInactiveIface(int ifindex, bool inactive, bool managed,
55  bool otherConf);
56  int countIfaces();
57  void dump();
58 
59  void setDownlinkPrefixIfaces(List(std::string)& ifaces);
60  const std::vector<std::string>& getDownlinkPrefixIfaces() { return DownlinkPrefixIfaces_; }
61 
62  void setReconfigure(bool enable);
63  bool getReconfigure();
64 
65  //IA related
66  bool setIAState(int iface, int iaid, enum EState state);
67  int countAddrForIA(long IAID);
68 
70  bool isDone();
71 
73  void setDigest(DigestTypes value);
74 
75  void setScript(std::string script) { ScriptName = script; }
76  std::string getScript() { return ScriptName; }
77 
78  bool anonInfRequest();
79  bool insistMode();
80  bool inactiveMode();
81  bool addInfRefreshTime();
82 
83  int inactiveIfacesCnt();
86 
87  void obeyRaBits(bool obey);
88  bool obeyRaBits();
89 
90 #ifndef MOD_DISABLE_AUTH
91  // Authorization
92  uint32_t getSPI();
93 
95  void setAuthAcceptMethods(const std::vector<DigestTypes>& methods);
96  const std::vector<DigestTypes>& getAuthAcceptMethods();
97 
99 #endif
100 
101 #ifdef MOD_REMOTE_AUTOCONF
102  void setRemoteAutoconf(bool enable);
103  bool getRemoteAutoconf();
104 #endif
105 
106  bool getFQDNFlagS();
107 
108  bool useConfirm();
109 private:
110  bool setGlobalOptions(ClntParser * parser);
111  bool validateConfig();
113  bool validateIA(SPtr<TClntCfgIface> ptrIface, SPtr<TClntCfgIA> ptrIA);
114  bool validateAddr(SPtr<TClntCfgIface> ptrIface,
115  SPtr<TClntCfgIA> ptrIA,
116  SPtr<TClntCfgAddr> ptrAddr);
117  bool validatePD(SPtr<TClntCfgIface> ptrIface, SPtr<TClntCfgPD> ptrPD);
118  bool validatePrefix(SPtr<TClntCfgIface> ptrIface,
119  SPtr<TClntCfgPD> ptrPD,
120  SPtr<TClntCfgPrefix> ptrPrefix);
121  bool parseConfigFile(const std::string& cfgFile);
123 
124  TContainer< SPtr<TClntCfgIface> > ClntCfgIfaceLst;
125  TContainer< SPtr<TClntCfgIface> > InactiveLst;
126  std::string ScriptName;
127 
133 
135 #ifndef MOD_DISABLE_AUTH
136  std::vector<DigestTypes> AuthAcceptMethods_; // used in auth protocol dibbler
137  uint32_t SPI_; // used in auth protocol dibbler
138 #endif
139 
140 #ifdef MOD_REMOTE_AUTOCONF
141  bool RemoteAutoconf;
142 #endif
143 
144  bool FQDNFlagS; // S bit in the FQDN option
145 
146  std::vector<std::string> DownlinkPrefixIfaces_;
147 
149 
151 };
152 
153 typedef bool HardcodedCfgFunc(TClntCfgMgr *cfgMgr, std::string params);
154 
155 #endif
156