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