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 in Backus-Naur Form (BNF). See this Wikipedia article on BNF for more information.
BNF Grammar for DHCPv4
This grammar is generated from dhcp4_parser.yy. See The DHCPv4 Server for more details.
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 | not_empty_map ","
51
52 list_generic ::= "[" list_content "]"
53
54 list_content ::=
55 | not_empty_list
56
57 not_empty_list ::= value
58 | not_empty_list "," value
59 | not_empty_list ","
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 | not_empty_list_strings ","
69
70 unknown_map_entry ::= STRING ":"
71
72 syntax_map ::= "{" global_object "}"
73
74 global_object ::= "Dhcp4" ":" "{" global_params "}"
75 | global_object_comma
76
77 global_object_comma ::= global_object ","
78
79 sub_dhcp4 ::= "{" global_params "}"
80
81 global_params ::= global_param
82 | global_params "," global_param
83 | global_params ","
84
85 global_param ::= valid_lifetime
86 | min_valid_lifetime
87 | max_valid_lifetime
88 | renew_timer
89 | rebind_timer
90 | decline_probation_period
91 | subnet4_list
92 | shared_networks
93 | interfaces_config
94 | lease_database
95 | hosts_database
96 | hosts_databases
97 | host_reservation_identifiers
98 | client_classes
99 | option_def_list
100 | option_data_list
101 | hooks_libraries
102 | expired_leases_processing
103 | dhcp4o6_port
104 | control_socket
105 | control_sockets
106 | dhcp_queue_control
107 | dhcp_ddns
108 | echo_client_id
109 | match_client_id
110 | authoritative
111 | next_server
112 | server_hostname
113 | boot_file_name
114 | user_context
115 | comment
116 | sanity_checks
117 | reservations
118 | config_control
119 | server_tag
120 | reservations_global
121 | reservations_in_subnet
122 | reservations_out_of_pool
123 | calculate_tee_times
124 | t1_percent
125 | t2_percent
126 | cache_threshold
127 | cache_max_age
128 | adaptive_lease_time_threshold
129 | loggers
130 | hostname_char_set
131 | hostname_char_replacement
132 | ddns_send_updates
133 | ddns_override_no_update
134 | ddns_override_client_update
135 | ddns_replace_client_name
136 | ddns_generated_prefix
137 | ddns_qualifying_suffix
138 | ddns_update_on_renew
139 | ddns_use_conflict_resolution
140 | ddns_conflict_resolution_mode
141 | ddns_ttl_percent
142 | ddns_ttl
143 | ddns_ttl_min
144 | ddns_ttl_max
145 | store_extended_info
146 | statistic_default_sample_count
147 | statistic_default_sample_age
148 | dhcp_multi_threading
149 | early_global_reservations_lookup
150 | ip_reservations_unique
151 | reservations_lookup_first
152 | compatibility
153 | parked_packet_limit
154 | allocator
155 | offer_lifetime
156 | stash_agent_options
157 | unknown_map_entry
158
159 valid_lifetime ::= "valid-lifetime" ":" INTEGER
160
161 min_valid_lifetime ::= "min-valid-lifetime" ":" INTEGER
162
163 max_valid_lifetime ::= "max-valid-lifetime" ":" INTEGER
164
165 renew_timer ::= "renew-timer" ":" INTEGER
166
167 rebind_timer ::= "rebind-timer" ":" INTEGER
168
169 calculate_tee_times ::= "calculate-tee-times" ":" BOOLEAN
170
171 t1_percent ::= "t1-percent" ":" FLOAT
172
173 t2_percent ::= "t2-percent" ":" FLOAT
174
175 cache_threshold ::= "cache-threshold" ":" FLOAT
176
177 cache_max_age ::= "cache-max-age" ":" INTEGER
178
179 adaptive_lease_time_threshold ::= "adaptive-lease-time-threshold" ":" FLOAT
180
181 decline_probation_period ::= "decline-probation-period" ":" INTEGER
182
183 server_tag ::= "server-tag" ":" STRING
184
185 parked_packet_limit ::= "parked-packet-limit" ":" INTEGER
186
187 allocator ::= "allocator" ":" STRING
188
189 echo_client_id ::= "echo-client-id" ":" BOOLEAN
190
191 match_client_id ::= "match-client-id" ":" BOOLEAN
192
193 authoritative ::= "authoritative" ":" BOOLEAN
194
195 ddns_send_updates ::= "ddns-send-updates" ":" BOOLEAN
196
197 ddns_override_no_update ::= "ddns-override-no-update" ":" BOOLEAN
198
199 ddns_override_client_update ::= "ddns-override-client-update" ":" BOOLEAN
200
201 ddns_replace_client_name ::= "ddns-replace-client-name" ":" ddns_replace_client_name_value
202
203 ddns_replace_client_name_value ::= "when-present"
204 | "never"
205 | "always"
206 | "when-not-present"
207 | BOOLEAN
208
209 ddns_generated_prefix ::= "ddns-generated-prefix" ":" STRING
210
211 ddns_qualifying_suffix ::= "ddns-qualifying-suffix" ":" STRING
212
213 ddns_update_on_renew ::= "ddns-update-on-renew" ":" BOOLEAN
214
215 ddns_use_conflict_resolution ::= "ddns-use-conflict-resolution" ":" BOOLEAN
216
217 ddns_conflict_resolution_mode ::= "ddns-conflict-resolution-mode" ":" ddns_conflict_resolution_mode_value
218
219 ddns_conflict_resolution_mode_value ::= "check-with-dhcid"
220 | "no-check-with-dhcid"
221 | "check-exists-with-dhcid"
222 | "no-check-without-dhcid"
223
224 ddns_ttl_percent ::= "ddns-ttl-percent" ":" FLOAT
225
226 ddns_ttl ::= "ddns-ttl" ":" INTEGER
227
228 ddns_ttl_min ::= "ddns-ttl-min" ":" INTEGER
229
230 ddns_ttl_max ::= "ddns-ttl-mix" ":" INTEGER
231
232 hostname_char_set ::= "hostname-char-set" ":" STRING
233
234 hostname_char_replacement ::= "hostname-char-replacement" ":" STRING
235
236 store_extended_info ::= "store-extended-info" ":" BOOLEAN
237
238 statistic_default_sample_count ::= "statistic-default-sample-count" ":" INTEGER
239
240 statistic_default_sample_age ::= "statistic-default-sample-age" ":" INTEGER
241
242 early_global_reservations_lookup ::= "early-global-reservations-lookup" ":" BOOLEAN
243
244 ip_reservations_unique ::= "ip-reservations-unique" ":" BOOLEAN
245
246 reservations_lookup_first ::= "reservations-lookup-first" ":" BOOLEAN
247
248 offer_lifetime ::= "offer-lifetime" ":" INTEGER
249
250 stash_agent_options ::= "stash-agent-options" ":" BOOLEAN
251
252 interfaces_config ::= "interfaces-config" ":" "{" interfaces_config_params "}"
253
254 interfaces_config_params ::= interfaces_config_param
255 | interfaces_config_params "," interfaces_config_param
256 | interfaces_config_params ","
257
258 interfaces_config_param ::= interfaces_list
259 | dhcp_socket_type
260 | outbound_interface
261 | re_detect
262 | service_sockets_require_all
263 | service_sockets_retry_wait_time
264 | service_sockets_max_retries
265 | user_context
266 | comment
267 | unknown_map_entry
268
269 sub_interfaces4 ::= "{" interfaces_config_params "}"
270
271 interfaces_list ::= "interfaces" ":" list_strings
272
273 dhcp_socket_type ::= "dhcp-socket-type" ":" socket_type
274
275 socket_type ::= "raw"
276 | "udp"
277
278 outbound_interface ::= "outbound-interface" ":" outbound_interface_value
279
280 outbound_interface_value ::= "same-as-inbound"
281 | "use-routing"
282
283 re_detect ::= "re-detect" ":" BOOLEAN
284
285 service_sockets_require_all ::= "service-sockets-require-all" ":" BOOLEAN
286
287 service_sockets_retry_wait_time ::= "service-sockets-retry-wait-time" ":" INTEGER
288
289 service_sockets_max_retries ::= "service-sockets-max-retries" ":" INTEGER
290
291 lease_database ::= "lease-database" ":" "{" database_map_params "}"
292
293 sanity_checks ::= "sanity-checks" ":" "{" sanity_checks_params "}"
294
295 sanity_checks_params ::= sanity_checks_param
296 | sanity_checks_params "," sanity_checks_param
297 | sanity_checks_params ","
298
299 sanity_checks_param ::= lease_checks
300 | extended_info_checks
301
302 lease_checks ::= "lease-checks" ":" STRING
303
304 extended_info_checks ::= "extended-info-checks" ":" STRING
305
306 hosts_database ::= "hosts-database" ":" "{" database_map_params "}"
307
308 hosts_databases ::= "hosts-databases" ":" "[" database_list "]"
309
310 database_list ::=
311 | not_empty_database_list
312
313 not_empty_database_list ::= database
314 | not_empty_database_list "," database
315 | not_empty_database_list ","
316
317 database ::= "{" database_map_params "}"
318
319 database_map_params ::= database_map_param
320 | database_map_params "," database_map_param
321 | database_map_params ","
322
323 database_map_param ::= database_type
324 | user
325 | password
326 | host
327 | port
328 | name
329 | persist
330 | lfc_interval
331 | readonly
332 | connect_timeout
333 | read_timeout
334 | write_timeout
335 | tcp_user_timeout
336 | max_reconnect_tries
337 | reconnect_wait_time
338 | on_fail
339 | retry_on_startup
340 | max_row_errors
341 | trust_anchor
342 | cert_file
343 | key_file
344 | ssl_mode
345 | cipher_list
346 | unknown_map_entry
347
348 database_type ::= "type" ":" STRING
349
350 user ::= "user" ":" STRING
351
352 password ::= "password" ":" STRING
353
354 host ::= "host" ":" STRING
355
356 port ::= "port" ":" INTEGER
357
358 name ::= "name" ":" STRING
359
360 persist ::= "persist" ":" BOOLEAN
361
362 lfc_interval ::= "lfc-interval" ":" INTEGER
363
364 readonly ::= "readonly" ":" BOOLEAN
365
366 connect_timeout ::= "connect-timeout" ":" INTEGER
367
368 read_timeout ::= "read-timeout" ":" INTEGER
369
370 write_timeout ::= "write-timeout" ":" INTEGER
371
372 tcp_user_timeout ::= "tcp-user-timeout" ":" INTEGER
373
374 max_reconnect_tries ::= "max-reconnect-tries" ":" INTEGER
375
376 reconnect_wait_time ::= "reconnect-wait-time" ":" INTEGER
377
378 on_fail ::= "on-fail" ":" on_fail_mode
379
380 on_fail_mode ::= "stop-retry-exit"
381 | "serve-retry-exit"
382 | "serve-retry-continue"
383
384 retry_on_startup ::= "retry-on-startup" ":" BOOLEAN
385
386 max_row_errors ::= "max-row-errors" ":" INTEGER
387
388 trust_anchor ::= "trust-anchor" ":" STRING
389
390 cert_file ::= "cert-file" ":" STRING
391
392 key_file ::= "key-file" ":" STRING
393
394 ssl_mode ::= "ssl-mode" ":" ssl_mode
395 | "disable"
396 | "prefer"
397 | "require"
398 | "verify-ca"
399 | "verify-full"
400
401 cipher_list ::= "cipher-list" ":" STRING
402
403 host_reservation_identifiers ::= "host-reservation-identifiers" ":" "[" host_reservation_identifiers_list "]"
404
405 host_reservation_identifiers_list ::= host_reservation_identifier
406 | host_reservation_identifiers_list "," host_reservation_identifier
407 | host_reservation_identifiers_list ","
408
409 host_reservation_identifier ::= duid_id
410 | hw_address_id
411 | circuit_id
412 | client_id
413 | flex_id
414
415 duid_id ::= "duid"
416
417 hw_address_id ::= "hw-address"
418
419 circuit_id ::= "circuit-id"
420
421 client_id ::= "client-id"
422
423 flex_id ::= "flex-id"
424
425 dhcp_multi_threading ::= "multi-threading" ":" "{" multi_threading_params "}"
426
427 multi_threading_params ::= multi_threading_param
428 | multi_threading_params "," multi_threading_param
429 | multi_threading_params ","
430
431 multi_threading_param ::= enable_multi_threading
432 | thread_pool_size
433 | packet_queue_size
434 | user_context
435 | comment
436 | unknown_map_entry
437
438 enable_multi_threading ::= "enable-multi-threading" ":" BOOLEAN
439
440 thread_pool_size ::= "thread-pool-size" ":" INTEGER
441
442 packet_queue_size ::= "packet-queue-size" ":" INTEGER
443
444 hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
445
446 hooks_libraries_list ::=
447 | not_empty_hooks_libraries_list
448
449 not_empty_hooks_libraries_list ::= hooks_library
450 | not_empty_hooks_libraries_list "," hooks_library
451 | not_empty_hooks_libraries_list ","
452
453 hooks_library ::= "{" hooks_params "}"
454
455 sub_hooks_library ::= "{" hooks_params "}"
456
457 hooks_params ::= hooks_param
458 | hooks_params "," hooks_param
459 | hooks_params ","
460 | unknown_map_entry
461
462 hooks_param ::= library
463 | parameters
464
465 library ::= "library" ":" STRING
466
467 parameters ::= "parameters" ":" map_value
468
469 expired_leases_processing ::= "expired-leases-processing" ":" "{" expired_leases_params "}"
470
471 expired_leases_params ::= expired_leases_param
472 | expired_leases_params "," expired_leases_param
473 | expired_leases_params ","
474
475 expired_leases_param ::= reclaim_timer_wait_time
476 | flush_reclaimed_timer_wait_time
477 | hold_reclaimed_time
478 | max_reclaim_leases
479 | max_reclaim_time
480 | unwarned_reclaim_cycles
481
482 reclaim_timer_wait_time ::= "reclaim-timer-wait-time" ":" INTEGER
483
484 flush_reclaimed_timer_wait_time ::= "flush-reclaimed-timer-wait-time" ":" INTEGER
485
486 hold_reclaimed_time ::= "hold-reclaimed-time" ":" INTEGER
487
488 max_reclaim_leases ::= "max-reclaim-leases" ":" INTEGER
489
490 max_reclaim_time ::= "max-reclaim-time" ":" INTEGER
491
492 unwarned_reclaim_cycles ::= "unwarned-reclaim-cycles" ":" INTEGER
493
494 subnet4_list ::= "subnet4" ":" "[" subnet4_list_content "]"
495
496 subnet4_list_content ::=
497 | not_empty_subnet4_list
498
499 not_empty_subnet4_list ::= subnet4
500 | not_empty_subnet4_list "," subnet4
501 | not_empty_subnet4_list ","
502
503 subnet4 ::= "{" subnet4_params "}"
504
505 sub_subnet4 ::= "{" subnet4_params "}"
506
507 subnet4_params ::= subnet4_param
508 | subnet4_params "," subnet4_param
509 | subnet4_params ","
510
511 subnet4_param ::= valid_lifetime
512 | min_valid_lifetime
513 | max_valid_lifetime
514 | renew_timer
515 | rebind_timer
516 | option_data_list
517 | pools_list
518 | subnet
519 | interface
520 | id
521 | client_class
522 | network_client_classes
523 | require_client_classes
524 | evaluate_additional_classes
525 | reservations
526 | reservations_global
527 | reservations_in_subnet
528 | reservations_out_of_pool
529 | relay
530 | match_client_id
531 | authoritative
532 | next_server
533 | server_hostname
534 | boot_file_name
535 | subnet_4o6_interface
536 | subnet_4o6_interface_id
537 | subnet_4o6_subnet
538 | user_context
539 | comment
540 | calculate_tee_times
541 | t1_percent
542 | t2_percent
543 | cache_threshold
544 | cache_max_age
545 | adaptive_lease_time_threshold
546 | ddns_send_updates
547 | ddns_override_no_update
548 | ddns_override_client_update
549 | ddns_replace_client_name
550 | ddns_generated_prefix
551 | ddns_qualifying_suffix
552 | ddns_update_on_renew
553 | ddns_use_conflict_resolution
554 | ddns_conflict_resolution_mode
555 | ddns_ttl_percent
556 | ddns_ttl
557 | ddns_ttl_min
558 | ddns_ttl_max
559 | hostname_char_set
560 | hostname_char_replacement
561 | store_extended_info
562 | allocator
563 | offer_lifetime
564 | unknown_map_entry
565
566 subnet ::= "subnet" ":" STRING
567
568 subnet_4o6_interface ::= "4o6-interface" ":" STRING
569
570 subnet_4o6_interface_id ::= "4o6-interface-id" ":" STRING
571
572 subnet_4o6_subnet ::= "4o6-subnet" ":" STRING
573
574 interface ::= "interface" ":" STRING
575
576 client_class ::= "client-class" ":" STRING
577
578 network_client_classes ::= "client-classes" ":" list_strings
579
580 require_client_classes ::= "require-client-classes" ":" list_strings
581
582 evaluate_additional_classes ::= "evaluate-additional-classes" ":" list_strings
583
584 reservations_global ::= "reservations-global" ":" BOOLEAN
585
586 reservations_in_subnet ::= "reservations-in-subnet" ":" BOOLEAN
587
588 reservations_out_of_pool ::= "reservations-out-of-pool" ":" BOOLEAN
589
590 id ::= "id" ":" INTEGER
591
592 shared_networks ::= "shared-networks" ":" "[" shared_networks_content "]"
593
594 shared_networks_content ::=
595 | shared_networks_list
596
597 shared_networks_list ::= shared_network
598 | shared_networks_list "," shared_network
599 | shared_networks_list ","
600
601 shared_network ::= "{" shared_network_params "}"
602
603 shared_network_params ::= shared_network_param
604 | shared_network_params "," shared_network_param
605 | shared_network_params ","
606
607 shared_network_param ::= name
608 | subnet4_list
609 | interface
610 | renew_timer
611 | rebind_timer
612 | option_data_list
613 | match_client_id
614 | authoritative
615 | next_server
616 | server_hostname
617 | boot_file_name
618 | relay
619 | reservations_global
620 | reservations_in_subnet
621 | reservations_out_of_pool
622 | client_class
623 | network_client_classes
624 | require_client_classes
625 | evaluate_additional_classes
626 | valid_lifetime
627 | min_valid_lifetime
628 | max_valid_lifetime
629 | user_context
630 | comment
631 | calculate_tee_times
632 | t1_percent
633 | t2_percent
634 | cache_threshold
635 | cache_max_age
636 | adaptive_lease_time_threshold
637 | ddns_send_updates
638 | ddns_override_no_update
639 | ddns_override_client_update
640 | ddns_replace_client_name
641 | ddns_generated_prefix
642 | ddns_qualifying_suffix
643 | ddns_update_on_renew
644 | ddns_use_conflict_resolution
645 | ddns_conflict_resolution_mode
646 | ddns_ttl_percent
647 | ddns_ttl
648 | ddns_ttl_min
649 | ddns_ttl_max
650 | hostname_char_set
651 | hostname_char_replacement
652 | store_extended_info
653 | allocator
654 | offer_lifetime
655 | unknown_map_entry
656
657 option_def_list ::= "option-def" ":" "[" option_def_list_content "]"
658
659 sub_option_def_list ::= "{" option_def_list "}"
660
661 option_def_list_content ::=
662 | not_empty_option_def_list
663
664 not_empty_option_def_list ::= option_def_entry
665 | not_empty_option_def_list "," option_def_entry
666 | not_empty_option_def_list ","
667
668 option_def_entry ::= "{" option_def_params "}"
669
670 sub_option_def ::= "{" option_def_params "}"
671
672 option_def_params ::=
673 | not_empty_option_def_params
674
675 not_empty_option_def_params ::= option_def_param
676 | not_empty_option_def_params "," option_def_param
677 | not_empty_option_def_params ","
678
679 option_def_param ::= option_def_name
680 | option_def_code
681 | option_def_type
682 | option_def_record_types
683 | option_def_space
684 | option_def_encapsulate
685 | option_def_array
686 | user_context
687 | comment
688 | unknown_map_entry
689
690 option_def_name ::= name
691
692 code ::= "code" ":" INTEGER
693
694 option_def_code ::= code
695
696 option_def_type ::= "type" ":" STRING
697
698 option_def_record_types ::= "record-types" ":" STRING
699
700 space ::= "space" ":" STRING
701
702 option_def_space ::= space
703
704 option_def_encapsulate ::= "encapsulate" ":" STRING
705
706 option_def_array ::= "array" ":" BOOLEAN
707
708 option_data_list ::= "option-data" ":" "[" option_data_list_content "]"
709
710 option_data_list_content ::=
711 | not_empty_option_data_list
712
713 not_empty_option_data_list ::= option_data_entry
714 | not_empty_option_data_list "," option_data_entry
715 | not_empty_option_data_list ","
716
717 option_data_entry ::= "{" option_data_params "}"
718
719 sub_option_data ::= "{" option_data_params "}"
720
721 option_data_params ::=
722 | not_empty_option_data_params
723
724 not_empty_option_data_params ::= option_data_param
725 | not_empty_option_data_params "," option_data_param
726 | not_empty_option_data_params ","
727
728 option_data_param ::= option_data_name
729 | option_data_data
730 | option_data_code
731 | option_data_space
732 | option_data_csv_format
733 | option_data_always_send
734 | option_data_never_send
735 | user_context
736 | comment
737 | option_data_client_classes
738 | unknown_map_entry
739
740 option_data_name ::= name
741
742 option_data_data ::= "data" ":" STRING
743
744 option_data_code ::= code
745
746 option_data_space ::= space
747
748 option_data_csv_format ::= "csv-format" ":" BOOLEAN
749
750 option_data_always_send ::= "always-send" ":" BOOLEAN
751
752 option_data_never_send ::= "never-send" ":" BOOLEAN
753
754 option_data_client_classes ::= "client-classes" ":" list_strings
755
756 pools_list ::= "pools" ":" "[" pools_list_content "]"
757
758 pools_list_content ::=
759 | not_empty_pools_list
760
761 not_empty_pools_list ::= pool_list_entry
762 | not_empty_pools_list "," pool_list_entry
763 | not_empty_pools_list ","
764
765 pool_list_entry ::= "{" pool_params "}"
766
767 sub_pool4 ::= "{" pool_params "}"
768
769 pool_params ::= pool_param
770 | pool_params "," pool_param
771 | pool_params ","
772
773 pool_param ::= pool_entry
774 | pool_id
775 | option_data_list
776 | client_class
777 | network_client_classes
778 | require_client_classes
779 | evaluate_additional_classes
780 | ddns_send_updates
781 | ddns_override_no_update
782 | ddns_override_client_update
783 | ddns_replace_client_name
784 | ddns_generated_prefix
785 | ddns_qualifying_suffix
786 | ddns_update_on_renew
787 | ddns_conflict_resolution_mode
788 | ddns_ttl_percent
789 | ddns_ttl
790 | ddns_ttl_min
791 | ddns_ttl_max
792 | hostname_char_set
793 | hostname_char_replacement
794 | user_context
795 | comment
796 | unknown_map_entry
797
798 pool_entry ::= "pool" ":" STRING
799
800 pool_id ::= "pool-id" ":" INTEGER
801
802 user_context ::= "user-context" ":" map_value
803
804 comment ::= "comment" ":" STRING
805
806 reservations ::= "reservations" ":" "[" reservations_list "]"
807
808 reservations_list ::=
809 | not_empty_reservations_list
810
811 not_empty_reservations_list ::= reservation
812 | not_empty_reservations_list "," reservation
813 | not_empty_reservations_list ","
814
815 reservation ::= "{" reservation_params "}"
816
817 sub_reservation ::= "{" reservation_params "}"
818
819 reservation_params ::=
820 | not_empty_reservation_params
821
822 not_empty_reservation_params ::= reservation_param
823 | not_empty_reservation_params "," reservation_param
824 | not_empty_reservation_params ","
825
826 reservation_param ::= duid
827 | reservation_client_classes
828 | client_id_value
829 | circuit_id_value
830 | flex_id_value
831 | ip_address
832 | hw_address
833 | hostname
834 | option_data_list
835 | next_server
836 | server_hostname
837 | boot_file_name
838 | user_context
839 | comment
840 | unknown_map_entry
841
842 next_server ::= "next-server" ":" STRING
843
844 server_hostname ::= "server-hostname" ":" STRING
845
846 boot_file_name ::= "boot-file-name" ":" STRING
847
848 ip_address ::= "ip-address" ":" STRING
849
850 duid ::= "duid" ":" STRING
851
852 hw_address ::= "hw-address" ":" STRING
853
854 client_id_value ::= "client-id" ":" STRING
855
856 circuit_id_value ::= "circuit-id" ":" STRING
857
858 flex_id_value ::= "flex-id" ":" STRING
859
860 hostname ::= "hostname" ":" STRING
861
862 reservation_client_classes ::= "client-classes" ":" list_strings
863
864 relay ::= "relay" ":" "{" relay_map "}"
865
866 relay_map ::= ip_addresses
867
868 ip_addresses ::= "ip-addresses" ":" list_strings
869
870 client_classes ::= "client-classes" ":" "[" client_classes_list "]"
871
872 client_classes_list ::= client_class_entry
873 | client_classes_list "," client_class_entry
874 | client_classes_list ","
875
876 client_class_entry ::= "{" client_class_params "}"
877
878 client_class_params ::=
879 | not_empty_client_class_params
880
881 not_empty_client_class_params ::= client_class_param
882 | not_empty_client_class_params "," client_class_param
883 | not_empty_client_class_params ","
884
885 client_class_param ::= client_class_name
886 | client_class_test
887 | client_class_template_test
888 | only_if_required
889 | only_in_additional_list
890 | option_def_list
891 | option_data_list
892 | next_server
893 | server_hostname
894 | boot_file_name
895 | user_context
896 | comment
897 | unknown_map_entry
898 | valid_lifetime
899 | min_valid_lifetime
900 | max_valid_lifetime
901 | offer_lifetime
902
903 client_class_name ::= name
904
905 client_class_test ::= "test" ":" STRING
906
907 client_class_template_test ::= "template-test" ":" STRING
908
909 only_if_required ::= "only-if-required" ":" BOOLEAN
910
911 only_in_additional_list ::= "only-in-additional-list" ":" BOOLEAN
912
913 dhcp4o6_port ::= "dhcp4o6-port" ":" INTEGER
914
915 control_socket ::= "control-socket" ":" "{" control_socket_params "}"
916
917 control_sockets ::= "control-sockets" ":" "[" control_socket_list "]"
918
919 control_socket_list ::=
920 | not_empty_control_socket_list
921
922 not_empty_control_socket_list ::= control_socket_entry
923 | not_empty_control_socket_list "," control_socket_entry
924 | not_empty_control_socket_list ","
925
926 control_socket_entry ::= "{" control_socket_params "}"
927
928 control_socket_params ::= control_socket_param
929 | control_socket_params "," control_socket_param
930 | control_socket_params ","
931
932 control_socket_param ::= control_socket_type
933 | control_socket_name
934 | control_socket_address
935 | control_socket_port
936 | authentication
937 | trust_anchor
938 | cert_file
939 | key_file
940 | cert_required
941 | http_headers
942 | user_context
943 | comment
944 | unknown_map_entry
945
946 control_socket_type ::= "socket-type" ":" control_socket_type_value
947
948 control_socket_type_value ::= "unix"
949 | "http"
950 | "https"
951
952 control_socket_name ::= "socket-name" ":" STRING
953
954 control_socket_address ::= "socket-address" ":" STRING
955
956 control_socket_port ::= "socket-port" ":" INTEGER
957
958 cert_required ::= "cert-required" ":" BOOLEAN
959
960 http_headers ::= "http-headers" ":" "[" http_header_list "]"
961
962 http_header_list ::=
963 | not_empty_http_header_list
964
965 not_empty_http_header_list ::= http_header
966 | not_empty_http_header_list "," http_header
967 | not_empty_http_header_list ","
968
969 http_header ::= "{" http_header_params "}"
970
971 http_header_params ::= http_header_param
972 | http_header_params "," http_header_param
973 | http_header_params ","
974
975 http_header_param ::= name
976 | header_value
977 | user_context
978 | comment
979 | unknown_map_entry
980
981 header_value ::= "value" ":" STRING
982
983 authentication ::= "authentication" ":" "{" auth_params "}"
984
985 auth_params ::= auth_param
986 | auth_params "," auth_param
987 | auth_params ","
988
989 auth_param ::= auth_type
990 | realm
991 | directory
992 | clients
993 | comment
994 | user_context
995 | unknown_map_entry
996
997 auth_type ::= "type" ":" auth_type_value
998
999 auth_type_value ::= "basic"
1000
1001 realm ::= "realm" ":" STRING
1002
1003 directory ::= "directory" ":" STRING
1004
1005 clients ::= "clients" ":" "[" clients_list "]"
1006
1007 clients_list ::=
1008 | not_empty_clients_list
1009
1010 not_empty_clients_list ::= basic_auth
1011 | not_empty_clients_list "," basic_auth
1012 | not_empty_clients_list ","
1013
1014 basic_auth ::= "{" clients_params "}"
1015
1016 clients_params ::= clients_param
1017 | clients_params "," clients_param
1018 | clients_params ","
1019
1020 clients_param ::= user
1021 | user_file
1022 | password
1023 | password_file
1024 | user_context
1025 | comment
1026 | unknown_map_entry
1027
1028 user_file ::= "user-file" ":" STRING
1029
1030 password_file ::= "password-file" ":" STRING
1031
1032 dhcp_queue_control ::= "dhcp-queue-control" ":" "{" queue_control_params "}"
1033
1034 queue_control_params ::= queue_control_param
1035 | queue_control_params "," queue_control_param
1036 | queue_control_params ","
1037
1038 queue_control_param ::= enable_queue
1039 | queue_type
1040 | capacity
1041 | user_context
1042 | comment
1043 | arbitrary_map_entry
1044
1045 enable_queue ::= "enable-queue" ":" BOOLEAN
1046
1047 queue_type ::= "queue-type" ":" STRING
1048
1049 capacity ::= "capacity" ":" INTEGER
1050
1051 arbitrary_map_entry ::= STRING ":" value
1052
1053 dhcp_ddns ::= "dhcp-ddns" ":" "{" dhcp_ddns_params "}"
1054
1055 sub_dhcp_ddns ::= "{" dhcp_ddns_params "}"
1056
1057 dhcp_ddns_params ::= dhcp_ddns_param
1058 | dhcp_ddns_params "," dhcp_ddns_param
1059 | dhcp_ddns_params ","
1060
1061 dhcp_ddns_param ::= enable_updates
1062 | server_ip
1063 | server_port
1064 | sender_ip
1065 | sender_port
1066 | max_queue_size
1067 | ncr_protocol
1068 | ncr_format
1069 | user_context
1070 | comment
1071 | unknown_map_entry
1072
1073 enable_updates ::= "enable-updates" ":" BOOLEAN
1074
1075 server_ip ::= "server-ip" ":" STRING
1076
1077 server_port ::= "server-port" ":" INTEGER
1078
1079 sender_ip ::= "sender-ip" ":" STRING
1080
1081 sender_port ::= "sender-port" ":" INTEGER
1082
1083 max_queue_size ::= "max-queue-size" ":" INTEGER
1084
1085 ncr_protocol ::= "ncr-protocol" ":" ncr_protocol_value
1086
1087 ncr_protocol_value ::= "udp"
1088 | "tcp"
1089
1090 ncr_format ::= "ncr-format" ":" "JSON"
1091
1092 config_control ::= "config-control" ":" "{" config_control_params "}"
1093
1094 sub_config_control ::= "{" config_control_params "}"
1095
1096 config_control_params ::= config_control_param
1097 | config_control_params "," config_control_param
1098 | config_control_params ","
1099
1100 config_control_param ::= config_databases
1101 | config_fetch_wait_time
1102
1103 config_databases ::= "config-databases" ":" "[" database_list "]"
1104
1105 config_fetch_wait_time ::= "config-fetch-wait-time" ":" INTEGER
1106
1107 loggers ::= "loggers" ":" "[" loggers_entries "]"
1108
1109 loggers_entries ::= logger_entry
1110 | loggers_entries "," logger_entry
1111 | loggers_entries ","
1112
1113 logger_entry ::= "{" logger_params "}"
1114
1115 logger_params ::= logger_param
1116 | logger_params "," logger_param
1117 | logger_params ","
1118
1119 logger_param ::= name
1120 | output_options_list
1121 | debuglevel
1122 | severity
1123 | user_context
1124 | comment
1125 | unknown_map_entry
1126
1127 debuglevel ::= "debuglevel" ":" INTEGER
1128
1129 severity ::= "severity" ":" STRING
1130
1131 output_options_list ::= "output-options" ":" "[" output_options_list_content "]"
1132
1133 output_options_list_content ::= output_entry
1134 | output_options_list_content "," output_entry
1135 | output_options_list_content ","
1136
1137 output_entry ::= "{" output_params_list "}"
1138
1139 output_params_list ::= output_params
1140 | output_params_list "," output_params
1141 | output_params_list ","
1142
1143 output_params ::= output
1144 | flush
1145 | maxsize
1146 | maxver
1147 | pattern
1148
1149 output ::= "output" ":" STRING
1150
1151 flush ::= "flush" ":" BOOLEAN
1152
1153 maxsize ::= "maxsize" ":" INTEGER
1154
1155 maxver ::= "maxver" ":" INTEGER
1156
1157 pattern ::= "pattern" ":" STRING
1158
1159 compatibility ::= "compatibility" ":" "{" compatibility_params "}"
1160
1161 compatibility_params ::= compatibility_param
1162 | compatibility_params "," compatibility_param
1163 | compatibility_params ","
1164
1165 compatibility_param ::= lenient_option_parsing
1166 | ignore_dhcp_server_identifier
1167 | ignore_rai_link_selection
1168 | exclude_first_last_24
1169 | unknown_map_entry
1170
1171 lenient_option_parsing ::= "lenient-option-parsing" ":" BOOLEAN
1172
1173 ignore_dhcp_server_identifier ::= "ignore-dhcp-server-identifier" ":" BOOLEAN
1174
1175 ignore_rai_link_selection ::= "ignore-rai-link-selection" ":" BOOLEAN
1176
1177 exclude_first_last_24 ::= "exclude-first-last-24" ":" BOOLEAN
BNF Grammar for DHCPv6
This grammar is generated from dhcp6_parser.yy. See The DHCPv6 Server for more details.
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 | not_empty_map ","
53
54 list_generic ::= "[" list_content "]"
55
56 list_content ::=
57 | not_empty_list
58
59 not_empty_list ::= value
60 | not_empty_list "," value
61 | not_empty_list ","
62
63 list_strings ::= "[" list_strings_content "]"
64
65 list_strings_content ::=
66 | not_empty_list_strings
67
68 not_empty_list_strings ::= STRING
69 | not_empty_list_strings "," STRING
70 | not_empty_list_strings ","
71
72 unknown_map_entry ::= STRING ":"
73
74 syntax_map ::= "{" global_object "}"
75
76 global_object ::= "Dhcp6" ":" "{" global_params "}"
77 | global_object_comma
78
79 global_object_comma ::= global_object ","
80
81 sub_dhcp6 ::= "{" global_params "}"
82
83 global_params ::= global_param
84 | global_params "," global_param
85 | global_params ","
86
87 global_param ::= data_directory
88 | preferred_lifetime
89 | min_preferred_lifetime
90 | max_preferred_lifetime
91 | valid_lifetime
92 | min_valid_lifetime
93 | max_valid_lifetime
94 | renew_timer
95 | rebind_timer
96 | decline_probation_period
97 | subnet6_list
98 | shared_networks
99 | interfaces_config
100 | lease_database
101 | hosts_database
102 | hosts_databases
103 | mac_sources
104 | relay_supplied_options
105 | host_reservation_identifiers
106 | client_classes
107 | option_def_list
108 | option_data_list
109 | hooks_libraries
110 | expired_leases_processing
111 | server_id
112 | dhcp4o6_port
113 | control_socket
114 | control_sockets
115 | dhcp_queue_control
116 | dhcp_ddns
117 | user_context
118 | comment
119 | sanity_checks
120 | reservations
121 | config_control
122 | server_tag
123 | reservations_global
124 | reservations_in_subnet
125 | reservations_out_of_pool
126 | calculate_tee_times
127 | t1_percent
128 | t2_percent
129 | cache_threshold
130 | cache_max_age
131 | adaptive_lease_time_threshold
132 | loggers
133 | hostname_char_set
134 | hostname_char_replacement
135 | ddns_send_updates
136 | ddns_override_no_update
137 | ddns_override_client_update
138 | ddns_replace_client_name
139 | ddns_generated_prefix
140 | ddns_qualifying_suffix
141 | ddns_update_on_renew
142 | ddns_use_conflict_resolution
143 | ddns_conflict_resolution_mode
144 | ddns_ttl_percent
145 | ddns_ttl
146 | ddns_ttl_min
147 | ddns_ttl_max
148 | store_extended_info
149 | statistic_default_sample_count
150 | statistic_default_sample_age
151 | dhcp_multi_threading
152 | early_global_reservations_lookup
153 | ip_reservations_unique
154 | reservations_lookup_first
155 | allow_address_registration
156 | compatibility
157 | parked_packet_limit
158 | allocator
159 | pd_allocator
160 | unknown_map_entry
161
162 data_directory ::= "data-directory" ":" STRING
163
164 preferred_lifetime ::= "preferred-lifetime" ":" INTEGER
165
166 min_preferred_lifetime ::= "min-preferred-lifetime" ":" INTEGER
167
168 max_preferred_lifetime ::= "max-preferred-lifetime" ":" INTEGER
169
170 valid_lifetime ::= "valid-lifetime" ":" INTEGER
171
172 min_valid_lifetime ::= "min-valid-lifetime" ":" INTEGER
173
174 max_valid_lifetime ::= "max-valid-lifetime" ":" INTEGER
175
176 renew_timer ::= "renew-timer" ":" INTEGER
177
178 rebind_timer ::= "rebind-timer" ":" INTEGER
179
180 calculate_tee_times ::= "calculate-tee-times" ":" BOOLEAN
181
182 t1_percent ::= "t1-percent" ":" FLOAT
183
184 t2_percent ::= "t2-percent" ":" FLOAT
185
186 cache_threshold ::= "cache-threshold" ":" FLOAT
187
188 cache_max_age ::= "cache-max-age" ":" INTEGER
189
190 adaptive_lease_time_threshold ::= "adaptive-lease-time-threshold" ":" FLOAT
191
192 decline_probation_period ::= "decline-probation-period" ":" INTEGER
193
194 ddns_send_updates ::= "ddns-send-updates" ":" BOOLEAN
195
196 ddns_override_no_update ::= "ddns-override-no-update" ":" BOOLEAN
197
198 ddns_override_client_update ::= "ddns-override-client-update" ":" BOOLEAN
199
200 ddns_replace_client_name ::= "ddns-replace-client-name" ":" ddns_replace_client_name_value
201
202 ddns_replace_client_name_value ::= "when-present"
203 | "never"
204 | "always"
205 | "when-not-present"
206 | BOOLEAN
207
208 ddns_generated_prefix ::= "ddns-generated-prefix" ":" STRING
209
210 ddns_qualifying_suffix ::= "ddns-qualifying-suffix" ":" STRING
211
212 ddns_update_on_renew ::= "ddns-update-on-renew" ":" BOOLEAN
213
214 ddns_use_conflict_resolution ::= "ddns-use-conflict-resolution" ":" BOOLEAN
215
216 ddns_conflict_resolution_mode ::= "ddns-conflict-resolution-mode" ":" ddns_conflict_resolution_mode_value
217
218 ddns_conflict_resolution_mode_value ::= "check-with-dhcid"
219 | "no-check-with-dhcid"
220 | "check-exists-with-dhcid"
221 | "no-check-without-dhcid"
222
223 ddns_ttl_percent ::= "ddns-ttl-percent" ":" FLOAT
224
225 ddns_ttl ::= "ddns-ttl" ":" INTEGER
226
227 ddns_ttl_min ::= "ddns-ttl-min" ":" INTEGER
228
229 ddns_ttl_max ::= "ddns-ttl-mix" ":" INTEGER
230
231 hostname_char_set ::= "hostname-char-set" ":" STRING
232
233 hostname_char_replacement ::= "hostname-char-replacement" ":" STRING
234
235 store_extended_info ::= "store-extended-info" ":" BOOLEAN
236
237 statistic_default_sample_count ::= "statistic-default-sample-count" ":" INTEGER
238
239 statistic_default_sample_age ::= "statistic-default-sample-age" ":" INTEGER
240
241 server_tag ::= "server-tag" ":" STRING
242
243 parked_packet_limit ::= "parked-packet-limit" ":" INTEGER
244
245 allocator ::= "allocator" ":" STRING
246
247 pd_allocator ::= "pd-allocator" ":" STRING
248
249 early_global_reservations_lookup ::= "early-global-reservations-lookup" ":" BOOLEAN
250
251 ip_reservations_unique ::= "ip-reservations-unique" ":" BOOLEAN
252
253 reservations_lookup_first ::= "reservations-lookup-first" ":" BOOLEAN
254
255 allow_address_registration ::= "allow-address-registration" ":" BOOLEAN
256
257 interfaces_config ::= "interfaces-config" ":" "{" interfaces_config_params "}"
258
259 sub_interfaces6 ::= "{" interfaces_config_params "}"
260
261 interfaces_config_params ::= interfaces_config_param
262 | interfaces_config_params "," interfaces_config_param
263 | interfaces_config_params ","
264
265 interfaces_config_param ::= interfaces_list
266 | re_detect
267 | service_sockets_require_all
268 | service_sockets_retry_wait_time
269 | service_sockets_max_retries
270 | user_context
271 | comment
272 | unknown_map_entry
273
274 interfaces_list ::= "interfaces" ":" list_strings
275
276 re_detect ::= "re-detect" ":" BOOLEAN
277
278 service_sockets_require_all ::= "service-sockets-require-all" ":" BOOLEAN
279
280 service_sockets_retry_wait_time ::= "service-sockets-retry-wait-time" ":" INTEGER
281
282 service_sockets_max_retries ::= "service-sockets-max-retries" ":" INTEGER
283
284 lease_database ::= "lease-database" ":" "{" database_map_params "}"
285
286 hosts_database ::= "hosts-database" ":" "{" database_map_params "}"
287
288 hosts_databases ::= "hosts-databases" ":" "[" database_list "]"
289
290 database_list ::=
291 | not_empty_database_list
292
293 not_empty_database_list ::= database
294 | not_empty_database_list "," database
295 | not_empty_database_list ","
296
297 database ::= "{" database_map_params "}"
298
299 database_map_params ::= database_map_param
300 | database_map_params "," database_map_param
301 | database_map_params ","
302
303 database_map_param ::= database_type
304 | user
305 | password
306 | host
307 | port
308 | name
309 | persist
310 | lfc_interval
311 | readonly
312 | connect_timeout
313 | read_timeout
314 | write_timeout
315 | tcp_user_timeout
316 | max_reconnect_tries
317 | reconnect_wait_time
318 | on_fail
319 | retry_on_startup
320 | max_row_errors
321 | trust_anchor
322 | cert_file
323 | key_file
324 | ssl_mode
325 | cipher_list
326 | unknown_map_entry
327
328 database_type ::= "type" ":" STRING
329
330 user ::= "user" ":" STRING
331
332 password ::= "password" ":" STRING
333
334 host ::= "host" ":" STRING
335
336 port ::= "port" ":" INTEGER
337
338 name ::= "name" ":" STRING
339
340 persist ::= "persist" ":" BOOLEAN
341
342 lfc_interval ::= "lfc-interval" ":" INTEGER
343
344 readonly ::= "readonly" ":" BOOLEAN
345
346 connect_timeout ::= "connect-timeout" ":" INTEGER
347
348 read_timeout ::= "read-timeout" ":" INTEGER
349
350 write_timeout ::= "write-timeout" ":" INTEGER
351
352 tcp_user_timeout ::= "tcp-user-timeout" ":" INTEGER
353
354 reconnect_wait_time ::= "reconnect-wait-time" ":" INTEGER
355
356 on_fail ::= "on-fail" ":" on_fail_mode
357
358 on_fail_mode ::= "stop-retry-exit"
359 | "serve-retry-exit"
360 | "serve-retry-continue"
361
362 retry_on_startup ::= "retry-on-startup" ":" BOOLEAN
363
364 max_row_errors ::= "max-row-errors" ":" INTEGER
365
366 max_reconnect_tries ::= "max-reconnect-tries" ":" INTEGER
367
368 trust_anchor ::= "trust-anchor" ":" STRING
369
370 cert_file ::= "cert-file" ":" STRING
371
372 key_file ::= "key-file" ":" STRING
373
374 ssl_mode ::= "ssl-mode" ":" ssl_mode
375 | "disable"
376 | "prefer"
377 | "require"
378 | "verify-ca"
379 | "verify-full"
380
381 cipher_list ::= "cipher-list" ":" STRING
382
383 sanity_checks ::= "sanity-checks" ":" "{" sanity_checks_params "}"
384
385 sanity_checks_params ::= sanity_checks_param
386 | sanity_checks_params "," sanity_checks_param
387 | sanity_checks_params ","
388
389 sanity_checks_param ::= lease_checks
390 | extended_info_checks
391
392 lease_checks ::= "lease-checks" ":" STRING
393
394 extended_info_checks ::= "extended-info-checks" ":" STRING
395
396 mac_sources ::= "mac-sources" ":" "[" mac_sources_list "]"
397
398 mac_sources_list ::= mac_sources_value
399 | mac_sources_list "," mac_sources_value
400 | mac_sources_list ","
401
402 mac_sources_value ::= duid_id
403 | string_id
404
405 duid_id ::= "duid"
406
407 string_id ::= STRING
408
409 host_reservation_identifiers ::= "host-reservation-identifiers" ":" "[" host_reservation_identifiers_list "]"
410
411 host_reservation_identifiers_list ::= host_reservation_identifier
412 | host_reservation_identifiers_list "," host_reservation_identifier
413 | host_reservation_identifiers_list ","
414
415 host_reservation_identifier ::= duid_id
416 | hw_address_id
417 | flex_id
418
419 hw_address_id ::= "hw-address"
420
421 flex_id ::= "flex-id"
422
423 relay_supplied_options ::= "relay-supplied-options" ":" "[" list_content "]"
424
425 dhcp_multi_threading ::= "multi-threading" ":" "{" multi_threading_params "}"
426
427 multi_threading_params ::= multi_threading_param
428 | multi_threading_params "," multi_threading_param
429 | multi_threading_params ","
430
431 multi_threading_param ::= enable_multi_threading
432 | thread_pool_size
433 | packet_queue_size
434 | user_context
435 | comment
436 | unknown_map_entry
437
438 enable_multi_threading ::= "enable-multi-threading" ":" BOOLEAN
439
440 thread_pool_size ::= "thread-pool-size" ":" INTEGER
441
442 packet_queue_size ::= "packet-queue-size" ":" INTEGER
443
444 hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
445
446 hooks_libraries_list ::=
447 | not_empty_hooks_libraries_list
448
449 not_empty_hooks_libraries_list ::= hooks_library
450 | not_empty_hooks_libraries_list "," hooks_library
451 | not_empty_hooks_libraries_list ","
452
453 hooks_library ::= "{" hooks_params "}"
454
455 sub_hooks_library ::= "{" hooks_params "}"
456
457 hooks_params ::= hooks_param
458 | hooks_params "," hooks_param
459 | hooks_params ","
460 | unknown_map_entry
461
462 hooks_param ::= library
463 | parameters
464
465 library ::= "library" ":" STRING
466
467 parameters ::= "parameters" ":" map_value
468
469 expired_leases_processing ::= "expired-leases-processing" ":" "{" expired_leases_params "}"
470
471 expired_leases_params ::= expired_leases_param
472 | expired_leases_params "," expired_leases_param
473 | expired_leases_params ","
474
475 expired_leases_param ::= reclaim_timer_wait_time
476 | flush_reclaimed_timer_wait_time
477 | hold_reclaimed_time
478 | max_reclaim_leases
479 | max_reclaim_time
480 | unwarned_reclaim_cycles
481
482 reclaim_timer_wait_time ::= "reclaim-timer-wait-time" ":" INTEGER
483
484 flush_reclaimed_timer_wait_time ::= "flush-reclaimed-timer-wait-time" ":" INTEGER
485
486 hold_reclaimed_time ::= "hold-reclaimed-time" ":" INTEGER
487
488 max_reclaim_leases ::= "max-reclaim-leases" ":" INTEGER
489
490 max_reclaim_time ::= "max-reclaim-time" ":" INTEGER
491
492 unwarned_reclaim_cycles ::= "unwarned-reclaim-cycles" ":" INTEGER
493
494 subnet6_list ::= "subnet6" ":" "[" subnet6_list_content "]"
495
496 subnet6_list_content ::=
497 | not_empty_subnet6_list
498
499 not_empty_subnet6_list ::= subnet6
500 | not_empty_subnet6_list "," subnet6
501 | not_empty_subnet6_list ","
502
503 subnet6 ::= "{" subnet6_params "}"
504
505 sub_subnet6 ::= "{" subnet6_params "}"
506
507 subnet6_params ::= subnet6_param
508 | subnet6_params "," subnet6_param
509 | subnet6_params ","
510
511 subnet6_param ::= preferred_lifetime
512 | min_preferred_lifetime
513 | max_preferred_lifetime
514 | valid_lifetime
515 | min_valid_lifetime
516 | max_valid_lifetime
517 | renew_timer
518 | rebind_timer
519 | option_data_list
520 | pools_list
521 | pd_pools_list
522 | subnet
523 | interface
524 | interface_id
525 | id
526 | rapid_commit
527 | client_class
528 | network_client_classes
529 | require_client_classes
530 | evaluate_additional_classes
531 | reservations
532 | reservations_global
533 | reservations_in_subnet
534 | reservations_out_of_pool
535 | relay
536 | user_context
537 | comment
538 | calculate_tee_times
539 | t1_percent
540 | t2_percent
541 | cache_threshold
542 | cache_max_age
543 | adaptive_lease_time_threshold
544 | hostname_char_set
545 | hostname_char_replacement
546 | ddns_send_updates
547 | ddns_override_no_update
548 | ddns_override_client_update
549 | ddns_replace_client_name
550 | ddns_generated_prefix
551 | ddns_qualifying_suffix
552 | ddns_update_on_renew
553 | ddns_use_conflict_resolution
554 | ddns_conflict_resolution_mode
555 | ddns_ttl_percent
556 | ddns_ttl
557 | ddns_ttl_min
558 | ddns_ttl_max
559 | store_extended_info
560 | allocator
561 | pd_allocator
562 | unknown_map_entry
563
564 subnet ::= "subnet" ":" STRING
565
566 interface ::= "interface" ":" STRING
567
568 interface_id ::= "interface-id" ":" STRING
569
570 client_class ::= "client-class" ":" STRING
571
572 network_client_classes ::= "client-classes" ":" list_strings
573
574 require_client_classes ::= "require-client-classes" ":" list_strings
575
576 evaluate_additional_classes ::= "evaluate-additional-classes" ":" list_strings
577
578 reservations_global ::= "reservations-global" ":" BOOLEAN
579
580 reservations_in_subnet ::= "reservations-in-subnet" ":" BOOLEAN
581
582 reservations_out_of_pool ::= "reservations-out-of-pool" ":" BOOLEAN
583
584 id ::= "id" ":" INTEGER
585
586 rapid_commit ::= "rapid-commit" ":" BOOLEAN
587
588 shared_networks ::= "shared-networks" ":" "[" shared_networks_content "]"
589
590 shared_networks_content ::=
591 | shared_networks_list
592
593 shared_networks_list ::= shared_network
594 | shared_networks_list "," shared_network
595 | shared_networks_list ","
596
597 shared_network ::= "{" shared_network_params "}"
598
599 shared_network_params ::= shared_network_param
600 | shared_network_params "," shared_network_param
601 | shared_network_params ","
602
603 shared_network_param ::= name
604 | subnet6_list
605 | interface
606 | interface_id
607 | renew_timer
608 | rebind_timer
609 | option_data_list
610 | relay
611 | reservations_global
612 | reservations_in_subnet
613 | reservations_out_of_pool
614 | client_class
615 | network_client_classes
616 | require_client_classes
617 | evaluate_additional_classes
618 | preferred_lifetime
619 | min_preferred_lifetime
620 | max_preferred_lifetime
621 | rapid_commit
622 | valid_lifetime
623 | min_valid_lifetime
624 | max_valid_lifetime
625 | user_context
626 | comment
627 | calculate_tee_times
628 | t1_percent
629 | t2_percent
630 | cache_threshold
631 | cache_max_age
632 | adaptive_lease_time_threshold
633 | hostname_char_set
634 | hostname_char_replacement
635 | ddns_send_updates
636 | ddns_override_no_update
637 | ddns_override_client_update
638 | ddns_replace_client_name
639 | ddns_generated_prefix
640 | ddns_qualifying_suffix
641 | ddns_update_on_renew
642 | ddns_use_conflict_resolution
643 | ddns_conflict_resolution_mode
644 | ddns_ttl_percent
645 | ddns_ttl
646 | ddns_ttl_min
647 | ddns_ttl_max
648 | store_extended_info
649 | allocator
650 | pd_allocator
651 | unknown_map_entry
652
653 option_def_list ::= "option-def" ":" "[" option_def_list_content "]"
654
655 sub_option_def_list ::= "{" option_def_list "}"
656
657 option_def_list_content ::=
658 | not_empty_option_def_list
659
660 not_empty_option_def_list ::= option_def_entry
661 | not_empty_option_def_list "," option_def_entry
662 | not_empty_option_def_list ","
663
664 option_def_entry ::= "{" option_def_params "}"
665
666 sub_option_def ::= "{" option_def_params "}"
667
668 option_def_params ::=
669 | not_empty_option_def_params
670
671 not_empty_option_def_params ::= option_def_param
672 | not_empty_option_def_params "," option_def_param
673 | not_empty_option_def_params ","
674
675 option_def_param ::= option_def_name
676 | option_def_code
677 | option_def_type
678 | option_def_record_types
679 | option_def_space
680 | option_def_encapsulate
681 | option_def_array
682 | user_context
683 | comment
684 | unknown_map_entry
685
686 option_def_name ::= name
687
688 code ::= "code" ":" INTEGER
689
690 option_def_code ::= code
691
692 option_def_type ::= "type" ":" STRING
693
694 option_def_record_types ::= "record-types" ":" STRING
695
696 space ::= "space" ":" STRING
697
698 option_def_space ::= space
699
700 option_def_encapsulate ::= "encapsulate" ":" STRING
701
702 option_def_array ::= "array" ":" BOOLEAN
703
704 option_data_list ::= "option-data" ":" "[" option_data_list_content "]"
705
706 option_data_list_content ::=
707 | not_empty_option_data_list
708
709 not_empty_option_data_list ::= option_data_entry
710 | not_empty_option_data_list "," option_data_entry
711 | not_empty_option_data_list ","
712
713 option_data_entry ::= "{" option_data_params "}"
714
715 sub_option_data ::= "{" option_data_params "}"
716
717 option_data_params ::=
718 | not_empty_option_data_params
719
720 not_empty_option_data_params ::= option_data_param
721 | not_empty_option_data_params "," option_data_param
722 | not_empty_option_data_params ","
723
724 option_data_param ::= option_data_name
725 | option_data_data
726 | option_data_code
727 | option_data_space
728 | option_data_csv_format
729 | option_data_always_send
730 | option_data_never_send
731 | user_context
732 | comment
733 | option_data_client_classes
734 | unknown_map_entry
735
736 option_data_name ::= name
737
738 option_data_data ::= "data" ":" STRING
739
740 option_data_code ::= code
741
742 option_data_space ::= space
743
744 option_data_csv_format ::= "csv-format" ":" BOOLEAN
745
746 option_data_always_send ::= "always-send" ":" BOOLEAN
747
748 option_data_never_send ::= "never-send" ":" BOOLEAN
749
750 option_data_client_classes ::= "client-classes" ":" list_strings
751
752 pools_list ::= "pools" ":" "[" pools_list_content "]"
753
754 pools_list_content ::=
755 | not_empty_pools_list
756
757 not_empty_pools_list ::= pool_list_entry
758 | not_empty_pools_list "," pool_list_entry
759 | not_empty_pools_list ","
760
761 pool_list_entry ::= "{" pool_params "}"
762
763 sub_pool6 ::= "{" pool_params "}"
764
765 pool_params ::= pool_param
766 | pool_params "," pool_param
767 | pool_params ","
768
769 pool_param ::= pool_entry
770 | pool_id
771 | option_data_list
772 | client_class
773 | network_client_classes
774 | require_client_classes
775 | evaluate_additional_classes
776 | ddns_send_updates
777 | ddns_override_no_update
778 | ddns_override_client_update
779 | ddns_replace_client_name
780 | ddns_generated_prefix
781 | ddns_qualifying_suffix
782 | ddns_update_on_renew
783 | ddns_conflict_resolution_mode
784 | ddns_ttl_percent
785 | ddns_ttl
786 | ddns_ttl_min
787 | ddns_ttl_max
788 | hostname_char_set
789 | hostname_char_replacement
790 | user_context
791 | comment
792 | unknown_map_entry
793
794 pool_entry ::= "pool" ":" STRING
795
796 pool_id ::= "pool-id" ":" INTEGER
797
798 user_context ::= "user-context" ":" map_value
799
800 comment ::= "comment" ":" STRING
801
802 pd_pools_list ::= "pd-pools" ":" "[" pd_pools_list_content "]"
803
804 pd_pools_list_content ::=
805 | not_empty_pd_pools_list
806
807 not_empty_pd_pools_list ::= pd_pool_entry
808 | not_empty_pd_pools_list "," pd_pool_entry
809 | not_empty_pd_pools_list ","
810
811 pd_pool_entry ::= "{" pd_pool_params "}"
812
813 sub_pd_pool ::= "{" pd_pool_params "}"
814
815 pd_pool_params ::= pd_pool_param
816 | pd_pool_params "," pd_pool_param
817 | pd_pool_params ","
818
819 pd_pool_param ::= pd_prefix
820 | pd_prefix_len
821 | pd_delegated_len
822 | pool_id
823 | option_data_list
824 | client_class
825 | network_client_classes
826 | require_client_classes
827 | evaluate_additional_classes
828 | excluded_prefix
829 | excluded_prefix_len
830 | user_context
831 | comment
832 | unknown_map_entry
833
834 pd_prefix ::= "prefix" ":" STRING
835
836 pd_prefix_len ::= "prefix-len" ":" INTEGER
837
838 excluded_prefix ::= "excluded-prefix" ":" STRING
839
840 excluded_prefix_len ::= "excluded-prefix-len" ":" INTEGER
841
842 pd_delegated_len ::= "delegated-len" ":" INTEGER
843
844 reservations ::= "reservations" ":" "[" reservations_list "]"
845
846 reservations_list ::=
847 | not_empty_reservations_list
848
849 not_empty_reservations_list ::= reservation
850 | not_empty_reservations_list "," reservation
851 | not_empty_reservations_list ","
852
853 reservation ::= "{" reservation_params "}"
854
855 sub_reservation ::= "{" reservation_params "}"
856
857 reservation_params ::=
858 | not_empty_reservation_params
859
860 not_empty_reservation_params ::= reservation_param
861 | not_empty_reservation_params "," reservation_param
862 | not_empty_reservation_params ","
863
864 reservation_param ::= duid
865 | reservation_client_classes
866 | ip_addresses
867 | prefixes
868 | excluded_prefixes
869 | hw_address
870 | hostname
871 | flex_id_value
872 | option_data_list
873 | user_context
874 | comment
875 | unknown_map_entry
876
877 ip_addresses ::= "ip-addresses" ":" list_strings
878
879 prefixes ::= "prefixes" ":" list_strings
880
881 excluded_prefixes ::= "excluded-prefixes" ":" list_strings
882
883 duid ::= "duid" ":" STRING
884
885 hw_address ::= "hw-address" ":" STRING
886
887 hostname ::= "hostname" ":" STRING
888
889 flex_id_value ::= "flex-id" ":" STRING
890
891 reservation_client_classes ::= "client-classes" ":" list_strings
892
893 relay ::= "relay" ":" "{" relay_map "}"
894
895 relay_map ::= ip_addresses
896
897 client_classes ::= "client-classes" ":" "[" client_classes_list "]"
898
899 client_classes_list ::= client_class_entry
900 | client_classes_list "," client_class_entry
901 | client_classes_list ","
902
903 client_class_entry ::= "{" client_class_params "}"
904
905 client_class_params ::=
906 | not_empty_client_class_params
907
908 not_empty_client_class_params ::= client_class_param
909 | not_empty_client_class_params "," client_class_param
910 | not_empty_client_class_params ","
911
912 client_class_param ::= client_class_name
913 | client_class_test
914 | client_class_template_test
915 | only_if_required
916 | only_in_additional_list
917 | option_data_list
918 | user_context
919 | comment
920 | preferred_lifetime
921 | min_preferred_lifetime
922 | max_preferred_lifetime
923 | valid_lifetime
924 | min_valid_lifetime
925 | max_valid_lifetime
926 | unknown_map_entry
927
928 client_class_name ::= name
929
930 client_class_test ::= "test" ":" STRING
931
932 client_class_template_test ::= "template-test" ":" STRING
933
934 only_if_required ::= "only-if-required" ":" BOOLEAN
935
936 only_in_additional_list ::= "only-in-additional-list" ":" BOOLEAN
937
938 server_id ::= "server-id" ":" "{" server_id_params "}"
939
940 server_id_params ::= server_id_param
941 | server_id_params "," server_id_param
942 | server_id_params ","
943
944 server_id_param ::= server_id_type
945 | identifier
946 | time
947 | htype
948 | enterprise_id
949 | persist
950 | user_context
951 | comment
952 | unknown_map_entry
953
954 server_id_type ::= "type" ":" duid_type
955
956 duid_type ::= "LLT"
957 | "EN"
958 | "LL"
959
960 htype ::= "htype" ":" INTEGER
961
962 identifier ::= "identifier" ":" STRING
963
964 time ::= "time" ":" INTEGER
965
966 enterprise_id ::= "enterprise-id" ":" INTEGER
967
968 dhcp4o6_port ::= "dhcp4o6-port" ":" INTEGER
969
970 control_socket ::= "control-socket" ":" "{" control_socket_params "}"
971
972 control_sockets ::= "control-sockets" ":" "[" control_socket_list "]"
973
974 control_socket_list ::=
975 | not_empty_control_socket_list
976
977 not_empty_control_socket_list ::= control_socket_entry
978 | not_empty_control_socket_list "," control_socket_entry
979 | not_empty_control_socket_list ","
980
981 control_socket_entry ::= "{" control_socket_params "}"
982
983 control_socket_params ::= control_socket_param
984 | control_socket_params "," control_socket_param
985 | control_socket_params ","
986
987 control_socket_param ::= control_socket_type
988 | control_socket_name
989 | control_socket_address
990 | control_socket_port
991 | authentication
992 | trust_anchor
993 | cert_file
994 | key_file
995 | cert_required
996 | http_headers
997 | user_context
998 | comment
999 | unknown_map_entry
1000
1001 control_socket_type ::= "socket-type" ":" control_socket_type_value
1002
1003 control_socket_type_value ::= "unix"
1004 | "http"
1005 | "https"
1006
1007 control_socket_name ::= "socket-name" ":" STRING
1008
1009 control_socket_address ::= "socket-address" ":" STRING
1010
1011 control_socket_port ::= "socket-port" ":" INTEGER
1012
1013 cert_required ::= "cert-required" ":" BOOLEAN
1014
1015 http_headers ::= "http-headers" ":" "[" http_header_list "]"
1016
1017 http_header_list ::=
1018 | not_empty_http_header_list
1019
1020 not_empty_http_header_list ::= http_header
1021 | not_empty_http_header_list "," http_header
1022 | not_empty_http_header_list ","
1023
1024 http_header ::= "{" http_header_params "}"
1025
1026 http_header_params ::= http_header_param
1027 | http_header_params "," http_header_param
1028 | http_header_params ","
1029
1030 http_header_param ::= name
1031 | header_value
1032 | user_context
1033 | comment
1034 | unknown_map_entry
1035
1036 header_value ::= "value" ":" STRING
1037
1038 authentication ::= "authentication" ":" "{" auth_params "}"
1039
1040 auth_params ::= auth_param
1041 | auth_params "," auth_param
1042 | auth_params ","
1043
1044 auth_param ::= auth_type
1045 | realm
1046 | directory
1047 | clients
1048 | comment
1049 | user_context
1050 | unknown_map_entry
1051
1052 auth_type ::= "type" ":" auth_type_value
1053
1054 auth_type_value ::= "basic"
1055
1056 realm ::= "realm" ":" STRING
1057
1058 directory ::= "directory" ":" STRING
1059
1060 clients ::= "clients" ":" "[" clients_list "]"
1061
1062 clients_list ::=
1063 | not_empty_clients_list
1064
1065 not_empty_clients_list ::= basic_auth
1066 | not_empty_clients_list "," basic_auth
1067 | not_empty_clients_list ","
1068
1069 basic_auth ::= "{" clients_params "}"
1070
1071 clients_params ::= clients_param
1072 | clients_params "," clients_param
1073 | clients_params ","
1074
1075 clients_param ::= user
1076 | user_file
1077 | password
1078 | password_file
1079 | user_context
1080 | comment
1081 | unknown_map_entry
1082
1083 user_file ::= "user-file" ":" STRING
1084
1085 password_file ::= "password-file" ":" STRING
1086
1087 dhcp_queue_control ::= "dhcp-queue-control" ":" "{" queue_control_params "}"
1088
1089 queue_control_params ::= queue_control_param
1090 | queue_control_params "," queue_control_param
1091 | queue_control_params ","
1092
1093 queue_control_param ::= enable_queue
1094 | queue_type
1095 | capacity
1096 | user_context
1097 | comment
1098 | arbitrary_map_entry
1099
1100 enable_queue ::= "enable-queue" ":" BOOLEAN
1101
1102 queue_type ::= "queue-type" ":" STRING
1103
1104 capacity ::= "capacity" ":" INTEGER
1105
1106 arbitrary_map_entry ::= STRING ":" value
1107
1108 dhcp_ddns ::= "dhcp-ddns" ":" "{" dhcp_ddns_params "}"
1109
1110 sub_dhcp_ddns ::= "{" dhcp_ddns_params "}"
1111
1112 dhcp_ddns_params ::= dhcp_ddns_param
1113 | dhcp_ddns_params "," dhcp_ddns_param
1114 | dhcp_ddns_params ","
1115
1116 dhcp_ddns_param ::= enable_updates
1117 | server_ip
1118 | server_port
1119 | sender_ip
1120 | sender_port
1121 | max_queue_size
1122 | ncr_protocol
1123 | ncr_format
1124 | user_context
1125 | comment
1126 | unknown_map_entry
1127
1128 enable_updates ::= "enable-updates" ":" BOOLEAN
1129
1130 server_ip ::= "server-ip" ":" STRING
1131
1132 server_port ::= "server-port" ":" INTEGER
1133
1134 sender_ip ::= "sender-ip" ":" STRING
1135
1136 sender_port ::= "sender-port" ":" INTEGER
1137
1138 max_queue_size ::= "max-queue-size" ":" INTEGER
1139
1140 ncr_protocol ::= "ncr-protocol" ":" ncr_protocol_value
1141
1142 ncr_protocol_value ::= "UDP"
1143 | "TCP"
1144
1145 ncr_format ::= "ncr-format" ":" "JSON"
1146
1147 config_control ::= "config-control" ":" "{" config_control_params "}"
1148
1149 sub_config_control ::= "{" config_control_params "}"
1150
1151 config_control_params ::= config_control_param
1152 | config_control_params "," config_control_param
1153 | config_control_params ","
1154
1155 config_control_param ::= config_databases
1156 | config_fetch_wait_time
1157
1158 config_databases ::= "config-databases" ":" "[" database_list "]"
1159
1160 config_fetch_wait_time ::= "config-fetch-wait-time" ":" INTEGER
1161
1162 loggers ::= "loggers" ":" "[" loggers_entries "]"
1163
1164 loggers_entries ::= logger_entry
1165 | loggers_entries "," logger_entry
1166 | loggers_entries ","
1167
1168 logger_entry ::= "{" logger_params "}"
1169
1170 logger_params ::= logger_param
1171 | logger_params "," logger_param
1172 | logger_params ","
1173
1174 logger_param ::= name
1175 | output_options_list
1176 | debuglevel
1177 | severity
1178 | user_context
1179 | comment
1180 | unknown_map_entry
1181
1182 debuglevel ::= "debuglevel" ":" INTEGER
1183
1184 severity ::= "severity" ":" STRING
1185
1186 output_options_list ::= "output-options" ":" "[" output_options_list_content "]"
1187
1188 output_options_list_content ::= output_entry
1189 | output_options_list_content "," output_entry
1190 | output_options_list_content ","
1191
1192 output_entry ::= "{" output_params_list "}"
1193
1194 output_params_list ::= output_params
1195 | output_params_list "," output_params
1196 | output_params_list ","
1197
1198 output_params ::= output
1199 | flush
1200 | maxsize
1201 | maxver
1202 | pattern
1203
1204 output ::= "output" ":" STRING
1205
1206 flush ::= "flush" ":" BOOLEAN
1207
1208 maxsize ::= "maxsize" ":" INTEGER
1209
1210 maxver ::= "maxver" ":" INTEGER
1211
1212 pattern ::= "pattern" ":" STRING
1213
1214 compatibility ::= "compatibility" ":" "{" compatibility_params "}"
1215
1216 compatibility_params ::= compatibility_param
1217 | compatibility_params "," compatibility_param
1218 | compatibility_params ","
1219
1220 compatibility_param ::= lenient_option_parsing
1221 | unknown_map_entry
1222
1223 lenient_option_parsing ::= "lenient-option-parsing" ":" BOOLEAN
BNF Grammar for Control Agent
This grammar is generated from agent_parser.yy. See The Kea Control Agent for more details.
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 | not_empty_map ","
33
34 list_generic ::= "[" list_content "]"
35
36 list_content ::=
37 | not_empty_list
38
39 not_empty_list ::= value
40 | not_empty_list "," value
41 | not_empty_list ","
42
43 unknown_map_entry ::= STRING ":"
44
45 agent_syntax_map ::= "{" global_object "}"
46
47 global_object ::= "Control-agent" ":" "{" global_params "}"
48 | global_object_comma
49
50 global_object_comma ::= global_object ","
51
52 global_params ::= global_param
53 | global_params "," global_param
54 | global_params ","
55
56 global_param ::= http_host
57 | http_port
58 | http_headers
59 | trust_anchor
60 | cert_file
61 | key_file
62 | cert_required
63 | authentication
64 | control_sockets
65 | hooks_libraries
66 | loggers
67 | user_context
68 | comment
69 | unknown_map_entry
70
71 http_host ::= "http-host" ":" STRING
72
73 http_port ::= "http-port" ":" INTEGER
74
75 trust_anchor ::= "trust-anchor" ":" STRING
76
77 cert_file ::= "cert-file" ":" STRING
78
79 key_file ::= "key-file" ":" STRING
80
81 cert_required ::= "cert-required" ":" BOOLEAN
82
83 user_context ::= "user-context" ":" map_value
84
85 comment ::= "comment" ":" STRING
86
87 http_headers ::= "http-headers" ":" "[" http_header_list "]"
88
89 http_header_list ::=
90 | not_empty_http_header_list
91
92 not_empty_http_header_list ::= http_header
93 | not_empty_http_header_list "," http_header
94 | not_empty_http_header_list ","
95
96 http_header ::= "{" http_header_params "}"
97
98 http_header_params ::= http_header_param
99 | http_header_params "," http_header_param
100 | http_header_params ","
101
102 http_header_param ::= name
103 | header_value
104 | user_context
105 | comment
106 | unknown_map_entry
107
108 name ::= "name" ":" STRING
109
110 header_value ::= "value" ":" STRING
111
112 hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
113
114 hooks_libraries_list ::=
115 | not_empty_hooks_libraries_list
116
117 not_empty_hooks_libraries_list ::= hooks_library
118 | not_empty_hooks_libraries_list "," hooks_library
119 | not_empty_hooks_libraries_list ","
120
121 hooks_library ::= "{" hooks_params "}"
122
123 hooks_params ::= hooks_param
124 | hooks_params "," hooks_param
125 | hooks_params ","
126 | unknown_map_entry
127
128 hooks_param ::= library
129 | parameters
130
131 library ::= "library" ":" STRING
132
133 parameters ::= "parameters" ":" map_value
134
135 control_sockets ::= "control-sockets" ":" "{" control_sockets_params "}"
136
137 control_sockets_params ::= control_socket
138 | control_sockets_params "," control_socket
139 | control_sockets_params ","
140
141 control_socket ::= dhcp4_server_socket
142 | dhcp6_server_socket
143 | d2_server_socket
144 | unknown_map_entry
145
146 dhcp4_server_socket ::= "dhcp4" ":" "{" control_socket_params "}"
147
148 dhcp6_server_socket ::= "dhcp6" ":" "{" control_socket_params "}"
149
150 d2_server_socket ::= "d2" ":" "{" control_socket_params "}"
151
152 control_socket_params ::= control_socket_param
153 | control_socket_params "," control_socket_param
154 | control_socket_params ","
155
156 control_socket_param ::= socket_name
157 | socket_type
158 | user_context
159 | comment
160 | unknown_map_entry
161
162 socket_name ::= "socket-name" ":" STRING
163
164 socket_type ::= "socket-type" ":" socket_type_value
165
166 socket_type_value ::= "unix"
167
168 authentication ::= "authentication" ":" "{" auth_params "}"
169
170 auth_params ::= auth_param
171 | auth_params "," auth_param
172 | auth_params ","
173
174 auth_param ::= auth_type
175 | realm
176 | directory
177 | clients
178 | comment
179 | user_context
180 | unknown_map_entry
181
182 auth_type ::= "type" ":" auth_type_value
183
184 auth_type_value ::= "basic"
185
186 realm ::= "realm" ":" STRING
187
188 directory ::= "directory" ":" STRING
189
190 clients ::= "clients" ":" "[" clients_list "]"
191
192 clients_list ::=
193 | not_empty_clients_list
194
195 not_empty_clients_list ::= basic_auth
196 | not_empty_clients_list "," basic_auth
197 | not_empty_clients_list ","
198
199 basic_auth ::= "{" clients_params "}"
200
201 clients_params ::= clients_param
202 | clients_params "," clients_param
203 | clients_params ","
204
205 clients_param ::= user
206 | user_file
207 | password
208 | password_file
209 | user_context
210 | comment
211 | unknown_map_entry
212
213 user ::= "user" ":" STRING
214
215 user_file ::= "user-file" ":" STRING
216
217 password ::= "password" ":" STRING
218
219 password_file ::= "password-file" ":" STRING
220
221 loggers ::= "loggers" ":" "[" loggers_entries "]"
222
223 loggers_entries ::= logger_entry
224 | loggers_entries "," logger_entry
225 | loggers_entries ","
226
227 logger_entry ::= "{" logger_params "}"
228
229 logger_params ::= logger_param
230 | logger_params "," logger_param
231 | logger_params ","
232
233 logger_param ::= name
234 | output_options_list
235 | debuglevel
236 | severity
237 | user_context
238 | comment
239 | unknown_map_entry
240
241 debuglevel ::= "debuglevel" ":" INTEGER
242
243 severity ::= "severity" ":" STRING
244
245 output_options_list ::= "output-options" ":" "[" output_options_list_content "]"
246
247 output_options_list_content ::= output_entry
248 | output_options_list_content "," output_entry
249 | output_options_list_content ","
250
251 output_entry ::= "{" output_params_list "}"
252
253 output_params_list ::= output_params
254 | output_params_list "," output_params
255 | output_params_list ","
256
257 output_params ::= output
258 | flush
259 | maxsize
260 | maxver
261 | pattern
262
263 output ::= "output" ":" STRING
264
265 flush ::= "flush" ":" BOOLEAN
266
267 maxsize ::= "maxsize" ":" INTEGER
268
269 maxver ::= "maxver" ":" INTEGER
270
271 pattern ::= "pattern" ":" STRING
BNF Grammar for DHCP-DDNS
This grammar is generated from d2_parser.yy. See The DHCP-DDNS Server for more details.
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 | not_empty_map ","
45
46 list_generic ::= "[" list_content "]"
47
48 list_content ::=
49 | not_empty_list
50
51 not_empty_list ::= value
52 | not_empty_list "," value
53 | not_empty_list ","
54
55 unknown_map_entry ::= STRING ":"
56
57 syntax_map ::= "{" global_object "}"
58
59 global_object ::= "DhcpDdns" ":" "{" dhcpddns_params "}"
60 | global_object_comma
61
62 global_object_comma ::= global_object ","
63
64 sub_dhcpddns ::= "{" dhcpddns_params "}"
65
66 dhcpddns_params ::= dhcpddns_param
67 | dhcpddns_params "," dhcpddns_param
68 | dhcpddns_params ","
69
70 dhcpddns_param ::= ip_address
71 | port
72 | dns_server_timeout
73 | ncr_protocol
74 | ncr_format
75 | forward_ddns
76 | reverse_ddns
77 | tsig_keys
78 | control_socket
79 | control_sockets
80 | hooks_libraries
81 | loggers
82 | user_context
83 | comment
84 | unknown_map_entry
85
86 ip_address ::= "ip-address" ":" STRING
87
88 port ::= "port" ":" INTEGER
89
90 dns_server_timeout ::= "dns-server-timeout" ":" INTEGER
91
92 ncr_protocol ::= "ncr-protocol" ":" ncr_protocol_value
93
94 ncr_protocol_value ::= "UDP"
95 | "TCP"
96
97 ncr_format ::= "ncr-format" ":" "JSON"
98
99 user_context ::= "user-context" ":" map_value
100
101 comment ::= "comment" ":" STRING
102
103 forward_ddns ::= "forward-ddns" ":" "{" ddns_mgr_params "}"
104
105 reverse_ddns ::= "reverse-ddns" ":" "{" ddns_mgr_params "}"
106
107 ddns_mgr_params ::=
108 | not_empty_ddns_mgr_params
109
110 not_empty_ddns_mgr_params ::= ddns_mgr_param
111 | ddns_mgr_params "," ddns_mgr_param
112 | ddns_mgr_params ","
113
114 ddns_mgr_param ::= ddns_domains
115 | unknown_map_entry
116
117 ddns_domains ::= "ddns-domains" ":" "[" ddns_domain_list "]"
118
119 sub_ddns_domains ::= "[" ddns_domain_list "]"
120
121 ddns_domain_list ::=
122 | not_empty_ddns_domain_list
123
124 not_empty_ddns_domain_list ::= ddns_domain
125 | not_empty_ddns_domain_list "," ddns_domain
126 | not_empty_ddns_domain_list ","
127
128 ddns_domain ::= "{" ddns_domain_params "}"
129
130 sub_ddns_domain ::= "{" ddns_domain_params "}"
131
132 ddns_domain_params ::= ddns_domain_param
133 | ddns_domain_params "," ddns_domain_param
134 | ddns_domain_params ","
135
136 ddns_domain_param ::= ddns_domain_name
137 | ddns_key_name
138 | dns_servers
139 | user_context
140 | comment
141 | unknown_map_entry
142
143 ddns_domain_name ::= "name" ":" STRING
144
145 ddns_key_name ::= "key-name" ":" STRING
146
147 dns_servers ::= "dns-servers" ":" "[" dns_server_list "]"
148
149 sub_dns_servers ::= "[" dns_server_list "]"
150
151 dns_server_list ::= dns_server
152 | dns_server_list "," dns_server
153 | dns_server_list ","
154
155 dns_server ::= "{" dns_server_params "}"
156
157 sub_dns_server ::= "{" dns_server_params "}"
158
159 dns_server_params ::= dns_server_param
160 | dns_server_params "," dns_server_param
161 | dns_server_params ","
162
163 dns_server_param ::= dns_server_hostname
164 | dns_server_ip_address
165 | dns_server_port
166 | ddns_key_name
167 | user_context
168 | comment
169 | unknown_map_entry
170
171 dns_server_hostname ::= "hostname" ":" STRING
172
173 dns_server_ip_address ::= "ip-address" ":" STRING
174
175 dns_server_port ::= "port" ":" INTEGER
176
177 tsig_keys ::= "tsig-keys" ":" "[" tsig_keys_list "]"
178
179 sub_tsig_keys ::= "[" tsig_keys_list "]"
180
181 tsig_keys_list ::=
182 | not_empty_tsig_keys_list
183
184 not_empty_tsig_keys_list ::= tsig_key
185 | not_empty_tsig_keys_list "," tsig_key
186 | not_empty_tsig_keys_list ","
187
188 tsig_key ::= "{" tsig_key_params "}"
189
190 sub_tsig_key ::= "{" tsig_key_params "}"
191
192 tsig_key_params ::= tsig_key_param
193 | tsig_key_params "," tsig_key_param
194 | tsig_key_params ","
195
196 tsig_key_param ::= tsig_key_name
197 | tsig_key_algorithm
198 | tsig_key_digest_bits
199 | tsig_key_secret
200 | tsig_key_secret_file
201 | user_context
202 | comment
203 | unknown_map_entry
204
205 tsig_key_name ::= "name" ":" STRING
206
207 tsig_key_algorithm ::= "algorithm" ":" STRING
208
209 tsig_key_digest_bits ::= "digest-bits" ":" INTEGER
210
211 tsig_key_secret ::= "secret" ":" STRING
212
213 tsig_key_secret_file ::= "secret-file" ":" STRING
214
215 control_socket ::= "control-socket" ":" "{" control_socket_params "}"
216
217 control_sockets ::= "control-sockets" ":" "[" control_socket_list "]"
218
219 control_socket_list ::=
220 | not_empty_control_socket_list
221
222 not_empty_control_socket_list ::= control_socket_entry
223 | not_empty_control_socket_list "," control_socket_entry
224 | not_empty_control_socket_list ","
225
226 control_socket_entry ::= "{" control_socket_params "}"
227
228 control_socket_params ::= control_socket_param
229 | control_socket_params "," control_socket_param
230 | control_socket_params ","
231
232 control_socket_param ::= control_socket_type
233 | control_socket_name
234 | control_socket_address
235 | control_socket_port
236 | authentication
237 | trust_anchor
238 | cert_file
239 | key_file
240 | cert_required
241 | user_context
242 | comment
243 | unknown_map_entry
244
245 control_socket_type ::= "socket-type" ":" control_socket_type_value
246
247 control_socket_type_value ::= "unix"
248 | "http"
249 | "https"
250
251 control_socket_name ::= "socket-name" ":" STRING
252
253 control_socket_address ::= "socket-address" ":" STRING
254
255 control_socket_port ::= "socket-port" ":" INTEGER
256
257 trust_anchor ::= "trust-anchor" ":" STRING
258
259 cert_file ::= "cert-file" ":" STRING
260
261 key_file ::= "key-file" ":" STRING
262
263 cert_required ::= "cert-required" ":" BOOLEAN
264
265 authentication ::= "authentication" ":" "{" auth_params "}"
266
267 auth_params ::= auth_param
268 | auth_params "," auth_param
269 | auth_params ","
270
271 auth_param ::= auth_type
272 | realm
273 | directory
274 | clients
275 | comment
276 | user_context
277 | unknown_map_entry
278
279 auth_type ::= "type" ":" auth_type_value
280
281 auth_type_value ::= "basic"
282
283 realm ::= "realm" ":" STRING
284
285 directory ::= "directory" ":" STRING
286
287 clients ::= "clients" ":" "[" clients_list "]"
288
289 clients_list ::=
290 | not_empty_clients_list
291
292 not_empty_clients_list ::= basic_auth
293 | not_empty_clients_list "," basic_auth
294 | not_empty_clients_list ","
295
296 basic_auth ::= "{" clients_params "}"
297
298 clients_params ::= clients_param
299 | clients_params "," clients_param
300 | clients_params ","
301
302 clients_param ::= user
303 | user_file
304 | password
305 | password_file
306 | user_context
307 | comment
308 | unknown_map_entry
309
310 user ::= "user" ":" STRING
311
312 user_file ::= "user-file" ":" STRING
313
314 password ::= "password" ":" STRING
315
316 password_file ::= "password-file" ":" STRING
317
318 hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
319
320 hooks_libraries_list ::=
321 | not_empty_hooks_libraries_list
322
323 not_empty_hooks_libraries_list ::= hooks_library
324 | not_empty_hooks_libraries_list "," hooks_library
325 | not_empty_hooks_libraries_list ","
326
327 hooks_library ::= "{" hooks_params "}"
328
329 sub_hooks_library ::= "{" hooks_params "}"
330
331 hooks_params ::= hooks_param
332 | hooks_params "," hooks_param
333 | hooks_params ","
334 | unknown_map_entry
335
336 hooks_param ::= library
337 | parameters
338
339 library ::= "library" ":" STRING
340
341 parameters ::= "parameters" ":" map_value
342
343 loggers ::= "loggers" ":" "[" loggers_entries "]"
344
345 loggers_entries ::= logger_entry
346 | loggers_entries "," logger_entry
347 | loggers_entries ","
348
349 logger_entry ::= "{" logger_params "}"
350
351 logger_params ::= logger_param
352 | logger_params "," logger_param
353 | logger_params ","
354
355 logger_param ::= name
356 | output_options_list
357 | debuglevel
358 | severity
359 | user_context
360 | comment
361 | unknown_map_entry
362
363 name ::= "name" ":" STRING
364
365 debuglevel ::= "debuglevel" ":" INTEGER
366
367 severity ::= "severity" ":" STRING
368
369 output_options_list ::= "output-options" ":" "[" output_options_list_content "]"
370
371 output_options_list_content ::= output_entry
372 | output_options_list_content "," output_entry
373 | output_options_list_content ","
374
375 output_entry ::= "{" output_params_list "}"
376
377 output_params_list ::= output_params
378 | output_params_list "," output_params
379 | output_params_list ","
380
381 output_params ::= output
382 | flush
383 | maxsize
384 | maxver
385 | pattern
386
387 output ::= "output" ":" STRING
388
389 flush ::= "flush" ":" BOOLEAN
390
391 maxsize ::= "maxsize" ":" INTEGER
392
393 maxver ::= "maxver" ":" INTEGER
394
395 pattern ::= "pattern" ":" STRING
BNF Grammar for the Kea NETCONF Agent
This grammar is generated from netconf_parser.yy. See YANG/NETCONF for more details.
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 | not_empty_map ","
33
34 list_generic ::= "[" list_content "]"
35
36 list_content ::=
37 | not_empty_list
38
39 not_empty_list ::= value
40 | not_empty_list "," value
41 | not_empty_list ","
42
43 unknown_map_entry ::= STRING ":"
44
45 netconf_syntax_map ::= "{" global_object "}"
46
47 global_object ::= "Netconf" ":" "{" global_params "}"
48 | global_object_comma
49
50 global_object_comma ::= global_object ","
51
52 global_params ::=
53 | not_empty_global_params
54
55 not_empty_global_params ::= global_param
56 | not_empty_global_params "," global_param
57 | not_empty_global_params ","
58
59 global_param ::= boot_update
60 | subscribe_changes
61 | validate_changes
62 | managed_servers
63 | hooks_libraries
64 | loggers
65 | user_context
66 | comment
67 | unknown_map_entry
68
69 boot_update ::= "boot-update" ":" BOOLEAN
70
71 subscribe_changes ::= "subscribe-changes" ":" BOOLEAN
72
73 validate_changes ::= "validate-changes" ":" BOOLEAN
74
75 user_context ::= "user-context" ":" map_value
76
77 comment ::= "comment" ":" STRING
78
79 hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
80
81 hooks_libraries_list ::=
82 | not_empty_hooks_libraries_list
83
84 not_empty_hooks_libraries_list ::= hooks_library
85 | not_empty_hooks_libraries_list "," hooks_library
86 | not_empty_hooks_libraries_list ","
87
88 hooks_library ::= "{" hooks_params "}"
89
90 hooks_params ::= hooks_param
91 | hooks_params "," hooks_param
92 | hooks_params ","
93 | unknown_map_entry
94
95 hooks_param ::= library
96 | parameters
97
98 library ::= "library" ":" STRING
99
100 parameters ::= "parameters" ":" map_value
101
102 managed_servers ::= "managed-servers" ":" "{" servers_entries "}"
103
104 servers_entries ::=
105 | not_empty_servers_entries
106
107 not_empty_servers_entries ::= server_entry
108 | not_empty_servers_entries "," server_entry
109 | not_empty_servers_entries ","
110
111 server_entry ::= dhcp4_server
112 | dhcp6_server
113 | d2_server
114 | ca_server
115 | unknown_map_entry
116
117 dhcp4_server ::= "dhcp4" ":" "{" managed_server_params "}"
118
119 dhcp6_server ::= "dhcp6" ":" "{" managed_server_params "}"
120
121 d2_server ::= "d2" ":" "{" managed_server_params "}"
122
123 ca_server ::= "ca" ":" "{" managed_server_params "}"
124
125 managed_server_params ::= managed_server_param
126 | managed_server_params "," managed_server_param
127 | managed_server_params ","
128
129 managed_server_param ::= model
130 | boot_update
131 | subscribe_changes
132 | validate_changes
133 | control_socket
134 | user_context
135 | comment
136 | unknown_map_entry
137
138 model ::= "model" ":" STRING
139
140 control_socket ::= "control-socket" ":" "{" control_socket_params "}"
141
142 control_socket_params ::= control_socket_param
143 | control_socket_params "," control_socket_param
144 | control_socket_params ","
145
146 control_socket_param ::= socket_type
147 | socket_name
148 | socket_url
149 | user_context
150 | comment
151 | unknown_map_entry
152
153 socket_type ::= "socket-type" ":" socket_type_value
154
155 socket_type_value ::= "unix"
156 | "http"
157 | "stdout"
158
159 socket_name ::= "socket-name" ":" STRING
160
161 socket_url ::= "socket-url" ":" STRING
162
163 loggers ::= "loggers" ":" "[" loggers_entries "]"
164
165 loggers_entries ::= logger_entry
166 | loggers_entries "," logger_entry
167 | loggers_entries ","
168
169 logger_entry ::= "{" logger_params "}"
170
171 logger_params ::= logger_param
172 | logger_params "," logger_param
173 | logger_params ","
174
175 logger_param ::= name
176 | output_options_list
177 | debuglevel
178 | severity
179 | user_context
180 | comment
181 | unknown_map_entry
182
183 name ::= "name" ":" STRING
184
185 debuglevel ::= "debuglevel" ":" INTEGER
186
187 severity ::= "severity" ":" STRING
188
189 output_options_list ::= "output-options" ":" "[" output_options_list_content "]"
190
191 output_options_list_content ::= output_entry
192 | output_options_list_content "," output_entry
193 | output_options_list_content ","
194
195 output_entry ::= "{" output_params_list "}"
196
197 output_params_list ::= output_params
198 | output_params_list "," output_params
199 | output_params_list ","
200
201 output_params ::= output
202 | flush
203 | maxsize
204 | maxver
205 | pattern
206
207 output ::= "output" ":" STRING
208
209 flush ::= "flush" ":" BOOLEAN
210
211 maxsize ::= "maxsize" ":" INTEGER
212
213 maxver ::= "maxver" ":" INTEGER
214
215 pattern ::= "pattern" ":" STRING