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