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