44 {
"dhcp",
"dhcp4", 2},
46 {
"agent",
"dhcp-agent-options-space", 2},
47 {
"vendor-class",
"_vivco_", 0},
48 {
"vendor",
"_vivso_", 3},
50 {
"",
"vendor-encapsulated-options-space", 1},
51 {
"_docsis3_",
"vendor-4491", 1},
52 {
"dhcp6",
"dhcp6", 2},
53 {
"vsio",
"_vendor-opts-space_", 3},
54 {
"_vsio_",
"vendor-opts-space", 1},
55 {
"isc6",
"_isc6_", 0},
56 {
"_rsoo_",
"rsoo-opts", 1},
57 {
"_isc6_",
"vendor-2495", 1},
58 {
"server",
"_server_", 0},
64 {
"subnet-mask",
"I",
"dhcp", 1, 2},
65 {
"time-offset",
"l",
"dhcp", 2, 2},
66 {
"routers",
"Ia",
"dhcp", 3, 2},
67 {
"time-servers",
"Ia",
"dhcp", 4, 2},
68 {
"ien116-name-servers",
"Ia",
"dhcp", 5, 2},
70 {
"domain-name-servers",
"Ia",
"dhcp", 6, 2},
71 {
"log-servers",
"Ia",
"dhcp", 7, 2},
72 {
"cookie-servers",
"Ia",
"dhcp", 8, 2},
73 {
"lpr-servers",
"Ia",
"dhcp", 9, 2},
74 {
"impress-servers",
"Ia",
"dhcp", 10, 2},
75 {
"resource-location-servers",
"Ia",
"dhcp", 11, 2},
76 {
"host-name",
"t",
"dhcp", 12, 2},
77 {
"boot-size",
"S",
"dhcp", 13, 2},
78 {
"merit-dump",
"t",
"dhcp", 14, 2},
79 {
"domain-name",
"t",
"dhcp", 15, 2},
80 {
"swap-server",
"I",
"dhcp", 16, 2},
81 {
"root-path",
"t",
"dhcp", 17, 2},
82 {
"extensions-path",
"t",
"dhcp", 18, 2},
83 {
"ip-forwarding",
"f",
"dhcp", 19, 2},
84 {
"non-local-source-routing",
"f",
"dhcp", 20, 2},
85 {
"policy-filter",
"IIa",
"dhcp", 21, 2},
86 {
"max-dgram-reassembly",
"S",
"dhcp", 22, 2},
87 {
"default-ip-ttl",
"B",
"dhcp", 23, 2},
88 {
"path-mtu-aging-timeout",
"L",
"dhcp", 24, 2},
89 {
"path-mtu-plateau-table",
"Sa",
"dhcp", 25, 2},
90 {
"interface-mtu",
"S",
"dhcp", 26, 2},
91 {
"all-subnets-local",
"f",
"dhcp", 27, 2},
92 {
"broadcast-address",
"I",
"dhcp", 28, 2},
93 {
"perform-mask-discovery",
"f",
"dhcp", 29, 2},
94 {
"mask-supplier",
"f",
"dhcp", 30, 2},
95 {
"router-discovery",
"f",
"dhcp", 31, 2},
96 {
"router-solicitation-address",
"I",
"dhcp", 32, 2},
97 {
"static-routes",
"IIa",
"dhcp", 33, 2},
98 {
"trailer-encapsulation",
"f",
"dhcp", 34, 2},
99 {
"arp-cache-timeout",
"L",
"dhcp", 35, 2},
100 {
"ieee802-3-encapsulation",
"f",
"dhcp", 36, 2},
101 {
"default-tcp-ttl",
"B",
"dhcp", 37, 2},
102 {
"tcp-keepalive-interval",
"L",
"dhcp", 38, 2},
103 {
"tcp-keepalive-garbage",
"f",
"dhcp", 39, 2},
104 {
"nis-domain",
"t",
"dhcp", 40, 2},
105 {
"nis-servers",
"Ia",
"dhcp", 41, 2},
106 {
"ntp-servers",
"Ia",
"dhcp", 42, 2},
107 {
"vendor-encapsulated-options",
"E.",
"dhcp", 43, 2},
108 {
"netbios-name-servers",
"Ia",
"dhcp", 44, 2},
109 {
"netbios-dd-server",
"Ia",
"dhcp", 45, 2},
110 {
"netbios-node-type",
"B",
"dhcp", 46, 2},
111 {
"netbios-scope",
"t",
"dhcp", 47, 2},
112 {
"font-servers",
"Ia",
"dhcp", 48, 2},
113 {
"x-display-manager",
"Ia",
"dhcp", 49, 2},
114 {
"dhcp-requested-address",
"I",
"dhcp", 50, 2},
115 {
"dhcp-lease-time",
"L",
"dhcp", 51, 2},
116 {
"dhcp-option-overload",
"B",
"dhcp", 52, 2},
117 {
"dhcp-message-type",
"B",
"dhcp", 53, 2},
118 {
"dhcp-server-identifier",
"I",
"dhcp", 54, 2},
119 {
"dhcp-parameter-request-list",
"Ba",
"dhcp", 55, 2},
120 {
"dhcp-message",
"t",
"dhcp", 56, 2},
121 {
"dhcp-max-message-size",
"S",
"dhcp", 57, 2},
122 {
"dhcp-renewal-time",
"L",
"dhcp", 58, 2},
123 {
"dhcp-rebinding-time",
"L",
"dhcp", 59, 2},
124 {
"vendor-class-identifier",
"x",
"dhcp", 60, 2},
125 {
"dhcp-client-identifier",
"X",
"dhcp", 61, 2},
126 {
"nwip-domain",
"t",
"dhcp", 62, 2},
128 {
"nwip-suboptions",
"Enwip.",
"dhcp", 63, 2},
129 {
"nisplus-domain",
"t",
"dhcp", 64, 2},
131 {
"nisplus-servers",
"Ia",
"dhcp", 65, 2},
132 {
"tftp-server-name",
"t",
"dhcp", 66, 2},
133 {
"bootfile-name",
"t",
"dhcp", 67, 2},
135 {
"mobile-ip-home-agent",
"Ia",
"dhcp", 68, 2},
136 {
"smtp-server",
"Ia",
"dhcp", 69, 2},
137 {
"pop-server",
"Ia",
"dhcp", 70, 2},
138 {
"nntp-server",
"Ia",
"dhcp", 71, 2},
139 {
"www-server",
"Ia",
"dhcp", 72, 2},
140 {
"finger-server",
"Ia",
"dhcp", 73, 2},
141 {
"irc-server",
"Ia",
"dhcp", 74, 2},
142 {
"streettalk-server",
"Ia",
"dhcp", 75, 2},
143 {
"streettalk-directory-assistance-server",
"Ia",
145 {
"user-class",
"tY",
"dhcp", 77, 2},
146 {
"slp-directory-agent",
"fIa",
"dhcp", 78, 2},
147 {
"slp-service-scope",
"fto",
"dhcp", 79, 2},
149 {
"fqdn",
"Efqdn.",
"dhcp", 81, 2},
150 {
"relay-agent-information",
"Eagent.",
"dhcp", 82, 2},
154 {
"nds-servers",
"Ia",
"dhcp", 85, 2},
155 {
"nds-tree-name",
"t",
"dhcp", 86, 2},
156 {
"nds-context",
"t",
"dhcp", 87, 2},
157 {
"bcms-controller-names",
"D",
"dhcp", 88, 2},
158 {
"bcms-controller-address",
"Ia",
"dhcp", 89, 2},
159 {
"authenticate",
"X",
"dhcp", 90, 1},
161 {
"client-last-transaction-time",
"L",
"dhcp", 91, 2},
162 {
"associated-ip",
"Ia",
"dhcp", 92, 2},
163 {
"pxe-system-type",
"Sa",
"dhcp", 93, 2},
165 {
"pxe-interface-id",
"BBB",
"dhcp", 94, 2},
167 {
"pxe-client-id",
"BX",
"dhcp", 97, 2},
169 {
"uap-servers",
"t",
"dhcp", 98, 2},
170 {
"geoconf-civic",
"X",
"dhcp", 99, 2},
171 {
"pcode",
"t",
"dhcp", 100, 2},
172 {
"tcode",
"t",
"dhcp", 101, 2},
173 {
"v6-only-preferred",
"L",
"dhcp", 108, 2},
174 {
"netinfo-server-address",
"Ia",
"dhcp", 112, 2},
175 {
"netinfo-server-tag",
"t",
"dhcp", 113, 2},
176 {
"default-url",
"t",
"dhcp", 114, 2},
177 {
"auto-config",
"B",
"dhcp", 116, 2},
178 {
"name-service-search",
"Sa",
"dhcp", 117, 2},
179 {
"subnet-selection",
"I",
"dhcp", 118, 2},
180 {
"domain-search",
"Dc",
"dhcp", 119, 2},
181 {
"vivco",
"Evendor-class.",
"dhcp", 124, 2},
183 {
"vivso",
"Evendor.",
"dhcp", 125, 2},
185 {
"pana-agent",
"Ia",
"dhcp", 136, 2},
186 {
"v4-lost",
"d",
"dhcp", 137, 2},
187 {
"capwap-ac-v4",
"Ia",
"dhcp", 138, 2},
188 {
"sip-ua-cs-domains",
"Dc",
"dhcp", 141, 2},
189 {
"ipv4-address-andsf",
"Ia",
"dhcp", 142, 0},
191 {
"rdnss-selection",
"BIID",
"dhcp", 146, 2},
192 {
"tftp-server-address",
"Ia",
"dhcp", 150, 0},
194 {
"v4-portparams",
"BBS",
"dhcp", 159, 2},
195 {
"v4-captive-portal",
"t",
"dhcp", 160, 2},
196 {
"option-6rd",
"BB6Ia",
"dhcp", 212, 2},
197 {
"v4-access-domain",
"d",
"dhcp", 213, 2},
198 { NULL, NULL, NULL, 0, 0 }
203 {
"client-id",
"X",
"dhcp6", 1, 2},
205 {
"server-id",
"X",
"dhcp6", 2, 2},
207 {
"ia-na",
"X",
"dhcp6", 3, 2},
208 {
"ia-ta",
"X",
"dhcp6", 4, 2},
209 {
"ia-addr",
"X",
"dhcp6", 5, 2},
211 {
"oro",
"Sa",
"dhcp6", 6, 2},
212 {
"preference",
"B",
"dhcp6", 7, 2},
213 {
"elapsed-time",
"S",
"dhcp6", 8, 2},
214 {
"relay-msg",
"X",
"dhcp6", 9, 2},
216 {
"auth",
"X",
"dhcp6", 11, 1},
218 {
"unicast",
"6",
"dhcp6", 12, 2},
219 {
"status-code",
"Nstatus-codes.to",
"dhcp6", 13, 2},
220 {
"rapid-commit",
"Z",
"dhcp6", 14, 2},
221 {
"user-class",
"X",
"dhcp6", 15, 1},
223 {
"vendor-class",
"LX",
"dhcp6", 16, 1},
225 {
"vendor-opts",
"Evsio.",
"dhcp6", 17, 2},
226 {
"interface-id",
"X",
"dhcp6", 18, 2},
227 {
"reconf-msg",
"Ndhcpv6-messages.",
"dhcp6", 19, 2},
228 {
"reconf-accept",
"Z",
"dhcp6", 20, 2},
229 {
"sip-servers-names",
"D",
"dhcp6", 21, 2},
231 {
"sip-servers-addresses",
"6a",
"dhcp6", 22, 2},
233 {
"name-servers",
"6a",
"dhcp6", 23, 2},
235 {
"domain-search",
"D",
"dhcp6", 24, 2},
236 {
"ia-pd",
"X",
"dhcp6", 25, 2},
237 {
"ia-prefix",
"X",
"dhcp6", 26, 2},
239 {
"nis-servers",
"6a",
"dhcp6", 27, 2},
240 {
"nisp-servers",
"6a",
"dhcp6", 28, 2},
241 {
"nis-domain-name",
"D",
"dhcp6", 29, 2},
242 {
"nisp-domain-name",
"D",
"dhcp6", 30, 2},
243 {
"sntp-servers",
"6a",
"dhcp6", 31, 2},
244 {
"info-refresh-time",
"T",
"dhcp6", 32, 2},
246 {
"bcms-server-d",
"D",
"dhcp6", 33, 2},
248 {
"bcms-server-a",
"6a",
"dhcp6", 34, 2},
251 {
"geoconf-civic",
"X",
"dhcp6", 36, 2},
252 {
"remote-id",
"X",
"dhcp6", 37, 2},
253 {
"subscriber-id",
"X",
"dhcp6", 38, 2},
254 {
"fqdn",
"Efqdn6-if-you-see-me-its-a-bug-bug-bug.",
257 {
"pana-agent",
"6a",
"dhcp6", 40, 2},
258 {
"new-posix-timezone",
"t",
"dhcp6", 41, 2},
259 {
"new-tzdb-timezone",
"t",
"dhcp6", 42, 2},
260 {
"ero",
"Sa",
"dhcp6", 43, 2},
261 {
"lq-query",
"X",
"dhcp6", 44, 2},
262 {
"client-data",
"X",
"dhcp6", 45, 2},
263 {
"clt-time",
"L",
"dhcp6", 46, 2},
264 {
"lq-relay-data",
"6X",
"dhcp6", 47, 2},
265 {
"lq-client-link",
"6a",
"dhcp6", 48, 2},
266 {
"v6-lost",
"d",
"dhcp6", 51, 2},
267 {
"capwap-ac-v6",
"6a",
"dhcp6", 52, 2},
268 {
"relay-id",
"X",
"dhcp6", 53, 2},
269 {
"v6-access-domain",
"d",
"dhcp6", 57, 2},
270 {
"sip-ua-cs-list",
"D",
"dhcp6", 58, 2},
271 {
"bootfile-url",
"t",
"dhcp6", 59, 2},
272 {
"bootfile-param",
"X",
"dhcp6", 60, 2},
273 {
"client-arch-type",
"Sa",
"dhcp6", 61, 2},
274 {
"nii",
"BBB",
"dhcp6", 62, 2},
275 {
"aftr-name",
"d",
"dhcp6", 64, 2},
276 {
"erp-local-domain-name",
"d",
"dhcp6", 65, 2},
277 {
"rsoo",
"Ersoo.",
"dhcp6", 66, 1},
279 {
"pd-exclude",
"X",
"dhcp6", 67, 1},
281 {
"rdnss-selection",
"6BD",
"dhcp6", 74, 2},
282 {
"client-linklayer-addr",
"X",
"dhcp6", 79, 2},
283 {
"link-address",
"6",
"dhcp6", 80, 2},
284 {
"solmax-rt",
"L",
"dhcp6", 82, 2},
285 {
"inf-max-rt",
"L",
"dhcp6", 83, 2},
286 {
"dhcpv4-msg",
"X",
"dhcp6", 87, 2},
288 {
"dhcp4-o-dhcp6-server",
"6a",
"dhcp6", 88, 2},
290 {
"v6-captive-portal",
"t",
"dhcp6", 103, 2},
291 {
"relay-source-port",
"S",
"dhcp6", 135, 2},
292 {
"ipv6-address-andsf",
"6a",
"dhcp6", 143, 2},
293 { NULL, NULL, NULL, 0, 0 }
299 {
"circuit-id",
"X",
"agent", 1, 0},
300 {
"remote-id",
"X",
"agent", 2, 0},
301 {
"agent-id",
"I",
"agent", 3, 0},
302 {
"DOCSIS-device-class",
"L",
"agent", 4, 0},
303 {
"link-selection",
"I",
"agent", 5, 0},
304 {
"relay-port",
"Z",
"agent", 19, 0},
305 { NULL, NULL, NULL, 0, 0 }
310 {
"default-lease-time",
"T",
"server", 1, 3},
311 {
"max-lease-time",
"T",
"server", 2, 3},
312 {
"min-lease-time",
"T",
"server", 3, 3},
313 {
"dynamic-bootp-lease-cutoff",
"T",
"server", 4, 0},
314 {
"dynamic-bootp-lease-length",
"L",
"server", 5, 0},
315 {
"boot-unknown-clients",
"f",
"server", 6, 0},
316 {
"dynamic-bootp",
"f",
"server", 7, 0},
317 {
"allow-bootp",
"f",
"server", 8, 0},
318 {
"allow-booting",
"f",
"server", 9, 0},
319 {
"one-lease-per-client",
"f",
"server", 10, 0},
320 {
"get-lease-hostnames",
"f",
"server", 11, 0},
321 {
"use-host-decl-names",
"f",
"server", 12, 0},
322 {
"use-lease-addr-for-default-route",
"f",
324 {
"min-secs",
"B",
"server", 14, 0},
325 {
"filename",
"t",
"server", 15, 3},
326 {
"server-name",
"t",
"server", 16, 3},
327 {
"next-server",
"I",
"server", 17, 3},
328 {
"authoritative",
"f",
"server", 18, 3},
329 {
"vendor-option-space",
"U",
"server", 19, 3},
330 {
"always-reply-rfc1048",
"f",
"server", 20, 0},
331 {
"site-option-space",
"X",
"server", 21, 3},
332 {
"always-broadcast",
"f",
"server", 22, 0},
333 {
"ddns-domainname",
"t",
"server", 23, 3},
334 {
"ddns-hostname",
"t",
"server", 24, 0},
335 {
"ddns-rev-domainname",
"t",
"server", 25, 0},
336 {
"lease-file-name",
"t",
"server", 26, 0},
337 {
"pid-file-name",
"t",
"server", 27, 0},
338 {
"duplicates",
"f",
"server", 28, 0},
339 {
"declines",
"f",
"server", 29, 0},
340 {
"ddns-updates",
"f",
"server", 30, 3},
341 {
"omapi-port",
"S",
"server", 31, 0},
342 {
"local-port",
"S",
"server", 32, 0},
343 {
"limited-broadcast-address",
"I",
"server", 33, 0},
344 {
"remote-port",
"S",
"server", 34, 0},
345 {
"local-address",
"I",
"server", 35, 0},
346 {
"omapi-key",
"d",
"server", 36, 0},
347 {
"stash-agent-options",
"f",
"server", 37, 0},
348 {
"ddns-ttl",
"T",
"server", 38, 0},
349 {
"ddns-update-style",
"Nddns-styles.",
"server", 39, 3},
350 {
"client-updates",
"f",
"server", 40, 0},
351 {
"update-optimization",
"f",
"server", 41, 0},
352 {
"ping-check",
"f",
"server", 42, 0},
353 {
"update-static-leases",
"f",
"server", 43, 0},
354 {
"log-facility",
"Nsyslog-facilities.",
356 {
"do-forward-updates",
"f",
"server", 45, 0},
357 {
"ping-timeout",
"T",
"server", 46, 0},
358 {
"infinite-is-reserved",
"f",
"server", 47, 0},
359 {
"update-conflict-detection",
"f",
"server", 48, 0},
360 {
"leasequery",
"f",
"server", 49, 0},
361 {
"adaptive-lease-time-threshold",
"B",
"server", 50, 0},
362 {
"do-reverse-updates",
"f",
"server", 51, 0},
363 {
"fqdn-reply",
"f",
"server", 52, 0},
364 {
"preferred-lifetime",
"T",
"server", 53, 3},
365 {
"dhcpv6-lease-file-name",
"t",
"server", 54, 0},
366 {
"dhcpv6-pid-file-name",
"t",
"server", 55, 0},
367 {
"limit-addrs-per-ia",
"L",
"server", 56, 0},
368 {
"limit-prefs-per-ia",
"L",
"server", 57, 0},
369 {
"delayed-ack",
"S",
"server", 58, 0},
370 {
"max-ack-delay",
"L",
"server", 59, 0},
372 {
"dhcp-cache-threshold",
"B",
"server", 78, 0},
373 {
"dont-use-fsync",
"f",
"server", 79, 0},
374 {
"ddns-local-address4",
"I",
"server", 80, 0},
375 {
"ddns-local-address6",
"6",
"server", 81, 0},
376 {
"ignore-client-uids",
"f",
"server", 82, 3},
377 {
"log-threshold-low",
"B",
"server", 83, 0},
378 {
"log-threshold-high",
"B",
"server", 84, 0},
379 {
"echo-client-id",
"f",
"server", 85, 3},
380 {
"server-id-check",
"f",
"server", 86, 0},
381 {
"prefix-length-mode",
"Nprefix_length_modes.",
383 {
"dhcpv6-set-tee-times",
"f",
"server", 88, 0},
384 {
"abandon-lease-time",
"T",
"server", 89, 0},
385 {
"use-eui-64",
"f",
"server", 90, 0},
386 {
"check-secs-byte-order",
"f",
"server", 91, 0},
387 {
"persist-eui-64-leases",
"f",
"server", 92, 0},
388 {
"ddns-dual-stack-mixed-mode",
"f",
"server", 93, 0},
389 {
"ddns-guard-id-must-match",
"f",
"server", 94, 0},
390 {
"ddns-other-guard-is-dynamic",
"f",
"server", 95, 0},
391 {
"release-on-roam",
"f",
"server", 96, 0},
392 {
"local-address6",
"6",
"server", 97, 0},
393 {
"bind-local-address6",
"f",
"server", 98, 0},
394 {
"ping-cltt-secs",
"T",
"server", 99, 0},
395 {
"ping-timeout-ms",
"T",
"server", 100, 0},
396 { NULL, NULL, NULL, 0, 0 }
408 for (def = space_defs; def->
name != NULL; def++) {
410 assert(
space != NULL);
534 for (def =
agents; def->
name != NULL; def++) {
667 scode =
mapGet(src,
"code");
669 assert((scode != NULL) || (
name != NULL));
677 mapSet(src, scode,
"code");
681 for (i = 0; i <
listSize(dst); i++) {
690 code =
mapGet(od,
"code");
692 name =
mapGet(od,
"name");
693 assert(name != NULL);
713 for (i = 0; i <
listSize(src); i++) {
722 static struct comments comments;
797 "host reservation instead");
803 "obsolete (so not supported) feature");
831 " and holds address for "
832 "decline-probation-period");
846 "should be used instead");
852 "is not (yet?) supported");
860 "(so not supported) feature");
868 "to specify an interface address");
888 "supported feature");
928 "KEA_LOGGER_DESTINATION environment "
962 "server using a dedicated config");
970 "the leasequery protocol");
996 "is an internal ISC DHCP feature");
1002 "is an internal ISC DHCP feature");
1008 "is not (yet?) supported");
1017 "is not (yet?) supported");
1019 goto limit_resources;
1029 "is not (yet?) supported");
1037 "ISC DHCP feature");
1090 "transitional (so not supported) "
1094 "preferred-lifetime");
1102 "richer) expired-lease-processing "
1103 "and decline-probation-period");
1123 "to specify an interface address");
1145 return "known (unknown)";
1147 return "unknown (known)";
1149 return "known (known)";
1151 return "dynamic (dynamic)";
1153 return "??? (" "???" ")";
void listPush(struct element *l, struct element *e)
struct comment * createComment(const char *line)
isc_boolean_t eqString(const struct string *s, const struct string *o)
struct element * copy(struct element *e)
struct element * listGet(struct element *l, int i)
struct string * stringValue(struct element *e)
struct element * createInt(int64_t i)
void mapSet(struct element *m, struct element *e, const char *k)
size_t listSize(const struct element *l)
struct element * mapGet(struct element *m, const char *k)
int64_t intValue(const struct element *e)
#define TAILQ_INSERT_TAIL(head, elm)
#define TAILQ_FOREACH(var, head)
#define TAILQ_HEAD(name, type)
int ddns_updates(struct packet *, struct lease *, struct lease *, struct iasubopt *, struct iasubopt *, struct option_state *)
void merge_option_data(struct element *src, struct element *dst)
void push_space(struct space *space)
void add_option_data(struct element *src, struct element *dst)
struct option_def configs[]
SERVER.
struct space * space_lookup(const char *name)
struct option * option_lookup_code(const char *space, unsigned code)
struct option_def agents[]
DHCPv4 AGENT.
struct option_def options4[]
DHCPv4.
struct comments * get_config_comments(unsigned code)
struct option * option_lookup_name(const char *space, const char *name)
struct option_def options6[]
DHCPv6.
struct option * kea_lookup_name(const char *space, const char *name)
void push_option(struct option *option)
const char * display_status(enum option_status status)
enum option_status status
enum option_status status
const struct space * space
enum option_status status
enum option_status status