Kea Configuration File Syntax (BNF)

Kea consists of several daemons, each with its own configuration syntax. The following sections provide a complete syntax of all possible parameters, written in Backus-Naur Form (BNF). See this Wikipedia article on BNF for more information.

BNF Grammar for DHCPv4

This grammar is generated from dhcp4_parser.yy. See The DHCPv4 Server for more details.

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

BNF Grammar for DHCPv6

This grammar is generated from dhcp6_parser.yy. See The DHCPv6 Server for more details.

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

BNF Grammar for DHCP-DDNS

This grammar is generated from d2_parser.yy. See The DHCP-DDNS Server for more details.

  1  Grammar
  2
  3  $accept ::= start EOF
  4
  5  start ::= TOPLEVEL_JSON sub_json
  6
  7  start ::= TOPLEVEL_DHCPDDNS syntax_map
  8
  9  start ::= SUB_DHCPDDNS sub_dhcpddns
 10
 11  start ::= SUB_TSIG_KEY sub_tsig_key
 12
 13  start ::= SUB_TSIG_KEYS sub_tsig_keys
 14
 15  start ::= SUB_DDNS_DOMAIN sub_ddns_domain
 16
 17  start ::= SUB_DDNS_DOMAINS sub_ddns_domains
 18
 19  start ::= SUB_DNS_SERVER sub_dns_server
 20
 21  start ::= SUB_DNS_SERVERS sub_dns_servers
 22
 23  start ::= SUB_HOOKS_LIBRARY sub_hooks_library
 24
 25  value ::= INTEGER
 26       | FLOAT
 27       | BOOLEAN
 28       | STRING
 29       | NULL
 30       | map2
 31       | list_generic
 32
 33  sub_json ::= value
 34
 35  map2 ::= "{" map_content "}"
 36
 37  map_value ::= map2
 38
 39  map_content ::=
 40             | not_empty_map
 41
 42  not_empty_map ::= STRING ":" value
 43               | not_empty_map "," STRING ":" value
 44               | not_empty_map ","
 45
 46  list_generic ::= "[" list_content "]"
 47
 48  list_content ::=
 49              | not_empty_list
 50
 51  not_empty_list ::= value
 52                | not_empty_list "," value
 53                | not_empty_list ","
 54
 55  unknown_map_entry ::= STRING ":"
 56
 57  syntax_map ::= "{" global_object "}"
 58
 59  global_object ::= "DhcpDdns" ":" "{" dhcpddns_params "}"
 60               | global_object_comma
 61
 62  global_object_comma ::= global_object ","
 63
 64  sub_dhcpddns ::= "{" dhcpddns_params "}"
 65
 66  dhcpddns_params ::= dhcpddns_param
 67                 | dhcpddns_params "," dhcpddns_param
 68                 | dhcpddns_params ","
 69
 70  dhcpddns_param ::= ip_address
 71                | port
 72                | dns_server_timeout
 73                | ncr_protocol
 74                | ncr_format
 75                | forward_ddns
 76                | reverse_ddns
 77                | tsig_keys
 78                | control_sockets
 79                | hooks_libraries
 80                | loggers
 81                | user_context
 82                | comment
 83                | unknown_map_entry
 84
 85  ip_address ::= "ip-address" ":" STRING
 86
 87  port ::= "port" ":" INTEGER
 88
 89  dns_server_timeout ::= "dns-server-timeout" ":" INTEGER
 90
 91  ncr_protocol ::= "ncr-protocol" ":" ncr_protocol_value
 92
 93  ncr_protocol_value ::= "UDP"
 94                    | "TCP"
 95
 96  ncr_format ::= "ncr-format" ":" "JSON"
 97
 98  user_context ::= "user-context" ":" map_value
 99
