11#include <boost/foreach.hpp>
39 {
"valid-lifetime", Element::integer },
40 {
"min-valid-lifetime", Element::integer },
41 {
"max-valid-lifetime", Element::integer },
42 {
"renew-timer", Element::integer },
43 {
"rebind-timer", Element::integer },
44 {
"decline-probation-period", Element::integer },
45 {
"subnet4", Element::list },
46 {
"shared-networks", Element::list },
47 {
"interfaces-config", Element::map },
48 {
"lease-database", Element::map },
49 {
"hosts-database", Element::map },
50 {
"hosts-databases", Element::list },
51 {
"host-reservation-identifiers", Element::list },
52 {
"client-classes", Element::list },
53 {
"option-def", Element::list },
54 {
"option-data", Element::list },
55 {
"hooks-libraries", Element::list },
56 {
"expired-leases-processing", Element::map },
57 {
"dhcp4o6-port", Element::integer },
58 {
"control-socket", Element::map },
59 {
"dhcp-queue-control", Element::map },
60 {
"dhcp-ddns", Element::map },
61 {
"echo-client-id", Element::boolean },
62 {
"match-client-id", Element::boolean },
63 {
"authoritative", Element::boolean },
64 {
"next-server", Element::string },
65 {
"server-hostname", Element::string },
66 {
"boot-file-name", Element::string },
67 {
"user-context", Element::map },
68 {
"comment", Element::string },
69 {
"sanity-checks", Element::map },
70 {
"reservations", Element::list },
71 {
"config-control", Element::map },
72 {
"server-tag", Element::string },
73 {
"reservation-mode", Element::string },
74 {
"reservations-global", Element::boolean },
75 {
"reservations-in-subnet", Element::boolean },
76 {
"reservations-out-of-pool", Element::boolean },
77 {
"calculate-tee-times", Element::boolean },
78 {
"t1-percent", Element::real },
79 {
"t2-percent", Element::real },
80 {
"loggers", Element::list },
81 {
"hostname-char-set", Element::string },
82 {
"hostname-char-replacement", Element::string },
83 {
"ddns-send-updates", Element::boolean },
84 {
"ddns-override-no-update", Element::boolean },
85 {
"ddns-override-client-update", Element::boolean },
86 {
"ddns-replace-client-name", Element::string },
87 {
"ddns-generated-prefix", Element::string },
88 {
"ddns-qualifying-suffix", Element::string },
89 {
"store-extended-info", Element::boolean },
90 {
"statistic-default-sample-count", Element::integer },
91 {
"statistic-default-sample-age", Element::integer },
92 {
"multi-threading", Element::map },
93 {
"cache-threshold", Element::real },
94 {
"cache-max-age", Element::integer },
95 {
"ip-reservations-unique", Element::boolean },
96 {
"ddns-update-on-renew", Element::boolean },
97 {
"ddns-use-conflict-resolution", Element::boolean },
98 {
"compatibility", Element::map },
99 {
"parked-packet-limit", Element::integer },
108 {
"valid-lifetime", Element::integer,
"7200" },
109 {
"decline-probation-period", Element::integer,
"86400" },
110 {
"dhcp4o6-port", Element::integer,
"0" },
111 {
"echo-client-id", Element::boolean,
"true" },
112 {
"match-client-id", Element::boolean,
"true" },
113 {
"authoritative", Element::boolean,
"false" },
114 {
"next-server", Element::string,
"0.0.0.0" },
115 {
"server-hostname", Element::string,
"" },
116 {
"boot-file-name", Element::string,
"" },
117 {
"server-tag", Element::string,
"" },
118 {
"reservations-global", Element::boolean,
"false" },
119 {
"reservations-in-subnet", Element::boolean,
"true" },
120 {
"reservations-out-of-pool", Element::boolean,
"false" },
121 {
"calculate-tee-times", Element::boolean,
"false" },
122 {
"t1-percent", Element::real,
".50" },
123 {
"t2-percent", Element::real,
".875" },
124 {
"ddns-send-updates", Element::boolean,
"true" },
125 {
"ddns-override-no-update", Element::boolean,
"false" },
126 {
"ddns-override-client-update", Element::boolean,
"false" },
127 {
"ddns-replace-client-name", Element::string,
"never" },
128 {
"ddns-generated-prefix", Element::string,
"myhost" },
129 {
"ddns-qualifying-suffix", Element::string,
"" },
130 {
"hostname-char-set", Element::string,
"[^A-Za-z0-9.-]" },
131 {
"hostname-char-replacement", Element::string,
"" },
132 {
"store-extended-info", Element::boolean,
"false" },
133 {
"statistic-default-sample-count", Element::integer,
"20" },
134 {
"statistic-default-sample-age", Element::integer,
"0" },
135 {
"ip-reservations-unique", Element::boolean,
"true" },
136 {
"ddns-update-on-renew", Element::boolean,
"false" },
137 {
"ddns-use-conflict-resolution", Element::boolean,
"true" },
138 {
"parked-packet-limit", Element::integer,
"256" },
147 {
"name", Element::string },
148 {
"code", Element::integer },
149 {
"type", Element::string },
150 {
"record-types", Element::string },
151 {
"space", Element::string },
152 {
"encapsulate", Element::string },
153 {
"array", Element::boolean, },
154 {
"user-context", Element::map },
155 {
"comment", Element::string },
156 {
"metadata", Element::map }
164 {
"record-types", Element::string,
""},
165 {
"space", Element::string,
"dhcp4"},
166 {
"array", Element::boolean,
"false"},
167 {
"encapsulate", Element::string,
"" }
176 {
"name", Element::string },
177 {
"data", Element::string },
178 {
"code", Element::integer },
179 {
"space", Element::string },
180 {
"csv-format", Element::boolean },
181 {
"always-send", Element::boolean },
182 {
"user-context", Element::map },
183 {
"comment", Element::string },
184 {
"metadata", Element::map }
193 {
"space", Element::string,
"dhcp4"},
194 {
"csv-format", Element::boolean,
"true"},
195 {
"always-send", Element::boolean,
"false"}
204 {
"valid-lifetime", Element::integer },
205 {
"min-valid-lifetime", Element::integer },
206 {
"max-valid-lifetime", Element::integer },
207 {
"renew-timer", Element::integer },
208 {
"rebind-timer", Element::integer },
209 {
"option-data", Element::list },
210 {
"pools", Element::list },
211 {
"subnet", Element::string },
212 {
"interface", Element::string },
213 {
"id", Element::integer },
214 {
"client-class", Element::string },
215 {
"require-client-classes", Element::list },
216 {
"reservations", Element::list },
217 {
"reservation-mode", Element::string },
218 {
"reservations-global", Element::boolean },
219 {
"reservations-in-subnet", Element::boolean },
220 {
"reservations-out-of-pool", Element::boolean },
221 {
"relay", Element::map },
222 {
"match-client-id", Element::boolean },
223 {
"authoritative", Element::boolean },
224 {
"next-server", Element::string },
225 {
"server-hostname", Element::string },
226 {
"boot-file-name", Element::string },
227 {
"4o6-interface", Element::string },
228 {
"4o6-interface-id", Element::string },
229 {
"4o6-subnet", Element::string },
230 {
"user-context", Element::map },
231 {
"comment", Element::string },
232 {
"calculate-tee-times", Element::boolean },
233 {
"t1-percent", Element::real },
234 {
"t2-percent", Element::real },
235 {
"ddns-send-updates", Element::boolean },
236 {
"ddns-override-no-update", Element::boolean },
237 {
"ddns-override-client-update", Element::boolean },
238 {
"ddns-replace-client-name", Element::string },
239 {
"ddns-generated-prefix", Element::string },
240 {
"ddns-qualifying-suffix", Element::string },
241 {
"hostname-char-set", Element::string },
242 {
"hostname-char-replacement", Element::string },
243 {
"store-extended-info", Element::boolean },
244 {
"metadata", Element::map },
245 {
"cache-threshold", Element::real },
246 {
"cache-max-age", Element::integer },
247 {
"ddns-update-on-renew", Element::boolean },
248 {
"ddns-use-conflict-resolution", Element::boolean }
259 {
"id", Element::integer,
"0" },
260 {
"interface", Element::string,
"" },
261 {
"client-class", Element::string,
"" },
262 {
"4o6-interface", Element::string,
"" },
263 {
"4o6-interface-id", Element::string,
"" },
264 {
"4o6-subnet", Element::string,
"" },
274 {
"id", Element::integer,
"0" },
275 {
"4o6-interface", Element::string,
"" },
276 {
"4o6-interface-id", Element::string,
"" },
277 {
"4o6-subnet", Element::string,
"" },
294 "min-valid-lifetime",
295 "max-valid-lifetime",
296 "calculate-tee-times",
299 "store-extended-info",
310 {
"pool", Element::string },
311 {
"option-data", Element::list },
312 {
"client-class", Element::string },
313 {
"require-client-classes", Element::list },
314 {
"user-context", Element::map },
315 {
"comment", Element::string },
316 {
"metadata", Element::map }
325 {
"name", Element::string },
326 {
"subnet4", Element::list },
327 {
"interface", Element::string },
328 {
"renew-timer", Element::integer },
329 {
"rebind-timer", Element::integer },
330 {
"option-data", Element::list },
331 {
"match-client-id", Element::boolean },
332 {
"authoritative", Element::boolean },
333 {
"next-server", Element::string },
334 {
"server-hostname", Element::string },
335 {
"boot-file-name", Element::string },
336 {
"relay", Element::map },
337 {
"reservation-mode", Element::string },
338 {
"reservations-global", Element::boolean },
339 {
"reservations-in-subnet", Element::boolean },
340 {
"reservations-out-of-pool", Element::boolean },
341 {
"client-class", Element::string },
342 {
"require-client-classes", Element::list },
343 {
"valid-lifetime", Element::integer },
344 {
"min-valid-lifetime", Element::integer },
345 {
"max-valid-lifetime", Element::integer },
346 {
"user-context", Element::map },
347 {
"comment", Element::string },
348 {
"calculate-tee-times", Element::boolean },
349 {
"t1-percent", Element::real },
350 {
"t2-percent", Element::real },
351 {
"ddns-send-updates", Element::boolean },
352 {
"ddns-override-no-update", Element::boolean },
353 {
"ddns-override-client-update", Element::boolean },
354 {
"ddns-replace-client-name", Element::string },
355 {
"ddns-generated-prefix", Element::string },
356 {
"ddns-qualifying-suffix", Element::string },
357 {
"hostname-char-set", Element::string },
358 {
"hostname-char-replacement", Element::string },
359 {
"store-extended-info", Element::boolean },
360 {
"metadata", Element::map },
361 {
"cache-threshold", Element::real },
362 {
"cache-max-age", Element::integer },
363 {
"ddns-update-on-renew", Element::boolean },
364 {
"ddns-use-conflict-resolution", Element::boolean }
369 {
"client-class", Element::string,
"" },
370 {
"interface", Element::string,
"" }
375 {
"re-detect", Element::boolean,
"true" }
380 {
"enable-queue", Element::boolean,
"false"},
381 {
"queue-type", Element::string,
"kea-ring4"},
382 {
"capacity", Element::integer,
"64"}
387 {
"enable-multi-threading", Element::boolean,
"false" },
388 {
"thread-pool-size", Element::integer,
"0" },
389 {
"packet-queue-size", Element::integer,
"64" }
394 {
"lease-checks", Element::string,
"warn" }
412 BOOST_FOREACH(
ElementPtr option_def, option_defs->listValue()) {
432 ElementPtr mutable_cfg = boost::const_pointer_cast<Element>(ifaces_cfg);
439 BOOST_FOREACH(
ElementPtr net, shared->listValue()) {
455 mutable_cfg = boost::const_pointer_cast<Element>(queue_control);
457 mutable_cfg = Element::createMap();
458 global->set(
"dhcp-queue-control", mutable_cfg);
466 if (multi_threading) {
467 mutable_cfg = boost::const_pointer_cast<Element>(multi_threading);
469 mutable_cfg = Element::createMap();
470 global->set(
"multi-threading", mutable_cfg);
479 mutable_cfg = boost::const_pointer_cast<Element>(sanity_checks);
481 mutable_cfg = Element::createMap();
482 global->set(
"sanity-checks", mutable_cfg);
496 BOOST_FOREACH(
ElementPtr single_subnet, subnets->listValue()) {
497 cnt += SimpleParser::deriveParams(global, single_subnet,
507 BOOST_FOREACH(
ElementPtr net, shared->listValue()) {
511 cnt += SimpleParser::deriveParams(global, net,
515 subnets = net->get(
"subnet4");
517 BOOST_FOREACH(
ElementPtr single_subnet, subnets->listValue()) {
518 cnt += SimpleParser::deriveParams(net, single_subnet,
static size_t setListDefaults(isc::data::ConstElementPtr list, const SimpleDefaults &default_values)
Sets the default values for all entries in a list.
static size_t setDefaults(isc::data::ElementPtr scope, const SimpleDefaults &default_values)
Sets the default values.
static const isc::data::SimpleDefaults DHCP_MULTI_THREADING4_DEFAULTS
This table defines default values for multi-threading in DHCPv4.
static const isc::data::SimpleDefaults SUBNET4_DEFAULTS
This table defines default values for each IPv4 subnet.
static const isc::data::SimpleKeywords SUBNET4_PARAMETERS
This table defines all subnet parameters for DHCPv4.
static const isc::data::SimpleKeywords GLOBAL4_PARAMETERS
This table defines all global parameters in DHCPv4.
static const isc::data::SimpleDefaults GLOBAL4_DEFAULTS
This table defines default global values for DHCPv4.
static const isc::data::ParamsList INHERIT_TO_SUBNET4
List of parameters that can be inherited to subnet4 scope.
static const isc::data::SimpleDefaults IFACE4_DEFAULTS
This table defines default values for interfaces for DHCPv4.
static const isc::data::SimpleKeywords OPTION4_DEF_PARAMETERS
This table defines all option definition parameters.
static const isc::data::SimpleDefaults SHARED_NETWORK4_DEFAULTS
This table defines default values for each IPv4 shared network.
static const isc::data::SimpleKeywords OPTION4_PARAMETERS
This table defines all option parameters.
static const isc::data::SimpleKeywords POOL4_PARAMETERS
This table defines all pool parameters.
static size_t deriveParameters(isc::data::ElementPtr global)
Derives (inherits) all parameters from global to more specific scopes.
static size_t setAllDefaults(isc::data::ElementPtr global)
Sets all defaults for DHCPv4 configuration.
static const isc::data::SimpleDefaults SHARED_SUBNET4_DEFAULTS
This table defines default values for each IPv4 subnet that is part of a shared network.
static const isc::data::SimpleDefaults OPTION4_DEFAULTS
This table defines default values for options in DHCPv4.
static const isc::data::SimpleKeywords SHARED_NETWORK4_PARAMETERS
This table defines all shared network parameters for DHCPv4.
static const isc::data::SimpleDefaults SANITY_CHECKS4_DEFAULTS
This defines default values for sanity checking for DHCPv4.
static const isc::data::SimpleDefaults DHCP_QUEUE_CONTROL4_DEFAULTS
This table defines default values for dhcp-queue-control in DHCPv4.
static const isc::data::SimpleDefaults OPTION4_DEF_DEFAULTS
This table defines default values for option definitions in DHCPv4.
std::vector< std::string > ParamsList
This defines a list of all parameters that are derived (or inherited) between contexts.
boost::shared_ptr< const Element > ConstElementPtr
std::vector< SimpleDefault > SimpleDefaults
This specifies all default values in a given scope (e.g. a subnet).
boost::shared_ptr< Element > ElementPtr
std::map< std::string, isc::data::Element::types > SimpleKeywords
This specifies all accepted keywords with their types.
Defines the logger used by the top-level component of kea-lfc.