Dibbler - a portable DHCPv6  1.0.2RC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RelCfgMgr.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  *
7  * released under GNU GPL v2 only licence
8  *
9  */
10 
11 #ifndef RELCFGMGR_H
12 #define RELCFGMGR_H
13 
14 #include "RelCfgIface.h"
15 
16 #include "CfgMgr.h"
17 #include "DHCPConst.h"
18 #include "OptVendorData.h"
19 #include "RelOptEcho.h"
20 
21 #define RelCfgMgr() (TRelCfgMgr::instance())
22 
23 class TRelCfgMgr : public TCfgMgr
24 {
25 public:
26  friend std::ostream & operator<<(std::ostream &strum, TRelCfgMgr &x);
27  virtual ~TRelCfgMgr();
28 
29  static void instanceCreate(const std::string& cfgFile, const std::string& xmlFile);
30  static TRelCfgMgr& instance();
31 
32  bool parseConfigFile(const std::string& cfgFile);
33 
34  //Interfaces access methods
35  void firstIface();
39  long countIface();
40  void addIface(SPtr<TRelCfgIface> iface);
41 
42  void dump();
43 
44  bool isDone();
45 
47 
48  // configuration parameters
49  std::string getWorkdir();
50  bool guessMode();
52 
55 
56  void setRelayID(SPtr<TOpt> relayID);
58 
59  void setClientLinkLayerAddress(bool enabled);
61 
62 protected:
63  static TRelCfgMgr * Instance;
64  TRelCfgMgr(const std::string& cfgFile, const std::string& xmlFile);
65 
66 private:
67 
68  std::string XmlFile;
69 
70  static int NextRelayID;
71 
72  bool IsDone;
73  bool validateConfig();
74  bool validateIface(SPtr<TRelCfgIface> ptrIface);
75  TContainer< SPtr<TRelCfgIface> > IfaceLst;
76 
78 
79  // global options
80  std::string Workdir;
81  bool GuessMode;
83 
87 
89 };
90 
91 #endif /* RELCONFMGR_H */
92