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