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