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