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