Kea Configuration File Syntax (BNF)
Kea consists of several daemons, each with its own configuration syntax. The following sections provide a complete syntax of all possible parameters, written as Backus-Naur Form (BNF). See wikipedia article on BNF for background and explanation.
BNF Grammar for DHCPv4
Grammar generated on 2022-07-21 11:07. See Chapter The DHCPv4 Server for an explanation.
1 Grammar
2
3 $accept ::= start EOF
4
5 start ::= TOPLEVEL_JSON sub_json
6
7 start ::= TOPLEVEL_DHCP4 syntax_map
8
9 start ::= SUB_DHCP4 sub_dhcp4
10
11 start ::= SUB_INTERFACES4 sub_interfaces4
12
13 start ::= SUB_SUBNET4 sub_subnet4
14
15 start ::= SUB_POOL4 sub_pool4
16
17 start ::= SUB_RESERVATION sub_reservation
18
19 start ::= SUB_OPTION_DEFS sub_option_def_list
20
21 start ::= SUB_OPTION_DEF sub_option_def
22
23 start ::= SUB_OPTION_DATA sub_option_data
24
25 start ::= SUB_HOOKS_LIBRARY sub_hooks_library
26
27 start ::= SUB_DHCP_DDNS sub_dhcp_ddns
28
29 start ::= SUB_CONFIG_CONTROL sub_config_control
30
31 value ::= INTEGER
32 | FLOAT
33 | BOOLEAN
34 | STRING
35 | NULL
36 | map2
37 | list_generic
38
39 sub_json ::= value
40
41 map2 ::= "{" map_content "}"
42
43 map_value ::= map2
44
45 map_content ::=
46 | not_empty_map
47
48 not_empty_map ::= STRING ":" value
49 | not_empty_map "," STRING ":" value
50
51 list_generic ::= "[" list_content "]"
52
53 list_content ::=
54 | not_empty_list
55
56 not_empty_list ::= value
57 | not_empty_list "," value
58
59 list_strings ::= "[" list_strings_content "]"
60
61 list_strings_content ::=
62 | not_empty_list_strings
63
64 not_empty_list_strings ::= STRING
65 | not_empty_list_strings "," STRING
66
67 unknown_map_entry ::= STRING ":"
68
69 syntax_map ::= "{" global_object "}"
70
71 global_object ::= "Dhcp4" ":" "{" global_params "}"
72
73 sub_dhcp4 ::= "{" global_params "}"
74
75 global_params ::= global_param
76 | global_params "," global_param
77
78 global_param ::= valid_lifetime
79 | min_valid_lifetime
80 | max_valid_lifetime
81 | renew_timer
82 | rebind_timer
83 | decline_probation_period
84 | subnet4_list
85 | shared_networks
86 | interfaces_config
87 | lease_database
88 | hosts_database
89 | hosts_databases
90 | host_reservation_identifiers
91 | client_classes
92 | option_def_list
93 | option_data_list
94 | hooks_libraries
95 | expired_leases_processing
96 | dhcp4o6_port
97 | control_socket
98 | dhcp_queue_control
99 | dhcp_ddns
100 | echo_client_id
101 | match_client_id
102 | authoritative
103 | next_server
104 | server_hostname
105 | boot_file_name
106 | user_context
107 | comment
108 | sanity_checks
109 | reservations
110 | config_control
111 | server_tag
112 | reservation_mode
113 | reservations_global
114 | reservations_in_subnet
115 | reservations_out_of_pool
116 | calculate_tee_times
117 | t1_percent
118 | t2_percent
119 | cache_threshold
120 | cache_max_age
121 | loggers
122 | hostname_char_set
123 | hostname_char_replacement
124 | ddns_send_updates
125 | ddns_override_no_update
126 | ddns_override_client_update
127 | ddns_replace_client_name
128 | ddns_generated_prefix
129 | ddns_qualifying_suffix
130 | ddns_update_on_renew
131 | ddns_use_conflict_resolution
132 | store_extended_info
133 | statistic_default_sample_count
134 | statistic_default_sample_age
135 | dhcp_multi_threading
136 | ip_reservations_unique
137 | compatibility
138 | parked_packet_limit
139 | unknown_map_entry
140
141 valid_lifetime ::= "valid-lifetime" ":" INTEGER
142
143 min_valid_lifetime ::= "min-valid-lifetime" ":" INTEGER
144
145 max_valid_lifetime ::= "max-valid-lifetime" ":" INTEGER
146
147 renew_timer ::= "renew-timer" ":" INTEGER
148
149 rebind_timer ::= "rebind-timer" ":" INTEGER
150
151 calculate_tee_times ::= "calculate-tee-times" ":" BOOLEAN
152
153 t1_percent ::= "t1-percent" ":" FLOAT
154
155 t2_percent ::= "t2-percent" ":" FLOAT
156
157 cache_threshold ::= "cache-threshold" ":" FLOAT
158
159 cache_max_age ::= "cache-max-age" ":" INTEGER
160
161 decline_probation_period ::= "decline-probation-period" ":" INTEGER
162
163 server_tag ::= "server-tag" ":" STRING
164
165 parked_packet_limit ::= "parked-packet-limit" ":" INTEGER
166
167 echo_client_id ::= "echo-client-id" ":" BOOLEAN
168
169 match_client_id ::= "match-client-id" ":" BOOLEAN
170
171 authoritative ::= "authoritative" ":" BOOLEAN
172
173 ddns_send_updates ::= "ddns-send-updates" ":" BOOLEAN
174
175 ddns_override_no_update ::= "ddns-override-no-update" ":" BOOLEAN
176
177 ddns_override_client_update ::= "ddns-override-client-update" ":" BOOLEAN
178
179 ddns_replace_client_name ::= "ddns-replace-client-name" ":" ddns_replace_client_name_value
180
181 ddns_replace_client_name_value ::= "when-present"
182 | "never"
183 | "always"
184 | "when-not-present"
185 | BOOLEAN
186
187 ddns_generated_prefix ::= "ddns-generated-prefix" ":" STRING
188
189 ddns_qualifying_suffix ::= "ddns-qualifying-suffix" ":" STRING
190
191 ddns_update_on_renew ::= "ddns-update-on-renew" ":" BOOLEAN
192
193 ddns_use_conflict_resolution ::= "ddns-use-conflict-resolution" ":" BOOLEAN
194
195 hostname_char_set ::= "hostname-char-set" ":" STRING
196
197 hostname_char_replacement ::= "hostname-char-replacement" ":" STRING
198
199 store_extended_info ::= "store-extended-info" ":" BOOLEAN
200
201 statistic_default_sample_count ::= "statistic-default-sample-count" ":" INTEGER
202
203 statistic_default_sample_age ::= "statistic-default-sample-age" ":" INTEGER
204
205 ip_reservations_unique ::= "ip-reservations-unique" ":" BOOLEAN
206
207 interfaces_config ::= "interfaces-config" ":" "{" interfaces_config_params "}"
208
209 interfaces_config_params ::= interfaces_config_param
210 | interfaces_config_params "," interfaces_config_param
211
212 interfaces_config_param ::= interfaces_list
213 | dhcp_socket_type
214 | outbound_interface
215 | re_detect
216 | user_context
217 | comment
218 | unknown_map_entry
219
220 sub_interfaces4 ::= "{" interfaces_config_params "}"
221
222 interfaces_list ::= "interfaces" ":" list_strings
223
224 dhcp_socket_type ::= "dhcp-socket-type" ":" socket_type
225
226 socket_type ::= "raw"
227 | "udp"
228
229 outbound_interface ::= "outbound-interface" ":" outbound_interface_value
230
231 outbound_interface_value ::= "same-as-inbound"
232 | "use-routing"
233
234 re_detect ::= "re-detect" ":" BOOLEAN
235
236 lease_database ::= "lease-database" ":" "{" database_map_params "}"
237
238 sanity_checks ::= "sanity-checks" ":" "{" sanity_checks_params "}"
239
240 sanity_checks_params ::= sanity_checks_param
241 | sanity_checks_params "," sanity_checks_param
242
243 sanity_checks_param ::= lease_checks
244
245 lease_checks ::= "lease-checks" ":" STRING
246
247 hosts_database ::= "hosts-database" ":" "{" database_map_params "}"
248
249 hosts_databases ::= "hosts-databases" ":" "[" database_list "]"
250
251 database_list ::=
252 | not_empty_database_list
253
254 not_empty_database_list ::= database
255 | not_empty_database_list "," database
256
257 database ::= "{" database_map_params "}"
258
259 database_map_params ::= database_map_param
260 | database_map_params "," database_map_param
261
262 database_map_param ::= database_type
263 | user
264 | password
265 | host
266 | port
267 | name
268 | persist
269 | lfc_interval
270 | readonly
271 | connect_timeout
272 | contact_points
273 | max_reconnect_tries
274 | reconnect_wait_time
275 | on_fail
276 | request_timeout
277 | tcp_keepalive
278 | tcp_nodelay
279 | keyspace
280 | consistency
281 | serial_consistency
282 | max_row_errors
283 | unknown_map_entry
284
285 database_type ::= "type" ":" db_type
286
287 db_type ::= "memfile"
288 | "mysql"
289 | "postgresql"
290 | "cql"
291
292 user ::= "user" ":" STRING
293
294 password ::= "password" ":" STRING
295
296 host ::= "host" ":" STRING
297
298 port ::= "port" ":" INTEGER
299
300 name ::= "name" ":" STRING
301
302 persist ::= "persist" ":" BOOLEAN
303
304 lfc_interval ::= "lfc-interval" ":" INTEGER
305
306 readonly ::= "readonly" ":" BOOLEAN
307
308 connect_timeout ::= "connect-timeout" ":" INTEGER
309
310 request_timeout ::= "request-timeout" ":" INTEGER
311
312 tcp_keepalive ::= "tcp-keepalive" ":" INTEGER
313
314 tcp_nodelay ::= "tcp-nodelay" ":" BOOLEAN
315
316 contact_points ::= "contact-points" ":" STRING
317
318 keyspace ::= "keyspace" ":" STRING
319
320 consistency ::= "consistency" ":" STRING
321
322 serial_consistency ::= "serial-consistency" ":" STRING
323
324 max_reconnect_tries ::= "max-reconnect-tries" ":" INTEGER
325
326 reconnect_wait_time ::= "reconnect-wait-time" ":" INTEGER
327
328 on_fail ::= "on-fail" ":" on_fail_mode
329
330 on_fail_mode ::= "stop-retry-exit"
331 | "serve-retry-exit"
332 | "serve-retry-continue"
333
334 max_row_errors ::= "max-row-errors" ":" INTEGER
335
336 host_reservation_identifiers ::= "host-reservation-identifiers" ":" "[" host_reservation_identifiers_list "]"
337
338 host_reservation_identifiers_list ::= host_reservation_identifier
339 | host_reservation_identifiers_list "," host_reservation_identifier
340
341 host_reservation_identifier ::= duid_id
342 | hw_address_id
343 | circuit_id
344 | client_id
345 | flex_id
346
347 duid_id ::= "duid"
348
349 hw_address_id ::= "hw-address"
350
351 circuit_id ::= "circuit-id"
352
353 client_id ::= "client-id"
354
355 flex_id ::= "flex-id"
356
357 dhcp_multi_threading ::= "multi-threading" ":" "{" multi_threading_params "}"
358
359 multi_threading_params ::= multi_threading_param
360 | multi_threading_params "," multi_threading_param
361
362 multi_threading_param ::= enable_multi_threading
363 | thread_pool_size
364 | packet_queue_size
365 | user_context
366 | comment
367 | unknown_map_entry
368
369 enable_multi_threading ::= "enable-multi-threading" ":" BOOLEAN
370
371 thread_pool_size ::= "thread-pool-size" ":" INTEGER
372
373 packet_queue_size ::= "packet-queue-size" ":" INTEGER
374
375 hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
376
377 hooks_libraries_list ::=
378 | not_empty_hooks_libraries_list
379
380 not_empty_hooks_libraries_list ::= hooks_library
381 | not_empty_hooks_libraries_list "," hooks_library
382
383 hooks_library ::= "{" hooks_params "}"
384
385 sub_hooks_library ::= "{" hooks_params "}"
386
387 hooks_params ::= hooks_param
388 | hooks_params "," hooks_param
389 | unknown_map_entry
390
391 hooks_param ::= library
392 | parameters
393
394 library ::= "library" ":" STRING
395
396 parameters ::= "parameters" ":" map_value
397
398 expired_leases_processing ::= "expired-leases-processing" ":" "{" expired_leases_params "}"
399
400 expired_leases_params ::= expired_leases_param
401 | expired_leases_params "," expired_leases_param
402
403 expired_leases_param ::= reclaim_timer_wait_time
404 | flush_reclaimed_timer_wait_time
405 | hold_reclaimed_time
406 | max_reclaim_leases
407 | max_reclaim_time
408 | unwarned_reclaim_cycles
409
410 reclaim_timer_wait_time ::= "reclaim-timer-wait-time" ":" INTEGER
411
412 flush_reclaimed_timer_wait_time ::= "flush-reclaimed-timer-wait-time" ":" INTEGER
413
414 hold_reclaimed_time ::= "hold-reclaimed-time" ":" INTEGER
415
416 max_reclaim_leases ::= "max-reclaim-leases" ":" INTEGER
417
418 max_reclaim_time ::= "max-reclaim-time" ":" INTEGER
419
420 unwarned_reclaim_cycles ::= "unwarned-reclaim-cycles" ":" INTEGER
421
422 subnet4_list ::= "subnet4" ":" "[" subnet4_list_content "]"
423
424 subnet4_list_content ::=
425 | not_empty_subnet4_list
426
427 not_empty_subnet4_list ::= subnet4
428 | not_empty_subnet4_list "," subnet4
429
430 subnet4 ::= "{" subnet4_params "}"
431
432 sub_subnet4 ::= "{" subnet4_params "}"
433
434 subnet4_params ::= subnet4_param
435 | subnet4_params "," subnet4_param
436
437 subnet4_param ::= valid_lifetime
438 | min_valid_lifetime
439 | max_valid_lifetime
440 | renew_timer
441 | rebind_timer
442 | option_data_list
443 | pools_list
444 | subnet
445 | interface
446 | id
447 | client_class
448 | require_client_classes
449 | reservations
450 | reservation_mode
451 | reservations_global
452 | reservations_in_subnet
453 | reservations_out_of_pool
454 | relay
455 | match_client_id
456 | authoritative
457 | next_server
458 | server_hostname
459 | boot_file_name
460 | subnet_4o6_interface
461 | subnet_4o6_interface_id
462 | subnet_4o6_subnet
463 | user_context
464 | comment
465 | calculate_tee_times
466 | t1_percent
467 | t2_percent
468 | cache_threshold
469 | cache_max_age
470 | ddns_send_updates
471 | ddns_override_no_update
472 | ddns_override_client_update
473 | ddns_replace_client_name
474 | ddns_generated_prefix
475 | ddns_qualifying_suffix
476 | ddns_update_on_renew
477 | ddns_use_conflict_resolution
478 | hostname_char_set
479 | hostname_char_replacement
480 | store_extended_info
481 | unknown_map_entry
482
483 subnet ::= "subnet" ":" STRING
484
485 subnet_4o6_interface ::= "4o6-interface" ":" STRING
486
487 subnet_4o6_interface_id ::= "4o6-interface-id" ":" STRING
488
489 subnet_4o6_subnet ::= "4o6-subnet" ":" STRING
490
491 interface ::= "interface" ":" STRING
492
493 client_class ::= "client-class" ":" STRING
494
495 require_client_classes ::= "require-client-classes" ":" list_strings
496
497 reservations_global ::= "reservations-global" ":" BOOLEAN
498
499 reservations_in_subnet ::= "reservations-in-subnet" ":" BOOLEAN
500
501 reservations_out_of_pool ::= "reservations-out-of-pool" ":" BOOLEAN
502
503 reservation_mode ::= "reservation-mode" ":" hr_mode
504
505 hr_mode ::= "disabled"
506 | "out-of-pool"
507 | "global"
508 | "all"
509
510 id ::= "id" ":" INTEGER
511
512 shared_networks ::= "shared-networks" ":" "[" shared_networks_content "]"
513
514 shared_networks_content ::=
515 | shared_networks_list
516
517 shared_networks_list ::= shared_network
518 | shared_networks_list "," shared_network
519
520 shared_network ::= "{" shared_network_params "}"
521
522 shared_network_params ::= shared_network_param
523 | shared_network_params "," shared_network_param
524
525 shared_network_param ::= name
526 | subnet4_list
527 | interface
528 | renew_timer
529 | rebind_timer
530 | option_data_list
531 | match_client_id
532 | authoritative
533 | next_server
534 | server_hostname
535 | boot_file_name
536 | relay
537 | reservation_mode
538 | reservations_global
539 | reservations_in_subnet
540 | reservations_out_of_pool
541 | client_class
542 | require_client_classes
543 | valid_lifetime
544 | min_valid_lifetime
545 | max_valid_lifetime
546 | user_context
547 | comment
548 | calculate_tee_times
549 | t1_percent
550 | t2_percent
551 | cache_threshold
552 | cache_max_age
553 | ddns_send_updates
554 | ddns_override_no_update
555 | ddns_override_client_update
556 | ddns_replace_client_name
557 | ddns_generated_prefix
558 | ddns_qualifying_suffix
559 | ddns_update_on_renew
560 | ddns_use_conflict_resolution
561 | hostname_char_set
562 | hostname_char_replacement
563 | store_extended_info
564 | unknown_map_entry
565
566 option_def_list ::= "option-def" ":" "[" option_def_list_content "]"
567
568 sub_option_def_list ::= "{" option_def_list "}"
569
570 option_def_list_content ::=
571 | not_empty_option_def_list
572
573 not_empty_option_def_list ::= option_def_entry
574 | not_empty_option_def_list "," option_def_entry
575
576 option_def_entry ::= "{" option_def_params "}"
577
578 sub_option_def ::= "{" option_def_params "}"
579
580 option_def_params ::=
581 | not_empty_option_def_params
582
583 not_empty_option_def_params ::= option_def_param
584 | not_empty_option_def_params "," option_def_param
585
586 option_def_param ::= option_def_name
587 | option_def_code
588 | option_def_type
589 | option_def_record_types
590 | option_def_space
591 | option_def_encapsulate
592 | option_def_array
593 | user_context
594 | comment
595 | unknown_map_entry
596
597 option_def_name ::= name
598
599 code ::= "code" ":" INTEGER
600
601 option_def_code ::= code
602
603 option_def_type ::= "type" ":" STRING
604
605 option_def_record_types ::= "record-types" ":" STRING
606
607 space ::= "space" ":" STRING
608
609 option_def_space ::= space
610
611 option_def_encapsulate ::= "encapsulate" ":" STRING
612
613 option_def_array ::= "array" ":" BOOLEAN
614
615 option_data_list ::= "option-data" ":" "[" option_data_list_content "]"
616
617 option_data_list_content ::=
618 | not_empty_option_data_list
619
620 not_empty_option_data_list ::= option_data_entry
621 | not_empty_option_data_list "," option_data_entry
622
623 option_data_entry ::= "{" option_data_params "}"
624
625 sub_option_data ::= "{" option_data_params "}"
626
627 option_data_params ::=
628 | not_empty_option_data_params
629
630 not_empty_option_data_params ::= option_data_param
631 | not_empty_option_data_params "," option_data_param
632
633 option_data_param ::= option_data_name
634 | option_data_data
635 | option_data_code
636 | option_data_space
637 | option_data_csv_format
638 | option_data_always_send
639 | user_context
640 | comment
641 | unknown_map_entry
642
643 option_data_name ::= name
644
645 option_data_data ::= "data" ":" STRING
646
647 option_data_code ::= code
648
649 option_data_space ::= space
650
651 option_data_csv_format ::= "csv-format" ":" BOOLEAN
652
653 option_data_always_send ::= "always-send" ":" BOOLEAN
654
655 pools_list ::= "pools" ":" "[" pools_list_content "]"
656
657 pools_list_content ::=
658 | not_empty_pools_list
659
660 not_empty_pools_list ::= pool_list_entry
661 | not_empty_pools_list "," pool_list_entry
662
663 pool_list_entry ::= "{" pool_params "}"
664
665 sub_pool4 ::= "{" pool_params "}"
666
667 pool_params ::= pool_param
668 | pool_params "," pool_param
669
670 pool_param ::= pool_entry
671 | option_data_list
672 | client_class
673 | require_client_classes
674 | user_context
675 | comment
676 | unknown_map_entry
677
678 pool_entry ::= "pool" ":" STRING
679
680 user_context ::= "user-context" ":" map_value
681
682 comment ::= "comment" ":" STRING
683
684 reservations ::= "reservations" ":" "[" reservations_list "]"
685
686 reservations_list ::=
687 | not_empty_reservations_list
688
689 not_empty_reservations_list ::= reservation
690 | not_empty_reservations_list "," reservation
691
692 reservation ::= "{" reservation_params "}"
693
694 sub_reservation ::= "{" reservation_params "}"
695
696 reservation_params ::=
697 | not_empty_reservation_params
698
699 not_empty_reservation_params ::= reservation_param
700 | not_empty_reservation_params "," reservation_param
701
702 reservation_param ::= duid
703 | reservation_client_classes
704 | client_id_value
705 | circuit_id_value
706 | flex_id_value
707 | ip_address
708 | hw_address
709 | hostname
710 | option_data_list
711 | next_server
712 | server_hostname
713 | boot_file_name
714 | user_context
715 | comment
716 | unknown_map_entry
717
718 next_server ::= "next-server" ":" STRING
719
720 server_hostname ::= "server-hostname" ":" STRING
721
722 boot_file_name ::= "boot-file-name" ":" STRING
723
724 ip_address ::= "ip-address" ":" STRING
725
726 ip_addresses ::= "ip-addresses" ":" list_strings
727
728 duid ::= "duid" ":" STRING
729
730 hw_address ::= "hw-address" ":" STRING
731
732 client_id_value ::= "client-id" ":" STRING
733
734 circuit_id_value ::= "circuit-id" ":" STRING
735
736 flex_id_value ::= "flex-id" ":" STRING
737
738 hostname ::= "hostname" ":" STRING
739
740 reservation_client_classes ::= "client-classes" ":" list_strings
741
742 relay ::= "relay" ":" "{" relay_map "}"
743
744 relay_map ::= ip_address
745 | ip_addresses
746
747 client_classes ::= "client-classes" ":" "[" client_classes_list "]"
748
749 client_classes_list ::= client_class_entry
750 | client_classes_list "," client_class_entry
751
752 client_class_entry ::= "{" client_class_params "}"
753
754 client_class_params ::=
755 | not_empty_client_class_params
756
757 not_empty_client_class_params ::= client_class_param
758 | not_empty_client_class_params "," client_class_param
759
760 client_class_param ::= client_class_name
761 | client_class_test
762 | only_if_required
763 | option_def_list
764 | option_data_list
765 | next_server
766 | server_hostname
767 | boot_file_name
768 | user_context
769 | comment
770 | unknown_map_entry
771 | valid_lifetime
772 | min_valid_lifetime
773 | max_valid_lifetime
774
775 client_class_name ::= name
776
777 client_class_test ::= "test" ":" STRING
778
779 only_if_required ::= "only-if-required" ":" BOOLEAN
780
781 dhcp4o6_port ::= "dhcp4o6-port" ":" INTEGER
782
783 control_socket ::= "control-socket" ":" "{" control_socket_params "}"
784
785 control_socket_params ::= control_socket_param
786 | control_socket_params "," control_socket_param
787
788 control_socket_param ::= control_socket_type
789 | control_socket_name
790 | user_context
791 | comment
792 | unknown_map_entry
793
794 control_socket_type ::= "socket-type" ":" STRING
795
796 control_socket_name ::= "socket-name" ":" STRING
797
798 dhcp_queue_control ::= "dhcp-queue-control" ":" "{" queue_control_params "}"
799
800 queue_control_params ::= queue_control_param
801 | queue_control_params "," queue_control_param
802
803 queue_control_param ::= enable_queue
804 | queue_type
805 | capacity
806 | user_context
807 | comment
808 | arbitrary_map_entry
809
810 enable_queue ::= "enable-queue" ":" BOOLEAN
811
812 queue_type ::= "queue-type" ":" STRING
813
814 capacity ::= "capacity" ":" INTEGER
815
816 arbitrary_map_entry ::= STRING ":" value
817
818 dhcp_ddns ::= "dhcp-ddns" ":" "{" dhcp_ddns_params "}"
819
820 sub_dhcp_ddns ::= "{" dhcp_ddns_params "}"
821
822 dhcp_ddns_params ::= dhcp_ddns_param
823 | dhcp_ddns_params "," dhcp_ddns_param
824
825 dhcp_ddns_param ::= enable_updates
826 | server_ip
827 | server_port
828 | sender_ip
829 | sender_port
830 | max_queue_size
831 | ncr_protocol
832 | ncr_format
833 | dep_override_no_update
834 | dep_override_client_update
835 | dep_replace_client_name
836 | dep_generated_prefix
837 | dep_qualifying_suffix
838 | dep_hostname_char_set
839 | dep_hostname_char_replacement
840 | user_context
841 | comment
842 | unknown_map_entry
843
844 enable_updates ::= "enable-updates" ":" BOOLEAN
845
846 server_ip ::= "server-ip" ":" STRING
847
848 server_port ::= "server-port" ":" INTEGER
849
850 sender_ip ::= "sender-ip" ":" STRING
851
852 sender_port ::= "sender-port" ":" INTEGER
853
854 max_queue_size ::= "max-queue-size" ":" INTEGER
855
856 ncr_protocol ::= "ncr-protocol" ":" ncr_protocol_value
857
858 ncr_protocol_value ::= "udp"
859 | "tcp"
860
861 ncr_format ::= "ncr-format" ":" "JSON"
862
863 dep_qualifying_suffix ::= "qualifying-suffix" ":" STRING
864
865 dep_override_no_update ::= "override-no-update" ":" BOOLEAN
866
867 dep_override_client_update ::= "override-client-update" ":" BOOLEAN
868
869 dep_replace_client_name ::= "replace-client-name" ":" ddns_replace_client_name_value
870
871 dep_generated_prefix ::= "generated-prefix" ":" STRING
872
873 dep_hostname_char_set ::= "hostname-char-set" ":" STRING
874
875 dep_hostname_char_replacement ::= "hostname-char-replacement" ":" STRING
876
877 config_control ::= "config-control" ":" "{" config_control_params "}"
878
879 sub_config_control ::= "{" config_control_params "}"
880
881 config_control_params ::= config_control_param
882 | config_control_params "," config_control_param
883
884 config_control_param ::= config_databases
885 | config_fetch_wait_time
886
887 config_databases ::= "config-databases" ":" "[" database_list "]"
888
889 config_fetch_wait_time ::= "config-fetch-wait-time" ":" INTEGER
890
891 loggers ::= "loggers" ":" "[" loggers_entries "]"
892
893 loggers_entries ::= logger_entry
894 | loggers_entries "," logger_entry
895
896 logger_entry ::= "{" logger_params "}"
897
898 logger_params ::= logger_param
899 | logger_params "," logger_param
900
901 logger_param ::= name
902 | output_options_list
903 | debuglevel
904 | severity
905 | user_context
906 | comment
907 | unknown_map_entry
908
909 debuglevel ::= "debuglevel" ":" INTEGER
910
911 severity ::= "severity" ":" STRING
912
913 output_options_list ::= "output_options" ":" "[" output_options_list_content "]"
914
915 output_options_list_content ::= output_entry
916 | output_options_list_content "," output_entry
917
918 output_entry ::= "{" output_params_list "}"
919
920 output_params_list ::= output_params
921 | output_params_list "," output_params
922
923 output_params ::= output
924 | flush
925 | maxsize
926 | maxver
927 | pattern
928
929 output ::= "output" ":" STRING
930
931 flush ::= "flush" ":" BOOLEAN
932
933 maxsize ::= "maxsize" ":" INTEGER
934
935 maxver ::= "maxver" ":" INTEGER
936
937 pattern ::= "pattern" ":" STRING
938
939 compatibility ::= "compatibility" ":" "{" compatibility_params "}"
940
941 compatibility_params ::= compatibility_param
942 | compatibility_params "," compatibility_param
943
944 compatibility_param ::= lenient_option_parsing
945 | unknown_map_entry
946
947 lenient_option_parsing ::= "lenient-option-parsing" ":" BOOLEAN
BNF Grammar for DHCPv6
Grammar generated on 2022-07-21 11:07. See Chapter The DHCPv6 Server for an explanation.
1 Grammar
2
3 $accept ::= start EOF
4
5 start ::= TOPLEVEL_JSON sub_json
6
7 start ::= TOPLEVEL_DHCP6 syntax_map
8
9 start ::= SUB_DHCP6 sub_dhcp6
10
11 start ::= SUB_INTERFACES6 sub_interfaces6
12
13 start ::= SUB_SUBNET6 sub_subnet6
14
15 start ::= SUB_POOL6 sub_pool6
16
17 start ::= SUB_PD_POOL sub_pd_pool
18
19 start ::= SUB_RESERVATION sub_reservation
20
21 start ::= SUB_OPTION_DEFS sub_option_def_list
22
23 start ::= SUB_OPTION_DEF sub_option_def
24
25 start ::= SUB_OPTION_DATA sub_option_data
26
27 start ::= SUB_HOOKS_LIBRARY sub_hooks_library
28
29 start ::= SUB_DHCP_DDNS sub_dhcp_ddns
30
31 start ::= SUB_CONFIG_CONTROL sub_config_control
32
33 value ::= INTEGER
34 | FLOAT
35 | BOOLEAN
36 | STRING
37 | NULL
38 | map2
39 | list_generic
40
41 sub_json ::= value
42
43 map2 ::= "{" map_content "}"
44
45 map_value ::= map2
46
47 map_content ::=
48 | not_empty_map
49
50 not_empty_map ::= STRING ":" value
51 | not_empty_map "," STRING ":" value
52
53 list_generic ::= "[" list_content "]"
54
55 list_content ::=
56 | not_empty_list
57
58 not_empty_list ::= value
59 | not_empty_list "," value
60
61 list_strings ::= "[" list_strings_content "]"
62
63 list_strings_content ::=
64 | not_empty_list_strings
65
66 not_empty_list_strings ::= STRING
67 | not_empty_list_strings "," STRING
68
69 unknown_map_entry ::= STRING ":"
70
71 syntax_map ::= "{" global_object "}"
72
73 global_object ::= "Dhcp6" ":" "{" global_params "}"
74
75 sub_dhcp6 ::= "{" global_params "}"
76
77 global_params ::= global_param
78 | global_params "," global_param
79
80 global_param ::= data_directory
81 | preferred_lifetime
82 | min_preferred_lifetime
83 | max_preferred_lifetime
84 | valid_lifetime
85 | min_valid_lifetime
86 | max_valid_lifetime
87 | renew_timer
88 | rebind_timer
89 | decline_probation_period
90 | subnet6_list
91 | shared_networks
92 | interfaces_config
93 | lease_database
94 | hosts_database
95 | hosts_databases
96 | mac_sources
97 | relay_supplied_options
98 | host_reservation_identifiers
99 | client_classes
100 | option_def_list
101 | option_data_list
102 | hooks_libraries
103 | expired_leases_processing
104 | server_id
105 | dhcp4o6_port
106 | control_socket
107 | dhcp_queue_control
108 | dhcp_ddns
109 | user_context
110 | comment
111 | sanity_checks
112 | reservations
113 | config_control
114 | server_tag
115 | reservation_mode
116 | reservations_global
117 | reservations_in_subnet
118 | reservations_out_of_pool
119 | calculate_tee_times
120 | t1_percent
121 | t2_percent
122 | cache_threshold
123 | cache_max_age
124 | loggers
125 | hostname_char_set
126 | hostname_char_replacement
127 | ddns_send_updates
128 | ddns_override_no_update
129 | ddns_override_client_update
130 | ddns_replace_client_name
131 | ddns_generated_prefix
132 | ddns_qualifying_suffix
133 | ddns_update_on_renew
134 | ddns_use_conflict_resolution
135 | store_extended_info
136 | statistic_default_sample_count
137 | statistic_default_sample_age
138 | dhcp_multi_threading
139 | ip_reservations_unique
140 | compatibility
141 | parked_packet_limit
142 | unknown_map_entry
143
144 data_directory ::= "data-directory" ":" STRING
145
146 preferred_lifetime ::= "preferred-lifetime" ":" INTEGER
147
148 min_preferred_lifetime ::= "min-preferred-lifetime" ":" INTEGER
149
150 max_preferred_lifetime ::= "max-preferred-lifetime" ":" INTEGER
151
152 valid_lifetime ::= "valid-lifetime" ":" INTEGER
153
154 min_valid_lifetime ::= "min-valid-lifetime" ":" INTEGER
155
156 max_valid_lifetime ::= "max-valid-lifetime" ":" INTEGER
157
158 renew_timer ::= "renew-timer" ":" INTEGER
159
160 rebind_timer ::= "rebind-timer" ":" INTEGER
161
162 calculate_tee_times ::= "calculate-tee-times" ":" BOOLEAN
163
164 t1_percent ::= "t1-percent" ":" FLOAT
165
166 t2_percent ::= "t2-percent" ":" FLOAT
167
168 cache_threshold ::= "cache-threshold" ":" FLOAT
169
170 cache_max_age ::= "cache-max-age" ":" INTEGER
171
172 decline_probation_period ::= "decline-probation-period" ":" INTEGER
173
174 ddns_send_updates ::= "ddns-send-updates" ":" BOOLEAN
175
176 ddns_override_no_update ::= "ddns-override-no-update" ":" BOOLEAN
177
178 ddns_override_client_update ::= "ddns-override-client-update" ":" BOOLEAN
179
180 ddns_replace_client_name ::= "ddns-replace-client-name" ":" ddns_replace_client_name_value
181
182 ddns_replace_client_name_value ::= "when-present"
183 | "never"
184 | "always"
185 | "when-not-present"
186 | BOOLEAN
187
188 ddns_generated_prefix ::= "ddns-generated-prefix" ":" STRING
189
190 ddns_qualifying_suffix ::= "ddns-qualifying-suffix" ":" STRING
191
192 ddns_update_on_renew ::= "ddns-update-on-renew" ":" BOOLEAN
193
194 ddns_use_conflict_resolution ::= "ddns-use-conflict-resolution" ":" BOOLEAN
195
196 hostname_char_set ::= "hostname-char-set" ":" STRING
197
198 hostname_char_replacement ::= "hostname-char-replacement" ":" STRING
199
200 store_extended_info ::= "store-extended-info" ":" BOOLEAN
201
202 statistic_default_sample_count ::= "statistic-default-sample-count" ":" INTEGER
203
204 statistic_default_sample_age ::= "statistic-default-sample-age" ":" INTEGER
205
206 server_tag ::= "server-tag" ":" STRING
207
208 parked_packet_limit ::= "parked-packet-limit" ":" INTEGER
209
210 ip_reservations_unique ::= "ip-reservations-unique" ":" BOOLEAN
211
212 interfaces_config ::= "interfaces-config" ":" "{" interfaces_config_params "}"
213
214 sub_interfaces6 ::= "{" interfaces_config_params "}"
215
216 interfaces_config_params ::= interfaces_config_param
217 | interfaces_config_params "," interfaces_config_param
218
219 interfaces_config_param ::= interfaces_list
220 | re_detect
221 | user_context
222 | comment
223 | unknown_map_entry
224
225 interfaces_list ::= "interfaces" ":" list_strings
226
227 re_detect ::= "re-detect" ":" BOOLEAN
228
229 lease_database ::= "lease-database" ":" "{" database_map_params "}"
230
231 hosts_database ::= "hosts-database" ":" "{" database_map_params "}"
232
233 hosts_databases ::= "hosts-databases" ":" "[" database_list "]"
234
235 database_list ::=
236 | not_empty_database_list
237
238 not_empty_database_list ::= database
239 | not_empty_database_list "," database
240
241 database ::= "{" database_map_params "}"
242
243 database_map_params ::= database_map_param
244 | database_map_params "," database_map_param
245
246 database_map_param ::= database_type
247 | user
248 | password
249 | host
250 | port
251 | name
252 | persist
253 | lfc_interval
254 | readonly
255 | connect_timeout
256 | contact_points
257 | max_reconnect_tries
258 | reconnect_wait_time
259 | on_fail
260 | request_timeout
261 | tcp_keepalive
262 | tcp_nodelay
263 | keyspace
264 | consistency
265 | serial_consistency
266 | max_row_errors
267 | unknown_map_entry
268
269 database_type ::= "type" ":" db_type
270
271 db_type ::= "memfile"
272 | "mysql"
273 | "postgresql"
274 | "cql"
275
276 user ::= "user" ":" STRING
277
278 password ::= "password" ":" STRING
279
280 host ::= "host" ":" STRING
281
282 port ::= "port" ":" INTEGER
283
284 name ::= "name" ":" STRING
285
286 persist ::= "persist" ":" BOOLEAN
287
288 lfc_interval ::= "lfc-interval" ":" INTEGER
289
290 readonly ::= "readonly" ":" BOOLEAN
291
292 connect_timeout ::= "connect-timeout" ":" INTEGER
293
294 reconnect_wait_time ::= "reconnect-wait-time" ":" INTEGER
295
296 on_fail ::= "on-fail" ":" on_fail_mode
297
298 on_fail_mode ::= "stop-retry-exit"
299 | "serve-retry-exit"
300 | "serve-retry-continue"
301
302 max_row_errors ::= "max-row-errors" ":" INTEGER
303
304 request_timeout ::= "request-timeout" ":" INTEGER
305
306 tcp_keepalive ::= "tcp-keepalive" ":" INTEGER
307
308 tcp_nodelay ::= "tcp-nodelay" ":" BOOLEAN
309
310 contact_points ::= "contact-points" ":" STRING
311
312 max_reconnect_tries ::= "max-reconnect-tries" ":" INTEGER
313
314 keyspace ::= "keyspace" ":" STRING
315
316 consistency ::= "consistency" ":" STRING
317
318 serial_consistency ::= "serial-consistency" ":" STRING
319
320 sanity_checks ::= "sanity-checks" ":" "{" sanity_checks_params "}"
321
322 sanity_checks_params ::= sanity_checks_param
323 | sanity_checks_params "," sanity_checks_param
324
325 sanity_checks_param ::= lease_checks
326
327 lease_checks ::= "lease-checks" ":" STRING
328
329 mac_sources ::= "mac-sources" ":" "[" mac_sources_list "]"
330
331 mac_sources_list ::= mac_sources_value
332 | mac_sources_list "," mac_sources_value
333
334 mac_sources_value ::= duid_id
335 | string_id
336
337 duid_id ::= "duid"
338
339 string_id ::= STRING
340
341 host_reservation_identifiers ::= "host-reservation-identifiers" ":" "[" host_reservation_identifiers_list "]"
342
343 host_reservation_identifiers_list ::= host_reservation_identifier
344 | host_reservation_identifiers_list "," host_reservation_identifier
345
346 host_reservation_identifier ::= duid_id
347 | hw_address_id
348 | flex_id
349
350 hw_address_id ::= "hw-address"
351
352 flex_id ::= "flex-id"
353
354 relay_supplied_options ::= "relay-supplied-options" ":" "[" list_content "]"
355
356 dhcp_multi_threading ::= "multi-threading" ":" "{" multi_threading_params "}"
357
358 multi_threading_params ::= multi_threading_param
359 | multi_threading_params "," multi_threading_param
360
361 multi_threading_param ::= enable_multi_threading
362 | thread_pool_size
363 | packet_queue_size
364 | user_context
365 | comment
366 | unknown_map_entry
367
368 enable_multi_threading ::= "enable-multi-threading" ":" BOOLEAN
369
370 thread_pool_size ::= "thread-pool-size" ":" INTEGER
371
372 packet_queue_size ::= "packet-queue-size" ":" INTEGER
373
374 hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
375
376 hooks_libraries_list ::=
377 | not_empty_hooks_libraries_list
378
379 not_empty_hooks_libraries_list ::= hooks_library
380 | not_empty_hooks_libraries_list "," hooks_library
381
382 hooks_library ::= "{" hooks_params "}"
383
384 sub_hooks_library ::= "{" hooks_params "}"
385
386 hooks_params ::= hooks_param
387 | hooks_params "," hooks_param
388 | unknown_map_entry
389
390 hooks_param ::= library
391 | parameters
392
393 library ::= "library" ":" STRING
394
395 parameters ::= "parameters" ":" map_value
396
397 expired_leases_processing ::= "expired-leases-processing" ":" "{" expired_leases_params "}"
398
399 expired_leases_params ::= expired_leases_param
400 | expired_leases_params "," expired_leases_param
401
402 expired_leases_param ::= reclaim_timer_wait_time
403 | flush_reclaimed_timer_wait_time
404 | hold_reclaimed_time
405 | max_reclaim_leases
406 | max_reclaim_time
407 | unwarned_reclaim_cycles
408
409 reclaim_timer_wait_time ::= "reclaim-timer-wait-time" ":" INTEGER
410
411 flush_reclaimed_timer_wait_time ::= "flush-reclaimed-timer-wait-time" ":" INTEGER
412
413 hold_reclaimed_time ::= "hold-reclaimed-time" ":" INTEGER
414
415 max_reclaim_leases ::= "max-reclaim-leases" ":" INTEGER
416
417 max_reclaim_time ::= "max-reclaim-time" ":" INTEGER
418
419 unwarned_reclaim_cycles ::= "unwarned-reclaim-cycles" ":" INTEGER
420
421 subnet6_list ::= "subnet6" ":" "[" subnet6_list_content "]"
422
423 subnet6_list_content ::=
424 | not_empty_subnet6_list
425
426 not_empty_subnet6_list ::= subnet6
427 | not_empty_subnet6_list "," subnet6
428
429 subnet6 ::= "{" subnet6_params "}"
430
431 sub_subnet6 ::= "{" subnet6_params "}"
432
433 subnet6_params ::= subnet6_param
434 | subnet6_params "," subnet6_param
435
436 subnet6_param ::= preferred_lifetime
437 | min_preferred_lifetime
438 | max_preferred_lifetime
439 | valid_lifetime
440 | min_valid_lifetime
441 | max_valid_lifetime
442 | renew_timer
443 | rebind_timer
444 | option_data_list
445 | pools_list
446 | pd_pools_list
447 | subnet
448 | interface
449 | interface_id
450 | id
451 | rapid_commit
452 | client_class
453 | require_client_classes
454 | reservations
455 | reservation_mode
456 | reservations_global
457 | reservations_in_subnet
458 | reservations_out_of_pool
459 | relay
460 | user_context
461 | comment
462 | calculate_tee_times
463 | t1_percent
464 | t2_percent
465 | cache_threshold
466 | cache_max_age
467 | hostname_char_set
468 | hostname_char_replacement
469 | ddns_send_updates
470 | ddns_override_no_update
471 | ddns_override_client_update
472 | ddns_replace_client_name
473 | ddns_generated_prefix
474 | ddns_qualifying_suffix
475 | ddns_update_on_renew
476 | ddns_use_conflict_resolution
477 | store_extended_info
478 | unknown_map_entry
479
480 subnet ::= "subnet" ":" STRING
481
482 interface ::= "interface" ":" STRING
483
484 interface_id ::= "interface-id" ":" STRING
485
486 client_class ::= "client-class" ":" STRING
487
488 require_client_classes ::= "require-client-classes" ":" list_strings
489
490 reservations_global ::= "reservations-global" ":" BOOLEAN
491
492 reservations_in_subnet ::= "reservations-in-subnet" ":" BOOLEAN
493
494 reservations_out_of_pool ::= "reservations-out-of-pool" ":" BOOLEAN
495
496 reservation_mode ::= "reservation-mode" ":" hr_mode
497
498 hr_mode ::= "disabled"
499 | "out-of-pool"
500 | "global"
501 | "all"
502
503 id ::= "id" ":" INTEGER
504
505 rapid_commit ::= "rapid-commit" ":" BOOLEAN
506
507 shared_networks ::= "shared-networks" ":" "[" shared_networks_content "]"
508
509 shared_networks_content ::=
510 | shared_networks_list
511
512 shared_networks_list ::= shared_network
513 | shared_networks_list "," shared_network
514
515 shared_network ::= "{" shared_network_params "}"
516
517 shared_network_params ::= shared_network_param
518 | shared_network_params "," shared_network_param
519
520 shared_network_param ::= name
521 | subnet6_list
522 | interface
523 | interface_id
524 | renew_timer
525 | rebind_timer
526 | option_data_list
527 | relay
528 | reservation_mode
529 | reservations_global
530 | reservations_in_subnet
531 | reservations_out_of_pool
532 | client_class
533 | require_client_classes
534 | preferred_lifetime
535 | min_preferred_lifetime
536 | max_preferred_lifetime
537 | rapid_commit
538 | valid_lifetime
539 | min_valid_lifetime
540 | max_valid_lifetime
541 | user_context
542 | comment
543 | calculate_tee_times
544 | t1_percent
545 | t2_percent
546 | cache_threshold
547 | cache_max_age
548 | hostname_char_set
549 | hostname_char_replacement
550 | ddns_send_updates
551 | ddns_override_no_update
552 | ddns_override_client_update
553 | ddns_replace_client_name
554 | ddns_generated_prefix
555 | ddns_qualifying_suffix
556 | ddns_update_on_renew
557 | ddns_use_conflict_resolution
558 | store_extended_info
559 | unknown_map_entry
560
561 option_def_list ::= "option-def" ":" "[" option_def_list_content "]"
562
563 sub_option_def_list ::= "{" option_def_list "}"
564
565 option_def_list_content ::=
566 | not_empty_option_def_list
567
568 not_empty_option_def_list ::= option_def_entry
569 | not_empty_option_def_list "," option_def_entry
570
571 option_def_entry ::= "{" option_def_params "}"
572
573 sub_option_def ::= "{" option_def_params "}"
574
575 option_def_params ::=
576 | not_empty_option_def_params
577
578 not_empty_option_def_params ::= option_def_param
579 | not_empty_option_def_params "," option_def_param
580
581 option_def_param ::= option_def_name
582 | option_def_code
583 | option_def_type
584 | option_def_record_types
585 | option_def_space
586 | option_def_encapsulate
587 | option_def_array
588 | user_context
589 | comment
590 | unknown_map_entry
591
592 option_def_name ::= name
593
594 code ::= "code" ":" INTEGER
595
596 option_def_code ::= code
597
598 option_def_type ::= "type" ":" STRING
599
600 option_def_record_types ::= "record-types" ":" STRING
601
602 space ::= "space" ":" STRING
603
604 option_def_space ::= space
605
606 option_def_encapsulate ::= "encapsulate" ":" STRING
607
608 option_def_array ::= "array" ":" BOOLEAN
609
610 option_data_list ::= "option-data" ":" "[" option_data_list_content "]"
611
612 option_data_list_content ::=
613 | not_empty_option_data_list
614
615 not_empty_option_data_list ::= option_data_entry
616 | not_empty_option_data_list "," option_data_entry
617
618 option_data_entry ::= "{" option_data_params "}"
619
620 sub_option_data ::= "{" option_data_params "}"
621
622 option_data_params ::=
623 | not_empty_option_data_params
624
625 not_empty_option_data_params ::= option_data_param
626 | not_empty_option_data_params "," option_data_param
627
628 option_data_param ::= option_data_name
629 | option_data_data
630 | option_data_code
631 | option_data_space
632 | option_data_csv_format
633 | option_data_always_send
634 | user_context
635 | comment
636 | unknown_map_entry
637
638 option_data_name ::= name
639
640 option_data_data ::= "data" ":" STRING
641
642 option_data_code ::= code
643
644 option_data_space ::= space
645
646 option_data_csv_format ::= "csv-format" ":" BOOLEAN
647
648 option_data_always_send ::= "always-send" ":" BOOLEAN
649
650 pools_list ::= "pools" ":" "[" pools_list_content "]"
651
652 pools_list_content ::=
653 | not_empty_pools_list
654
655 not_empty_pools_list ::= pool_list_entry
656 | not_empty_pools_list "," pool_list_entry
657
658 pool_list_entry ::= "{" pool_params "}"
659
660 sub_pool6 ::= "{" pool_params "}"
661
662 pool_params ::= pool_param
663 | pool_params "," pool_param
664
665 pool_param ::= pool_entry
666 | option_data_list
667 | client_class
668 | require_client_classes
669 | user_context
670 | comment
671 | unknown_map_entry
672
673 pool_entry ::= "pool" ":" STRING
674
675 user_context ::= "user-context" ":" map_value
676
677 comment ::= "comment" ":" STRING
678
679 pd_pools_list ::= "pd-pools" ":" "[" pd_pools_list_content "]"
680
681 pd_pools_list_content ::=
682 | not_empty_pd_pools_list
683
684 not_empty_pd_pools_list ::= pd_pool_entry
685 | not_empty_pd_pools_list "," pd_pool_entry
686
687 pd_pool_entry ::= "{" pd_pool_params "}"
688
689 sub_pd_pool ::= "{" pd_pool_params "}"
690
691 pd_pool_params ::= pd_pool_param
692 | pd_pool_params "," pd_pool_param
693
694 pd_pool_param ::= pd_prefix
695 | pd_prefix_len
696 | pd_delegated_len
697 | option_data_list
698 | client_class
699 | require_client_classes
700 | excluded_prefix
701 | excluded_prefix_len
702 | user_context
703 | comment
704 | unknown_map_entry
705
706 pd_prefix ::= "prefix" ":" STRING
707
708 pd_prefix_len ::= "prefix-len" ":" INTEGER
709
710 excluded_prefix ::= "excluded-prefix" ":" STRING
711
712 excluded_prefix_len ::= "excluded-prefix-len" ":" INTEGER
713
714 pd_delegated_len ::= "delegated-len" ":" INTEGER
715
716 reservations ::= "reservations" ":" "[" reservations_list "]"
717
718 reservations_list ::=
719 | not_empty_reservations_list
720
721 not_empty_reservations_list ::= reservation
722 | not_empty_reservations_list "," reservation
723
724 reservation ::= "{" reservation_params "}"
725
726 sub_reservation ::= "{" reservation_params "}"
727
728 reservation_params ::=
729 | not_empty_reservation_params
730
731 not_empty_reservation_params ::= reservation_param
732 | not_empty_reservation_params "," reservation_param
733
734 reservation_param ::= duid
735 | reservation_client_classes
736 | ip_addresses
737 | prefixes
738 | hw_address
739 | hostname
740 | flex_id_value
741 | option_data_list
742 | user_context
743 | comment
744 | unknown_map_entry
745
746 ip_addresses ::= "ip-addresses" ":" list_strings
747
748 prefixes ::= "prefixes" ":" list_strings
749
750 duid ::= "duid" ":" STRING
751
752 hw_address ::= "hw-address" ":" STRING
753
754 hostname ::= "hostname" ":" STRING
755
756 flex_id_value ::= "flex-id" ":" STRING
757
758 reservation_client_classes ::= "client-classes" ":" list_strings
759
760 relay ::= "relay" ":" "{" relay_map "}"
761
762 relay_map ::= ip_address
763 | ip_addresses
764
765 ip_address ::= "ip-address" ":" STRING
766
767 client_classes ::= "client-classes" ":" "[" client_classes_list "]"
768
769 client_classes_list ::= client_class_entry
770 | client_classes_list "," client_class_entry
771
772 client_class_entry ::= "{" client_class_params "}"
773
774 client_class_params ::=
775 | not_empty_client_class_params
776
777 not_empty_client_class_params ::= client_class_param
778 | not_empty_client_class_params "," client_class_param
779
780 client_class_param ::= client_class_name
781 | client_class_test
782 | only_if_required
783 | option_data_list
784 | user_context
785 | comment
786 | preferred_lifetime
787 | min_preferred_lifetime
788 | max_preferred_lifetime
789 | valid_lifetime
790 | min_valid_lifetime
791 | max_valid_lifetime
792 | unknown_map_entry
793
794 client_class_name ::= name
795
796 client_class_test ::= "test" ":" STRING
797
798 only_if_required ::= "only-if-required" ":" BOOLEAN
799
800 server_id ::= "server-id" ":" "{" server_id_params "}"
801
802 server_id_params ::= server_id_param
803 | server_id_params "," server_id_param
804
805 server_id_param ::= server_id_type
806 | identifier
807 | time
808 | htype
809 | enterprise_id
810 | persist
811 | user_context
812 | comment
813 | unknown_map_entry
814
815 server_id_type ::= "type" ":" duid_type
816
817 duid_type ::= "LLT"
818 | "EN"
819 | "LL"
820
821 htype ::= "htype" ":" INTEGER
822
823 identifier ::= "identifier" ":" STRING
824
825 time ::= "time" ":" INTEGER
826
827 enterprise_id ::= "enterprise-id" ":" INTEGER
828
829 dhcp4o6_port ::= "dhcp4o6-port" ":" INTEGER
830
831 control_socket ::= "control-socket" ":" "{" control_socket_params "}"
832
833 control_socket_params ::= control_socket_param
834 | control_socket_params "," control_socket_param
835
836 control_socket_param ::= socket_type
837 | socket_name
838 | user_context
839 | comment
840 | unknown_map_entry
841
842 socket_type ::= "socket-type" ":" STRING
843
844 socket_name ::= "socket-name" ":" STRING
845
846 dhcp_queue_control ::= "dhcp-queue-control" ":" "{" queue_control_params "}"
847
848 queue_control_params ::= queue_control_param
849 | queue_control_params "," queue_control_param
850
851 queue_control_param ::= enable_queue
852 | queue_type
853 | capacity
854 | user_context
855 | comment
856 | arbitrary_map_entry
857
858 enable_queue ::= "enable-queue" ":" BOOLEAN
859
860 queue_type ::= "queue-type" ":" STRING
861
862 capacity ::= "capacity" ":" INTEGER
863
864 arbitrary_map_entry ::= STRING ":" value
865
866 dhcp_ddns ::= "dhcp-ddns" ":" "{" dhcp_ddns_params "}"
867
868 sub_dhcp_ddns ::= "{" dhcp_ddns_params "}"
869
870 dhcp_ddns_params ::= dhcp_ddns_param
871 | dhcp_ddns_params "," dhcp_ddns_param
872
873 dhcp_ddns_param ::= enable_updates
874 | server_ip
875 | server_port
876 | sender_ip
877 | sender_port
878 | max_queue_size
879 | ncr_protocol
880 | ncr_format
881 | dep_override_no_update
882 | dep_override_client_update
883 | dep_replace_client_name
884 | dep_generated_prefix
885 | dep_qualifying_suffix
886 | dep_hostname_char_set
887 | dep_hostname_char_replacement
888 | user_context
889 | comment
890 | unknown_map_entry
891
892 enable_updates ::= "enable-updates" ":" BOOLEAN
893
894 dep_qualifying_suffix ::= "qualifying-suffix" ":" STRING
895
896 server_ip ::= "server-ip" ":" STRING
897
898 server_port ::= "server-port" ":" INTEGER
899
900 sender_ip ::= "sender-ip" ":" STRING
901
902 sender_port ::= "sender-port" ":" INTEGER
903
904 max_queue_size ::= "max-queue-size" ":" INTEGER
905
906 ncr_protocol ::= "ncr-protocol" ":" ncr_protocol_value
907
908 ncr_protocol_value ::= "UDP"
909 | "TCP"
910
911 ncr_format ::= "ncr-format" ":" "JSON"
912
913 dep_override_no_update ::= "override-no-update" ":" BOOLEAN
914
915 dep_override_client_update ::= "override-client-update" ":" BOOLEAN
916
917 dep_replace_client_name ::= "replace-client-name" ":" ddns_replace_client_name_value
918
919 dep_generated_prefix ::= "generated-prefix" ":" STRING
920
921 dep_hostname_char_set ::= "hostname-char-set" ":" STRING
922
923 dep_hostname_char_replacement ::= "hostname-char-replacement" ":" STRING
924
925 config_control ::= "config-control" ":" "{" config_control_params "}"
926
927 sub_config_control ::= "{" config_control_params "}"
928
929 config_control_params ::= config_control_param
930 | config_control_params "," config_control_param
931
932 config_control_param ::= config_databases
933 | config_fetch_wait_time
934
935 config_databases ::= "config-databases" ":" "[" database_list "]"
936
937 config_fetch_wait_time ::= "config-fetch-wait-time" ":" INTEGER
938
939 loggers ::= "loggers" ":" "[" loggers_entries "]"
940
941 loggers_entries ::= logger_entry
942 | loggers_entries "," logger_entry
943
944 logger_entry ::= "{" logger_params "}"
945
946 logger_params ::= logger_param
947 | logger_params "," logger_param
948
949 logger_param ::= name
950 | output_options_list
951 | debuglevel
952 | severity
953 | user_context
954 | comment
955 | unknown_map_entry
956
957 debuglevel ::= "debuglevel" ":" INTEGER
958
959 severity ::= "severity" ":" STRING
960
961 output_options_list ::= "output_options" ":" "[" output_options_list_content "]"
962
963 output_options_list_content ::= output_entry
964 | output_options_list_content "," output_entry
965
966 output_entry ::= "{" output_params_list "}"
967
968 output_params_list ::= output_params
969 | output_params_list "," output_params
970
971 output_params ::= output
972 | flush
973 | maxsize
974 | maxver
975 | pattern
976
977 output ::= "output" ":" STRING
978
979 flush ::= "flush" ":" BOOLEAN
980
981 maxsize ::= "maxsize" ":" INTEGER
982
983 maxver ::= "maxver" ":" INTEGER
984
985 pattern ::= "pattern" ":" STRING
986
987 compatibility ::= "compatibility" ":" "{" compatibility_params "}"
988
989 compatibility_params ::= compatibility_param
990 | compatibility_params "," compatibility_param
991
992 compatibility_param ::= lenient_option_parsing
993 | unknown_map_entry
994
995 lenient_option_parsing ::= "lenient-option-parsing" ":" BOOLEAN
BNF Grammar for Control Agent
Grammar generated on 2022-07-21 11:07. See Chapter The Kea Control Agent for an explanation.
1 Grammar
2
3 $accept ::= start EOF
4
5 start ::= START_JSON json
6
7 start ::= START_AGENT agent_syntax_map
8
9 start ::= START_SUB_AGENT sub_agent
10
11 sub_agent ::= "{" global_params "}"
12
13 json ::= value
14
15 value ::= INTEGER
16 | FLOAT
17 | BOOLEAN
18 | STRING
19 | NULL
20 | map
21 | list_generic
22
23 map ::= "{" map_content "}"
24
25 map_value ::= map
26
27 map_content ::=
28 | not_empty_map
29
30 not_empty_map ::= STRING ":" value
31 | not_empty_map "," STRING ":" value
32
33 list_generic ::= "[" list_content "]"
34
35 list_content ::=
36 | not_empty_list
37
38 not_empty_list ::= value
39 | not_empty_list "," value
40
41 unknown_map_entry ::= STRING ":"
42
43 agent_syntax_map ::= "{" global_object "}"
44
45 global_object ::= "Control-agent" ":" "{" global_params "}"
46
47 global_params ::= global_param
48 | global_params "," global_param
49
50 global_param ::= http_host
51 | http_port
52 | trust_anchor
53 | cert_file
54 | key_file
55 | cert_required
56 | authentication
57 | control_sockets
58 | hooks_libraries
59 | loggers
60 | user_context
61 | comment
62 | unknown_map_entry
63
64 http_host ::= "http-host" ":" STRING
65
66 http_port ::= "http-port" ":" INTEGER
67
68 trust_anchor ::= "trust-anchor" ":" STRING
69
70 cert_file ::= "cert-file" ":" STRING
71
72 key_file ::= "key-file" ":" STRING
73
74 cert_required ::= "cert-required" ":" BOOLEAN
75
76 user_context ::= "user-context" ":" map_value
77
78 comment ::= "comment" ":" STRING
79
80 hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
81
82 hooks_libraries_list ::=
83 | not_empty_hooks_libraries_list
84
85 not_empty_hooks_libraries_list ::= hooks_library
86 | not_empty_hooks_libraries_list "," hooks_library
87
88 hooks_library ::= "{" hooks_params "}"
89
90 hooks_params ::= hooks_param
91 | hooks_params "," hooks_param
92 | unknown_map_entry
93
94 hooks_param ::= library
95 | parameters
96
97 library ::= "library" ":" STRING
98
99 parameters ::= "parameters" ":" map_value
100
101 control_sockets ::= "control-sockets" ":" "{" control_sockets_params "}"
102
103 control_sockets_params ::= control_socket
104 | control_sockets_params "," control_socket
105
106 control_socket ::= dhcp4_server_socket
107 | dhcp6_server_socket
108 | d2_server_socket
109 | unknown_map_entry
110
111 dhcp4_server_socket ::= "dhcp4" ":" "{" control_socket_params "}"
112
113 dhcp6_server_socket ::= "dhcp6" ":" "{" control_socket_params "}"
114
115 d2_server_socket ::= "d2" ":" "{" control_socket_params "}"
116
117 control_socket_params ::= control_socket_param
118 | control_socket_params "," control_socket_param
119
120 control_socket_param ::= socket_name
121 | socket_type
122 | user_context
123 | comment
124 | unknown_map_entry
125
126 socket_name ::= "socket-name" ":" STRING
127
128 socket_type ::= "socket-type" ":" socket_type_value
129
130 socket_type_value ::= "unix"
131
132 authentication ::= "authentication" ":" "{" auth_params "}"
133
134 auth_params ::= auth_param
135 | auth_params "," auth_param
136
137 auth_param ::= auth_type
138 | realm
139 | clients
140 | comment
141 | user_context
142 | unknown_map_entry
143
144 auth_type ::= "type" ":" auth_type_value
145
146 auth_type_value ::= "basic"
147
148 realm ::= "realm" ":" STRING
149
150 clients ::= "clients" ":" "[" clients_list "]"
151
152 clients_list ::=
153 | not_empty_clients_list
154
155 not_empty_clients_list ::= basic_auth
156 | not_empty_clients_list "," basic_auth
157
158 basic_auth ::= "{" clients_params "}"
159
160 clients_params ::= clients_param
161 | clients_params "," clients_param
162
163 clients_param ::= user
164 | password
165 | user_context
166 | comment
167 | unknown_map_entry
168
169 user ::= "user" ":" STRING
170
171 password ::= "password" ":" STRING
172
173 loggers ::= "loggers" ":" "[" loggers_entries "]"
174
175 loggers_entries ::= logger_entry
176 | loggers_entries "," logger_entry
177
178 logger_entry ::= "{" logger_params "}"
179
180 logger_params ::= logger_param
181 | logger_params "," logger_param
182
183 logger_param ::= name
184 | output_options_list
185 | debuglevel
186 | severity
187 | user_context
188 | comment
189 | unknown_map_entry
190
191 name ::= "name" ":" STRING
192
193 debuglevel ::= "debuglevel" ":" INTEGER
194
195 severity ::= "severity" ":" STRING
196
197 output_options_list ::= "output_options" ":" "[" output_options_list_content "]"
198
199 output_options_list_content ::= output_entry
200 | output_options_list_content "," output_entry
201
202 output_entry ::= "{" output_params_list "}"
203
204 output_params_list ::= output_params
205 | output_params_list "," output_params
206
207 output_params ::= output
208 | flush
209 | maxsize
210 | maxver
211 | pattern
212
213 output ::= "output" ":" STRING
214
215 flush ::= "flush" ":" BOOLEAN
216
217 maxsize ::= "maxsize" ":" INTEGER
218
219 maxver ::= "maxver" ":" INTEGER
220
221 pattern ::= "pattern" ":" STRING
BNF Grammar for DHCP-DDNS
Grammar generated on 2022-07-21 11:07. See Chapter The DHCP-DDNS Server for an explanation.
1 Grammar
2
3 $accept ::= start EOF
4
5 start ::= TOPLEVEL_JSON sub_json
6
7 start ::= TOPLEVEL_DHCPDDNS syntax_map
8
9 start ::= SUB_DHCPDDNS sub_dhcpddns
10
11 start ::= SUB_TSIG_KEY sub_tsig_key
12
13 start ::= SUB_TSIG_KEYS sub_tsig_keys
14
15 start ::= SUB_DDNS_DOMAIN sub_ddns_domain
16
17 start ::= SUB_DDNS_DOMAINS sub_ddns_domains
18
19 start ::= SUB_DNS_SERVER sub_dns_server
20
21 start ::= SUB_DNS_SERVERS sub_dns_servers
22
23 start ::= SUB_HOOKS_LIBRARY sub_hooks_library
24
25 value ::= INTEGER
26 | FLOAT
27 | BOOLEAN
28 | STRING
29 | NULL
30 | map2
31 | list_generic
32
33 sub_json ::= value
34
35 map2 ::= "{" map_content "}"
36
37 map_value ::= map2
38
39 map_content ::=
40 | not_empty_map
41
42 not_empty_map ::= STRING ":" value
43 | not_empty_map "," STRING ":" value
44
45 list_generic ::= "[" list_content "]"
46
47 list_content ::=
48 | not_empty_list
49
50 not_empty_list ::= value
51 | not_empty_list "," value
52
53 unknown_map_entry ::= STRING ":"
54
55 syntax_map ::= "{" global_object "}"
56
57 global_object ::= "DhcpDdns" ":" "{" dhcpddns_params "}"
58
59 sub_dhcpddns ::= "{" dhcpddns_params "}"
60
61 dhcpddns_params ::= dhcpddns_param
62 | dhcpddns_params "," dhcpddns_param
63
64 dhcpddns_param ::= ip_address
65 | port
66 | dns_server_timeout
67 | ncr_protocol
68 | ncr_format
69 | forward_ddns
70 | reverse_ddns
71 | tsig_keys
72 | control_socket
73 | hooks_libraries
74 | loggers
75 | user_context
76 | comment
77 | unknown_map_entry
78
79 ip_address ::= "ip-address" ":" STRING
80
81 port ::= "port" ":" INTEGER
82
83 dns_server_timeout ::= "dns-server-timeout" ":" INTEGER
84
85 ncr_protocol ::= "ncr-protocol" ":" ncr_protocol_value
86
87 ncr_protocol_value ::= "UDP"
88 | "TCP"
89
90 ncr_format ::= "ncr-format" ":" "JSON"
91
92 user_context ::= "user-context" ":" map_value
93
94 comment ::= "comment" ":" STRING
95
96 forward_ddns ::= "forward-ddns" ":" "{" ddns_mgr_params "}"
97
98 reverse_ddns ::= "reverse-ddns" ":" "{" ddns_mgr_params "}"
99
100 ddns_mgr_params ::=
101 | not_empty_ddns_mgr_params
102
103 not_empty_ddns_mgr_params ::= ddns_mgr_param
104 | ddns_mgr_params "," ddns_mgr_param
105
106 ddns_mgr_param ::= ddns_domains
107 | unknown_map_entry
108
109 ddns_domains ::= "ddns-domains" ":" "[" ddns_domain_list "]"
110
111 sub_ddns_domains ::= "[" ddns_domain_list "]"
112
113 ddns_domain_list ::=
114 | not_empty_ddns_domain_list
115
116 not_empty_ddns_domain_list ::= ddns_domain
117 | not_empty_ddns_domain_list "," ddns_domain
118
119 ddns_domain ::= "{" ddns_domain_params "}"
120
121 sub_ddns_domain ::= "{" ddns_domain_params "}"
122
123 ddns_domain_params ::= ddns_domain_param
124 | ddns_domain_params "," ddns_domain_param
125
126 ddns_domain_param ::= ddns_domain_name
127 | ddns_key_name
128 | dns_servers
129 | user_context
130 | comment
131 | unknown_map_entry
132
133 ddns_domain_name ::= "name" ":" STRING
134
135 ddns_key_name ::= "key-name" ":" STRING
136
137 dns_servers ::= "dns-servers" ":" "[" dns_server_list "]"
138
139 sub_dns_servers ::= "[" dns_server_list "]"
140
141 dns_server_list ::= dns_server
142 | dns_server_list "," dns_server
143
144 dns_server ::= "{" dns_server_params "}"
145
146 sub_dns_server ::= "{" dns_server_params "}"
147
148 dns_server_params ::= dns_server_param
149 | dns_server_params "," dns_server_param
150
151 dns_server_param ::= dns_server_hostname
152 | dns_server_ip_address
153 | dns_server_port
154 | ddns_key_name
155 | user_context
156 | comment
157 | unknown_map_entry
158
159 dns_server_hostname ::= "hostname" ":" STRING
160
161 dns_server_ip_address ::= "ip-address" ":" STRING
162
163 dns_server_port ::= "port" ":" INTEGER
164
165 tsig_keys ::= "tsig-keys" ":" "[" tsig_keys_list "]"
166
167 sub_tsig_keys ::= "[" tsig_keys_list "]"
168
169 tsig_keys_list ::=
170 | not_empty_tsig_keys_list
171
172 not_empty_tsig_keys_list ::= tsig_key
173 | not_empty_tsig_keys_list "," tsig_key
174
175 tsig_key ::= "{" tsig_key_params "}"
176
177 sub_tsig_key ::= "{" tsig_key_params "}"
178
179 tsig_key_params ::= tsig_key_param
180 | tsig_key_params "," tsig_key_param
181
182 tsig_key_param ::= tsig_key_name
183 | tsig_key_algorithm
184 | tsig_key_digest_bits
185 | tsig_key_secret
186 | user_context
187 | comment
188 | unknown_map_entry
189
190 tsig_key_name ::= "name" ":" STRING
191
192 tsig_key_algorithm ::= "algorithm" ":" STRING
193
194 tsig_key_digest_bits ::= "digest-bits" ":" INTEGER
195
196 tsig_key_secret ::= "secret" ":" STRING
197
198 control_socket ::= "control-socket" ":" "{" control_socket_params "}"
199
200 control_socket_params ::= control_socket_param
201 | control_socket_params "," control_socket_param
202
203 control_socket_param ::= control_socket_type
204 | control_socket_name
205 | user_context
206 | comment
207 | unknown_map_entry
208
209 control_socket_type ::= "socket-type" ":" STRING
210
211 control_socket_name ::= "socket-name" ":" STRING
212
213 hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
214
215 hooks_libraries_list ::=
216 | not_empty_hooks_libraries_list
217
218 not_empty_hooks_libraries_list ::= hooks_library
219 | not_empty_hooks_libraries_list "," hooks_library
220
221 hooks_library ::= "{" hooks_params "}"
222
223 sub_hooks_library ::= "{" hooks_params "}"
224
225 hooks_params ::= hooks_param
226 | hooks_params "," hooks_param
227 | unknown_map_entry
228
229 hooks_param ::= library
230 | parameters
231
232 library ::= "library" ":" STRING
233
234 parameters ::= "parameters" ":" map_value
235
236 loggers ::= "loggers" ":" "[" loggers_entries "]"
237
238 loggers_entries ::= logger_entry
239 | loggers_entries "," logger_entry
240
241 logger_entry ::= "{" logger_params "}"
242
243 logger_params ::= logger_param
244 | logger_params "," logger_param
245
246 logger_param ::= name
247 | output_options_list
248 | debuglevel
249 | severity
250 | user_context
251 | comment
252 | unknown_map_entry
253
254 name ::= "name" ":" STRING
255
256 debuglevel ::= "debuglevel" ":" INTEGER
257
258 severity ::= "severity" ":" STRING
259
260 output_options_list ::= "output_options" ":" "[" output_options_list_content "]"
261
262 output_options_list_content ::= output_entry
263 | output_options_list_content "," output_entry
264
265 output_entry ::= "{" output_params_list "}"
266
267 output_params_list ::= output_params
268 | output_params_list "," output_params
269
270 output_params ::= output
271 | flush
272 | maxsize
273 | maxver
274 | pattern
275
276 output ::= "output" ":" STRING
277
278 flush ::= "flush" ":" BOOLEAN
279
280 maxsize ::= "maxsize" ":" INTEGER
281
282 maxver ::= "maxver" ":" INTEGER
283
284 pattern ::= "pattern" ":" STRING
BNF Grammar for Kea-netconf
Grammar generated on 2022-07-21 11:07. See Chapter YANG/NETCONF for an explanation.
1 Grammar
2
3 $accept ::= start EOF
4
5 start ::= START_JSON json
6
7 start ::= START_NETCONF netconf_syntax_map
8
9 start ::= START_SUB_NETCONF sub_netconf
10
11 sub_netconf ::= "{" global_params "}"
12
13 json ::= value
14
15 value ::= INTEGER
16 | FLOAT
17 | BOOLEAN
18 | STRING
19 | NULL
20 | map
21 | list_generic
22
23 map ::= "{" map_content "}"
24
25 map_value ::= map
26
27 map_content ::=
28 | not_empty_map
29
30 not_empty_map ::= STRING ":" value
31 | not_empty_map "," STRING ":" value
32
33 list_generic ::= "[" list_content "]"
34
35 list_content ::=
36 | not_empty_list
37
38 not_empty_list ::= value
39 | not_empty_list "," value
40
41 unknown_map_entry ::= STRING ":"
42
43 netconf_syntax_map ::= "{" global_object "}"
44
45 global_object ::= "Netconf" ":" "{" global_params "}"
46
47 global_params ::=
48 | not_empty_global_params
49
50 not_empty_global_params ::= global_param
51 | not_empty_global_params "," global_param
52
53 global_param ::= boot_update
54 | subscribe_changes
55 | validate_changes
56 | managed_servers
57 | hooks_libraries
58 | loggers
59 | user_context
60 | comment
61 | unknown_map_entry
62
63 boot_update ::= "boot-update" ":" BOOLEAN
64
65 subscribe_changes ::= "subscribe-changes" ":" BOOLEAN
66
67 validate_changes ::= "validate-changes" ":" BOOLEAN
68
69 user_context ::= "user-context" ":" map_value
70
71 comment ::= "comment" ":" STRING
72
73 hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
74
75 hooks_libraries_list ::=
76 | not_empty_hooks_libraries_list
77
78 not_empty_hooks_libraries_list ::= hooks_library
79 | not_empty_hooks_libraries_list "," hooks_library
80
81 hooks_library ::= "{" hooks_params "}"
82
83 hooks_params ::= hooks_param
84 | hooks_params "," hooks_param
85 | unknown_map_entry
86
87 hooks_param ::= library
88 | parameters
89
90 library ::= "library" ":" STRING
91
92 parameters ::= "parameters" ":" map_value
93
94 managed_servers ::= "managed-servers" ":" "{" servers_entries "}"
95
96 servers_entries ::=
97 | not_empty_servers_entries
98
99 not_empty_servers_entries ::= server_entry
100 | not_empty_servers_entries "," server_entry
101
102 server_entry ::= dhcp4_server
103 | dhcp6_server
104 | d2_server
105 | ca_server
106 | unknown_map_entry
107
108 dhcp4_server ::= "dhcp4" ":" "{" managed_server_params "}"
109
110 dhcp6_server ::= "dhcp6" ":" "{" managed_server_params "}"
111
112 d2_server ::= "d2" ":" "{" managed_server_params "}"
113
114 ca_server ::= "ca" ":" "{" managed_server_params "}"
115
116 managed_server_params ::= managed_server_param
117 | managed_server_params "," managed_server_param
118
119 managed_server_param ::= model
120 | boot_update
121 | subscribe_changes
122 | validate_changes
123 | control_socket
124 | user_context
125 | comment
126 | unknown_map_entry
127
128 model ::= "model" ":" STRING
129
130 control_socket ::= "control-socket" ":" "{" control_socket_params "}"
131
132 control_socket_params ::= control_socket_param
133 | control_socket_params "," control_socket_param
134
135 control_socket_param ::= socket_type
136 | socket_name
137 | socket_url
138 | user_context
139 | comment
140 | unknown_map_entry
141
142 socket_type ::= "socket-type" ":" socket_type_value
143
144 socket_type_value ::= "unix"
145 | "http"
146 | "stdout"
147
148 socket_name ::= "socket-name" ":" STRING
149
150 socket_url ::= "socket-url" ":" STRING
151
152 loggers ::= "loggers" ":" "[" loggers_entries "]"
153
154 loggers_entries ::= logger_entry
155 | loggers_entries "," logger_entry
156
157 logger_entry ::= "{" logger_params "}"
158
159 logger_params ::= logger_param
160 | logger_params "," logger_param
161
162 logger_param ::= name
163 | output_options_list
164 | debuglevel
165 | severity
166 | user_context
167 | comment
168 | unknown_map_entry
169
170 name ::= "name" ":" STRING
171
172 debuglevel ::= "debuglevel" ":" INTEGER
173
174 severity ::= "severity" ":" STRING
175
176 output_options_list ::= "output_options" ":" "[" output_options_list_content "]"
177
178 output_options_list_content ::= output_entry
179 | output_options_list_content "," output_entry
180
181 output_entry ::= "{" output_params_list "}"
182
183 output_params_list ::= output_params
184 | output_params_list "," output_params
185
186 output_params ::= output
187 | flush
188 | maxsize
189 | maxver
190 | pattern
191
192 output ::= "output" ":" STRING
193
194 flush ::= "flush" ":" BOOLEAN
195
196 maxsize ::= "maxsize" ":" INTEGER
197
198 maxver ::= "maxver" ":" INTEGER
199
200 pattern ::= "pattern" ":" STRING