100  comment ::= "comment" ":" STRING
101
102  forward_ddns ::= "forward-ddns" ":" "{" ddns_mgr_params "}"
103
104  reverse_ddns ::= "reverse-ddns" ":" "{" ddns_mgr_params "}"
105
106  ddns_mgr_params ::=
107                 | not_empty_ddns_mgr_params
108
109  not_empty_ddns_mgr_params ::= ddns_mgr_param
110                           | ddns_mgr_params "," ddns_mgr_param
111                           | ddns_mgr_params ","
112
113  ddns_mgr_param ::= ddns_domains
114                | unknown_map_entry
115
116  ddns_domains ::= "ddns-domains" ":" "[" ddns_domain_list "]"
117
118  sub_ddns_domains ::= "[" ddns_domain_list "]"
119
120  ddns_domain_list ::=
121                  | not_empty_ddns_domain_list
122
123  not_empty_ddns_domain_list ::= ddns_domain
124                            | not_empty_ddns_domain_list "," ddns_domain
125                            | not_empty_ddns_domain_list ","
126
127  ddns_domain ::= "{" ddns_domain_params "}"
128
129  sub_ddns_domain ::= "{" ddns_domain_params "}"
130
131  ddns_domain_params ::= ddns_domain_param
132                    | ddns_domain_params "," ddns_domain_param
133                    | ddns_domain_params ","
134
135  ddns_domain_param ::= ddns_domain_name
136                   | ddns_key_name
137                   | dns_servers
138                   | user_context
139                   | comment
140                   | unknown_map_entry
141
142  ddns_domain_name ::= "name" ":" STRING
143
144  ddns_key_name ::= "key-name" ":" STRING
145
146  dns_servers ::= "dns-servers" ":" "[" dns_server_list "]"
147
148  sub_dns_servers ::= "[" dns_server_list "]"
149
150  dns_server_list ::= dns_server
151                 | dns_server_list "," dns_server
152                 | dns_server_list ","
153
154  dns_server ::= "{" dns_server_params "}"
155
156  sub_dns_server ::= "{" dns_server_params "}"
157
158  dns_server_params ::= dns_server_param
159                   | dns_server_params "," dns_server_param
160                   | dns_server_params ","
161
162  dns_server_param ::= dns_server_hostname
163                  | dns_server_ip_address
164                  | dns_server_port
165                  | ddns_key_name
166                  | user_context
167                  | comment
168                  | unknown_map_entry
169
170  dns_server_hostname ::= "hostname" ":" STRING
171
172  dns_server_ip_address ::= "ip-address" ":" STRING
173
174  dns_server_port ::= "port" ":" INTEGER
175
176  tsig_keys ::= "tsig-keys" ":" "[" tsig_keys_list "]"
177
178  sub_tsig_keys ::= "[" tsig_keys_list "]"
179
180  tsig_keys_list ::=
181                | not_empty_tsig_keys_list
182
183  not_empty_tsig_keys_list ::= tsig_key
184                          | not_empty_tsig_keys_list "," tsig_key
185                          | not_empty_tsig_keys_list ","
186
187  tsig_key ::= "{" tsig_key_params "}"
188
189  sub_tsig_key ::= "{" tsig_key_params "}"
190
191  tsig_key_params ::= tsig_key_param
192                 | tsig_key_params "," tsig_key_param
193                 | tsig_key_params ","
194
195  tsig_key_param ::= tsig_key_name
196                | tsig_key_algorithm
197                | tsig_key_digest_bits
198                | tsig_key_secret
199                | tsig_key_secret_file
200                | user_context
201                | comment
202                | unknown_map_entry
203
204  tsig_key_name ::= "name" ":" STRING
205
206  tsig_key_algorithm ::= "algorithm" ":" STRING
207
208  tsig_key_digest_bits ::= "digest-bits" ":" INTEGER
209
210  tsig_key_secret ::= "secret" ":" STRING
211
212  tsig_key_secret_file ::= "secret-file" ":" STRING
213
214  control_sockets ::= "control-sockets" ":" "[" control_socket_list "]"
215
216  control_socket_list ::=
217                     | not_empty_control_socket_list
218
219  not_empty_control_socket_list ::= control_socket_entry
220                               | not_empty_control_socket_list "," control_socket_entry
221                               | not_empty_control_socket_list ","
222
223  control_socket_entry ::= "{" control_socket_params "}"
224
225  control_socket_params ::= control_socket_param
226                       | control_socket_params "," control_socket_param
227                       | control_socket_params ","
228
229  control_socket_param ::= control_socket_type
230                      | control_socket_name
231                      | control_socket_address
232                      | control_socket_port
233                      | authentication
234                      | trust_anchor
235                      | cert_file
236                      | key_file
237                      | cert_required
238                      | user_context
239                      | comment
240                      | unknown_map_entry
241
242  control_socket_type ::= "socket-type" ":" control_socket_type_value
243
244  control_socket_type_value ::= "unix"
245                           | "http"
246                           | "https"
247
248  control_socket_name ::= "socket-name" ":" STRING
249
250  control_socket_address ::= "socket-address" ":" STRING
251
252  control_socket_port ::= "socket-port" ":" INTEGER
253
254  trust_anchor ::= "trust-anchor" ":" STRING
255
256  cert_file ::= "cert-file" ":" STRING
257
258  key_file ::= "key-file" ":" STRING
259
260  cert_required ::= "cert-required" ":" BOOLEAN
261
262  authentication ::= "authentication" ":" "{" auth_params "}"
263
264  auth_params ::= auth_param
265             | auth_params "," auth_param
266             | auth_params ","
267
268  auth_param ::= auth_type
269            | realm
270            | directory
271            | clients
272            | comment
273            | user_context
274            | unknown_map_entry
275
276  auth_type ::= "type" ":" auth_type_value
277
278  auth_type_value ::= "basic"
279
280  realm ::= "realm" ":" STRING
281
282  directory ::= "directory" ":" STRING
283
284  clients ::= "clients" ":" "[" clients_list "]"
285
286  clients_list ::=
287              | not_empty_clients_list
288
289  not_empty_clients_list ::= basic_auth
290                        | not_empty_clients_list "," basic_auth
291                        | not_empty_clients_list ","
292
293  basic_auth ::= "{" clients_params "}"
294
295  clients_params ::= clients_param
296                | clients_params "," clients_param
297                | clients_params ","
298
299  clients_param ::= user
300               | user_file
301               | password
302               | password_file
303               | user_context
304               | comment
305               | unknown_map_entry
306
307  user ::= "user" ":" STRING
308
309  user_file ::= "user-file" ":" STRING
310
311  password ::= "password" ":" STRING
312
313  password_file ::= "password-file" ":" STRING
314
315  hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
316
317  hooks_libraries_list ::=
318                      | not_empty_hooks_libraries_list
319
320  not_empty_hooks_libraries_list ::= hooks_library
321                                | not_empty_hooks_libraries_list "," hooks_library
322                                | not_empty_hooks_libraries_list ","
323
324  hooks_library ::= "{" hooks_params "}"
325
326  sub_hooks_library ::= "{" hooks_params "}"
327
328  hooks_params ::= hooks_param
329              | hooks_params "," hooks_param
330              | hooks_params ","
331              | unknown_map_entry
332
333  hooks_param ::= library
334             | parameters
335
336  library ::= "library" ":" STRING
337
338  parameters ::= "parameters" ":" map_value
339
340  loggers ::= "loggers" ":" "[" loggers_entries "]"
341
342  loggers_entries ::= logger_entry
343                 | loggers_entries "," logger_entry
344                 | loggers_entries ","
345
346  logger_entry ::= "{" logger_params "}"
347
348  logger_params ::= logger_param
349               | logger_params "," logger_param
350               | logger_params ","
351
352  logger_param ::= name
353              | output_options_list
354              | debuglevel
355              | severity
356              | user_context
357              | comment
358              | unknown_map_entry
359
360  name ::= "name" ":" STRING
361
362  debuglevel ::= "debuglevel" ":" INTEGER
363
364  severity ::= "severity" ":" STRING
365
366  output_options_list ::= "output-options" ":" "[" output_options_list_content "]"
367
368  output_options_list_content ::= output_entry
369                             | output_options_list_content "," output_entry
370                             | output_options_list_content ","
371
372  output_entry ::= "{" output_params_list "}"
373
374  output_params_list ::= output_params
375                    | output_params_list "," output_params
376                    | output_params_list ","
377
378  output_params ::= output
379               | flush
380               | maxsize
381               | maxver
382               | pattern
383
384  output ::= "output" ":" STRING
385
386  flush ::= "flush" ":" BOOLEAN
387
388  maxsize ::= "maxsize" ":" INTEGER
389
390  maxver ::= "maxver" ":" INTEGER
391
392  pattern ::= "pattern" ":" STRING

