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