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