BNF Grammar for the Kea NETCONF Agent

This grammar is generated from netconf_parser.yy. See YANG/NETCONF for more details.

  1  Grammar
  2
  3  $accept ::= start EOF
  4
  5  start ::= START_JSON json
  6
  7  start ::= START_NETCONF netconf_syntax_map
  8
  9  start ::= START_SUB_NETCONF sub_netconf
 10
 11  sub_netconf ::= "{" global_params "}"
 12
 13  json ::= value
 14
 15  value ::= INTEGER
 16       | FLOAT
 17       | BOOLEAN
 18       | STRING
 19       | NULL
 20       | map
 21       | list_generic
 22
 23  map ::= "{" map_content "}"
 24
 25  map_value ::= map
 26
 27  map_content ::=
 28             | not_empty_map
 29
 30  not_empty_map ::= STRING ":" value
 31               | not_empty_map "," STRING ":" value
 32               | not_empty_map ","
 33
 34  list_generic ::= "[" list_content "]"
 35
 36  list_content ::=
 37              | not_empty_list
 38
 39  not_empty_list ::= value
 40                | not_empty_list "," value
 41                | not_empty_list ","
 42
 43  unknown_map_entry ::= STRING ":"
 44
 45  netconf_syntax_map ::= "{" global_object "}"
 46
 47  global_object ::= "Netconf" ":" "{" global_params "}"
 48               | global_object_comma
 49
 50  global_object_comma ::= global_object ","
 51
 52  global_params ::=
 53               | not_empty_global_params
 54
 55  not_empty_global_params ::= global_param
 56                         | not_empty_global_params "," global_param
 57                         | not_empty_global_params ","
 58
 59  global_param ::= boot_update
 60              | subscribe_changes
 61              | validate_changes
 62              | managed_servers
 63              | hooks_libraries
 64              | loggers
 65              | user_context
 66              | comment
 67              | unknown_map_entry
 68
 69  boot_update ::= "boot-update" ":" BOOLEAN
 70
 71  subscribe_changes ::= "subscribe-changes" ":" BOOLEAN
 72
 73  validate_changes ::= "validate-changes" ":" BOOLEAN
 74
 75  user_context ::= "user-context" ":" map_value
 76
 77  comment ::= "comment" ":" STRING
 78
 79  hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
 80
 81  hooks_libraries_list ::=
 82                      | not_empty_hooks_libraries_list
 83
 84  not_empty_hooks_libraries_list ::= hooks_library
 85                                | not_empty_hooks_libraries_list "," hooks_library
 86                                | not_empty_hooks_libraries_list ","
 87
 88  hooks_library ::= "{" hooks_params "}"
 89
 90  hooks_params ::= hooks_param
 91              | hooks_params "," hooks_param
 92              | hooks_params ","
 93              | unknown_map_entry
 94
 95  hooks_param ::= library
 96             | parameters
 97
 98  library ::= "library" ":" STRING
 99
