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