NetBurner 3.1
config_netobj.h
1 /*NB_REVISION*/
2 
3 /*NB_COPYRIGHT*/
4 
5 #ifndef CONFIG_NETOBJ_H
6 #define CONFIG_NETOBJ_H
7 #include <config_obj.h>
8 
9 class I4Record;
10 
11 class CUR_IPADDR4 : public config_value
12 {
13  public:
14  IPADDR4 i4;
15  ConfigEndMarker;
16  CUR_IPADDR4(const char *name, const char *desc = NULL) : config_value(name, desc)
17  {
18  SetFlag(fConfigReadOnly | fConfigNoSave);
19  i4 = 0;
20  }
21 
22  virtual void GetTextValue(NBString &s) { s.siprintf("\"%hI\"", i4); };
23 
24  virtual ConfigTestResult TestNewValue(ParsedJsonDataSet &pjs) { return eUnchanged; }
25  virtual void CommitTestedValue(uint32_t permission_mask){};
26 
27  CUR_IPADDR4 &operator=(const CUR_IPADDR4 &v)
28  {
29  i4 = v.i4;
30  return *this;
31  };
32  CUR_IPADDR4 &operator=(const IPADDR4 &v)
33  {
34  i4 = v;
35  return *this;
36  };
37  CUR_IPADDR4 &operator=(const uint32_t v)
38  {
39  i4 = v;
40  return *this;
41  };
42  virtual void ExtendedSchema(int fd, int indent, bool pretty) { DoSchemaLine(fd, "format", "ipv4", indent, pretty); };
43  virtual void GetTypeValue(NBString &s) { s = "string"; };
44  operator IPADDR4() { return i4; };
45 };
46 
47 inline bool operator==(const IPADDR4 i, const CUR_IPADDR4 j)
48 {
49  return i == j.i4;
50 }
51 inline bool operator!=(const IPADDR4 i, const CUR_IPADDR4 j)
52 {
53  return i != j.i4;
54 }
55 inline bool operator>(const IPADDR4 i, const CUR_IPADDR4 j)
56 {
57  return i > j.i4;
58 }
59 inline bool operator<(const IPADDR4 i, const CUR_IPADDR4 j)
60 {
61  return i > j.i4;
62 }
63 
64 inline bool operator==(const CUR_IPADDR4 i, const IPADDR4 j)
65 {
66  return i.i4 == j;
67 }
68 inline bool operator!=(const CUR_IPADDR4 i, const IPADDR4 j)
69 {
70  return i.i4 != j;
71 }
72 inline bool operator>(const CUR_IPADDR4 i, const IPADDR4 j)
73 {
74  return i.i4 > j;
75 }
76 inline bool operator<(const CUR_IPADDR4 i, const IPADDR4 j)
77 {
78  return i.i4 > j;
79 }
80 
81 inline bool operator==(const uint32_t i, const CUR_IPADDR4 j)
82 {
83  return i == j.i4;
84 }
85 inline bool operator!=(const uint32_t i, const CUR_IPADDR4 j)
86 {
87  return i != j.i4;
88 }
89 inline bool operator>(const uint32_t i, const CUR_IPADDR4 j)
90 {
91  return i > j.i4;
92 }
93 inline bool operator<(const uint32_t i, const CUR_IPADDR4 j)
94 {
95  return i < j.i4;
96 }
97 
98 inline bool operator==(const CUR_IPADDR4 i, const uint32_t j)
99 {
100  return i.i4 == j;
101 }
102 inline bool operator!=(const CUR_IPADDR4 i, const uint32_t j)
103 {
104  return i.i4 != j;
105 }
106 inline bool operator>(const CUR_IPADDR4 i, const uint32_t j)
107 {
108  return i.i4 > j;
109 }
110 inline bool operator<(const CUR_IPADDR4 i, const uint32_t j)
111 {
112  return i.i4 < j;
113 }
114 
115 /* Some predefined records */
116 class I4Record : public config_obj
117 {
118  void *m_pBlock_if;
119 
120  public:
121  config_chooser mode{"Mode", "DHCP", "DHCP,DHCP w Fallback,Static,Disabled",
122  "DHCP,DHCP with backup static address,Static preconfigured address,Disabled"};
123  config_IPADDR4 addr{"0.0.0.0", "StaticAddr", "Configured IP Address"};
124  config_IPADDR4 mask{"0.0.0.0", "StaticMask", "Configured IP Mask"};
125  config_IPADDR4 gate{"0.0.0.0", "StaticGate", "Configured IP Gateway"};
126  config_IPADDR4 dns1{"0.0.0.0", "StaticDNS1", "Configured IP DNS(1)"};
127  config_IPADDR4 dns2{"0.0.0.0", "StaticDNS2", "Configured IP DNS(2)"};
128 
129  config_bool autoip{true, "AutoIPEn"};
130 
131  CUR_IPADDR4 cur_addr{"ActiveAddr", "Current IPV4 address in use"};
132  CUR_IPADDR4 cur_mask{"ActiveMask", "Current IPV4 mask in use"};
133  CUR_IPADDR4 cur_gate{"ActiveGate", "Current IPV4 gateway in use"};
134  CUR_IPADDR4 cur_dns1{"ActiveDNS1", "Current IPV4 dns(1) in use"};
135  CUR_IPADDR4 cur_dns2{"ActiveDNS2", "Current IPV4 dns(2) in use"};
136  CUR_IPADDR4 cur_auto{"AutoIPAddr", "Current IPV4 auto address in use"};
137 
138  ConfigEndMarker;
139 
140  I4Record(const char *name, const char *desc = NULL) : config_obj(name, desc) { m_pBlock_if = 0; };
141  void Attach(void *pb) { m_pBlock_if = pb; }
142  void GetReportItem(NBString &s, int item);
143 };
144 
145 #ifdef IPV6
146 class I6Record;
147 
148 class Dynamic_IPADDR6 : public config_value
149 {
150  int m_nItem;
151  I6Record *m_pI6;
152  ConfigEndMarker;
153 
154  public:
155  virtual void GetTextValue(NBString &s);
156 
157  Dynamic_IPADDR6(const char *name, int item, I6Record *pI6, const char *desc = NULL) : config_value(name, desc)
158  {
159  m_nItem = item;
160  m_pI6 = pI6;
161  SetFlag(fConfigReadOnly | fConfigNoSave);
162  }
163 
164  virtual ConfigTestResult TestNewValue(ParsedJsonDataSet &pjs) { return eUnchanged; }
165  virtual void CommitTestedValue(uint32_t permission_mask){};
166  void AddToJsonOutObject(ParsedJsonDataSet &jo, const char *name);
167  virtual void ExtendedSchema(int fd, int indent, bool pretty) { DoSchemaLine(fd, "format", "ipv6", indent, pretty); };
168  virtual void GetTypeValue(NBString &s) { s = "array"; };
169 };
170 
171 class I6Record : public config_obj
172 {
173  int m_nIf;
174 
175  public:
176  config_chooser mode{"Mode", "DHCP", "DHCP,DHCP w Fallback,Static,Disabled",
177  "DHCP,DHCP with backup static address,Static preconfigured address,Disabled"};
178  config_IPADDR6 addr{"0::0", "StaticAddr", "Configured IPV6 address"};
179  config_IPADDR6 dns1{"0::0", "StaticDNS1", "Configured IPV6 DNS(1)"};
180  config_IPADDR6 dns2{"0::0", "StaticDNS2", "Configured IPV6 DNS(2)"};
181 
182  Dynamic_IPADDR6 address_list{"ActiveAddr", 0, this, "Active currently in user IPV6 addres(s)"};
183  Dynamic_IPADDR6 dns_list{"ActiveDNS", 1, this, "Active currently in user IPV6 DNS(s)"};
184  Dynamic_IPADDR6 route_list{"ActiveRoute", 2, this, "Active currently in user IPV6 routes"};
185 
186  ConfigEndMarker;
187 
188  I6Record(const char *name, const char *desc = NULL) : config_obj(name, desc) { m_nIf = -1; };
189  void Attach(int nif) { m_nIf = nif; };
190  void ReportGetTextValue(NBString &s, int item);
191  int GetnIf() { return m_nIf; };
192 };
193 #endif
194 
195 #endif
Definition: config_obj.h:134
Configuration object header file.
#define NULL
Definition: nm_bsp.h:76