100  parameters ::= "parameters" ":" map_value
101
102  managed_servers ::= "managed-servers" ":" "{" servers_entries "}"
103
104  servers_entries ::=
105                 | not_empty_servers_entries
106
107  not_empty_servers_entries ::= server_entry
108                           | not_empty_servers_entries "," server_entry
109                           | not_empty_servers_entries ","
110
111  server_entry ::= dhcp4_server
112              | dhcp6_server
113              | d2_server
114              | unknown_map_entry
115
116  dhcp4_server ::= "dhcp4" ":" "{" managed_server_params "}"
117
118  dhcp6_server ::= "dhcp6" ":" "{" managed_server_params "}"
119
120  d2_server ::= "d2" ":" "{" managed_server_params "}"
121
122  managed_server_params ::= managed_server_param
123                       | managed_server_params "," managed_server_param
124                       | managed_server_params ","
125
126  managed_server_param ::= model
127                      | boot_update
128                      | subscribe_changes
129                      | validate_changes
130                      | control_socket
131                      | user_context
132                      | comment
133                      | unknown_map_entry
134
135  model ::= "model" ":" STRING
136
137  control_socket ::= "control-socket" ":" "{" control_socket_params "}"
138
139  control_socket_params ::= control_socket_param
140                       | control_socket_params "," control_socket_param
141                       | control_socket_params ","
142
143  control_socket_param ::= socket_type
144                      | socket_name
145                      | socket_url
146                      | user_context
147                      | comment
148                      | unknown_map_entry
149
150  socket_type ::= "socket-type" ":" socket_type_value
151
152  socket_type_value ::= "unix"
153                   | "http"
154                   | "stdout"
155
156  socket_name ::= "socket-name" ":" STRING
157
158  socket_url ::= "socket-url" ":" STRING
159
160  loggers ::= "loggers" ":" "[" loggers_entries "]"
161
162  loggers_entries ::= logger_entry
163                 | loggers_entries "," logger_entry
164                 | loggers_entries ","
165
166  logger_entry ::= "{" logger_params "}"
167
168  logger_params ::= logger_param
169               | logger_params "," logger_param
170               | logger_params ","
171
172  logger_param ::= name
173              | output_options_list
174              | debuglevel
175              | severity
176              | user_context
177              | comment
178              | unknown_map_entry
179
180  name ::= "name" ":" STRING
181
182  debuglevel ::= "debuglevel" ":" INTEGER
183
184  severity ::= "severity" ":" STRING
185
186  output_options_list ::= "output-options" ":" "[" output_options_list_content "]"
187
188  output_options_list_content ::= output_entry
189                             | output_options_list_content "," output_entry
190                             | output_options_list_content ","
191
192  output_entry ::= "{" output_params_list "}"
193
194  output_params_list ::= output_params
195                    | output_params_list "," output_params
196                    | output_params_list ","
197
198  output_params ::= output
199               | flush
200               | maxsize
201               | maxver
202               | pattern
203
204  output ::= "output" ":" STRING
205
206  flush ::= "flush" ":" BOOLEAN
207
208  maxsize ::= "maxsize" ":" INTEGER
209
210  maxver ::= "maxver" ":" INTEGER
211
212  pattern ::= "pattern" ":" STRING