Kea Configuration File Syntax (BNF)

Kea consists of several daemons, each with its own configuration syntax. The following sections provide a complete syntax of all possible parameters, written as Backus-Naur Form (BNF). See wikipedia article on BNF for background and explanation.

BNF Grammar for DHCPv4

Grammar generated on 2022-07-21 11:07. See Chapter The DHCPv4 Server for an explanation.

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

BNF Grammar for DHCPv6

Grammar generated on 2022-07-21 11:07. See Chapter The DHCPv6 Server for an explanation.

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

BNF Grammar for Control Agent

Grammar generated on 2022-07-21 11:07. See Chapter The Kea Control Agent for an explanation.

  1  Grammar
  2
  3  $accept ::= start EOF
  4
  5  start ::= START_JSON json
  6
  7  start ::= START_AGENT agent_syntax_map
  8
  9  start ::= START_SUB_AGENT sub_agent
 10
 11  sub_agent ::= "{" global_params "}"
 12
 13  json ::= value
 14
 15  value ::= INTEGER
 16       | FLOAT
 17       | BOOLEAN
 18       | STRING
 19       | NULL
 20       | map
 21       | list_generic
 22
 23  map ::= "{" map_content "}"
 24
 25  map_value ::= map
 26
 27  map_content ::=
 28             | not_empty_map
 29
 30  not_empty_map ::= STRING ":" value
 31               | not_empty_map "," STRING ":" value
 32
 33  list_generic ::= "[" list_content "]"
 34
 35  list_content ::=
 36              | not_empty_list
 37
 38  not_empty_list ::= value
 39                | not_empty_list "," value
 40
 41  unknown_map_entry ::= STRING ":"
 42
 43  agent_syntax_map ::= "{" global_object "}"
 44
 45  global_object ::= "Control-agent" ":" "{" global_params "}"
 46
 47  global_params ::= global_param
 48               | global_params "," global_param
 49
 50  global_param ::= http_host
 51              | http_port
 52              | trust_anchor
 53              | cert_file
 54              | key_file
 55              | cert_required
 56              | authentication
 57              | control_sockets
 58              | hooks_libraries
 59              | loggers
 60              | user_context
 61              | comment
 62              | unknown_map_entry
 63
 64  http_host ::= "http-host" ":" STRING
 65
 66  http_port ::= "http-port" ":" INTEGER
 67
 68  trust_anchor ::= "trust-anchor" ":" STRING
 69
 70  cert_file ::= "cert-file" ":" STRING
 71
 72  key_file ::= "key-file" ":" STRING
 73
 74  cert_required ::= "cert-required" ":" BOOLEAN
 75
 76  user_context ::= "user-context" ":" map_value
 77
 78  comment ::= "comment" ":" STRING
 79
 80  hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
 81
 82  hooks_libraries_list ::=
 83                      | not_empty_hooks_libraries_list
 84
 85  not_empty_hooks_libraries_list ::= hooks_library
 86                                | not_empty_hooks_libraries_list "," hooks_library
 87
 88  hooks_library ::= "{" hooks_params "}"
 89
 90  hooks_params ::= hooks_param
 91              | hooks_params "," hooks_param
 92              | unknown_map_entry
 93
 94  hooks_param ::= library
 95             | parameters
 96
 97  library ::= "library" ":" STRING
 98
 99  parameters ::= "parameters" ":" map_value
100
101  control_sockets ::= "control-sockets" ":" "{" control_sockets_params "}"
102
103  control_sockets_params ::= control_socket
104                        | control_sockets_params "," control_socket
105
106  control_socket ::= dhcp4_server_socket
107                | dhcp6_server_socket
108                | d2_server_socket
109                | unknown_map_entry
110
111  dhcp4_server_socket ::= "dhcp4" ":" "{" control_socket_params "}"
112
113  dhcp6_server_socket ::= "dhcp6" ":" "{" control_socket_params "}"
114
115  d2_server_socket ::= "d2" ":" "{" control_socket_params "}"
116
117  control_socket_params ::= control_socket_param
118                       | control_socket_params "," control_socket_param
119
120  control_socket_param ::= socket_name
121                      | socket_type
122                      | user_context
123                      | comment
124                      | unknown_map_entry
125
126  socket_name ::= "socket-name" ":" STRING
127
128  socket_type ::= "socket-type" ":" socket_type_value
129
130  socket_type_value ::= "unix"
131
132  authentication ::= "authentication" ":" "{" auth_params "}"
133
134  auth_params ::= auth_param
135             | auth_params "," auth_param
136
137  auth_param ::= auth_type
138            | realm
139            | clients
140            | comment
141            | user_context
142            | unknown_map_entry
143
144  auth_type ::= "type" ":" auth_type_value
145
146  auth_type_value ::= "basic"
147
148  realm ::= "realm" ":" STRING
149
150  clients ::= "clients" ":" "[" clients_list "]"
151
152  clients_list ::=
153              | not_empty_clients_list
154
155  not_empty_clients_list ::= basic_auth
156                        | not_empty_clients_list "," basic_auth
157
158  basic_auth ::= "{" clients_params "}"
159
160  clients_params ::= clients_param
161                | clients_params "," clients_param
162
163  clients_param ::= user
164               | password
165               | user_context
166               | comment
167               | unknown_map_entry
168
169  user ::= "user" ":" STRING
170
171  password ::= "password" ":" STRING
172
173  loggers ::= "loggers" ":" "[" loggers_entries "]"
174
175  loggers_entries ::= logger_entry
176                 | loggers_entries "," logger_entry
177
178  logger_entry ::= "{" logger_params "}"
179
180  logger_params ::= logger_param
181               | logger_params "," logger_param
182
183  logger_param ::= name
184              | output_options_list
185              | debuglevel
186              | severity
187              | user_context
188              | comment
189              | unknown_map_entry
190
191  name ::= "name" ":" STRING
192
193  debuglevel ::= "debuglevel" ":" INTEGER
194
195  severity ::= "severity" ":" STRING
196
197  output_options_list ::= "output_options" ":" "[" output_options_list_content "]"
198
199  output_options_list_content ::= output_entry
200                             | output_options_list_content "," output_entry
201
202  output_entry ::= "{" output_params_list "}"
203
204  output_params_list ::= output_params
205                    | output_params_list "," output_params
206
207  output_params ::= output
208               | flush
209               | maxsize
210               | maxver
211               | pattern
212
213  output ::= "output" ":" STRING
214
215  flush ::= "flush" ":" BOOLEAN
216
217  maxsize ::= "maxsize" ":" INTEGER
218
219  maxver ::= "maxver" ":" INTEGER
220
221  pattern ::= "pattern" ":" STRING

BNF Grammar for DHCP-DDNS

Grammar generated on 2022-07-21 11:07. See Chapter The DHCP-DDNS Server for an explanation.

  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
 45  list_generic ::= "[" list_content "]"
 46
 47  list_content ::=
 48              | not_empty_list
 49
 50  not_empty_list ::= value
 51                | not_empty_list "," value
 52
 53  unknown_map_entry ::= STRING ":"
 54
 55  syntax_map ::= "{" global_object "}"
 56
 57  global_object ::= "DhcpDdns" ":" "{" dhcpddns_params "}"
 58
 59  sub_dhcpddns ::= "{" dhcpddns_params "}"
 60
 61  dhcpddns_params ::= dhcpddns_param
 62                 | dhcpddns_params "," dhcpddns_param
 63
 64  dhcpddns_param ::= ip_address
 65                | port
 66                | dns_server_timeout
 67                | ncr_protocol
 68                | ncr_format
 69                | forward_ddns
 70                | reverse_ddns
 71                | tsig_keys
 72                | control_socket
 73                | hooks_libraries
 74                | loggers
 75                | user_context
 76                | comment
 77                | unknown_map_entry
 78
 79  ip_address ::= "ip-address" ":" STRING
 80
 81  port ::= "port" ":" INTEGER
 82
 83  dns_server_timeout ::= "dns-server-timeout" ":" INTEGER
 84
 85  ncr_protocol ::= "ncr-protocol" ":" ncr_protocol_value
 86
 87  ncr_protocol_value ::= "UDP"
 88                    | "TCP"
 89
 90  ncr_format ::= "ncr-format" ":" "JSON"
 91
 92  user_context ::= "user-context" ":" map_value
 93
 94  comment ::= "comment" ":" STRING
 95
 96  forward_ddns ::= "forward-ddns" ":" "{" ddns_mgr_params "}"
 97
 98  reverse_ddns ::= "reverse-ddns" ":" "{" ddns_mgr_params "}"
 99
100  ddns_mgr_params ::=
101                 | not_empty_ddns_mgr_params
102
103  not_empty_ddns_mgr_params ::= ddns_mgr_param
104                           | ddns_mgr_params "," ddns_mgr_param
105
106  ddns_mgr_param ::= ddns_domains
107                | unknown_map_entry
108
109  ddns_domains ::= "ddns-domains" ":" "[" ddns_domain_list "]"
110
111  sub_ddns_domains ::= "[" ddns_domain_list "]"
112
113  ddns_domain_list ::=
114                  | not_empty_ddns_domain_list
115
116  not_empty_ddns_domain_list ::= ddns_domain
117                            | not_empty_ddns_domain_list "," ddns_domain
118
119  ddns_domain ::= "{" ddns_domain_params "}"
120
121  sub_ddns_domain ::= "{" ddns_domain_params "}"
122
123  ddns_domain_params ::= ddns_domain_param
124                    | ddns_domain_params "," ddns_domain_param
125
126  ddns_domain_param ::= ddns_domain_name
127                   | ddns_key_name
128                   | dns_servers
129                   | user_context
130                   | comment
131                   | unknown_map_entry
132
133  ddns_domain_name ::= "name" ":" STRING
134
135  ddns_key_name ::= "key-name" ":" STRING
136
137  dns_servers ::= "dns-servers" ":" "[" dns_server_list "]"
138
139  sub_dns_servers ::= "[" dns_server_list "]"
140
141  dns_server_list ::= dns_server
142                 | dns_server_list "," dns_server
143
144  dns_server ::= "{" dns_server_params "}"
145
146  sub_dns_server ::= "{" dns_server_params "}"
147
148  dns_server_params ::= dns_server_param
149                   | dns_server_params "," dns_server_param
150
151  dns_server_param ::= dns_server_hostname
152                  | dns_server_ip_address
153                  | dns_server_port
154                  | ddns_key_name
155                  | user_context
156                  | comment
157                  | unknown_map_entry
158
159  dns_server_hostname ::= "hostname" ":" STRING
160
161  dns_server_ip_address ::= "ip-address" ":" STRING
162
163  dns_server_port ::= "port" ":" INTEGER
164
165  tsig_keys ::= "tsig-keys" ":" "[" tsig_keys_list "]"
166
167  sub_tsig_keys ::= "[" tsig_keys_list "]"
168
169  tsig_keys_list ::=
170                | not_empty_tsig_keys_list
171
172  not_empty_tsig_keys_list ::= tsig_key
173                          | not_empty_tsig_keys_list "," tsig_key
174
175  tsig_key ::= "{" tsig_key_params "}"
176
177  sub_tsig_key ::= "{" tsig_key_params "}"
178
179  tsig_key_params ::= tsig_key_param
180                 | tsig_key_params "," tsig_key_param
181
182  tsig_key_param ::= tsig_key_name
183                | tsig_key_algorithm
184                | tsig_key_digest_bits
185                | tsig_key_secret
186                | user_context
187                | comment
188                | unknown_map_entry
189
190  tsig_key_name ::= "name" ":" STRING
191
192  tsig_key_algorithm ::= "algorithm" ":" STRING
193
194  tsig_key_digest_bits ::= "digest-bits" ":" INTEGER
195
196  tsig_key_secret ::= "secret" ":" STRING
197
198  control_socket ::= "control-socket" ":" "{" control_socket_params "}"
199
200  control_socket_params ::= control_socket_param
201                       | control_socket_params "," control_socket_param
202
203  control_socket_param ::= control_socket_type
204                      | control_socket_name
205                      | user_context
206                      | comment
207                      | unknown_map_entry
208
209  control_socket_type ::= "socket-type" ":" STRING
210
211  control_socket_name ::= "socket-name" ":" STRING
212
213  hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
214
215  hooks_libraries_list ::=
216                      | not_empty_hooks_libraries_list
217
218  not_empty_hooks_libraries_list ::= hooks_library
219                                | not_empty_hooks_libraries_list "," hooks_library
220
221  hooks_library ::= "{" hooks_params "}"
222
223  sub_hooks_library ::= "{" hooks_params "}"
224
225  hooks_params ::= hooks_param
226              | hooks_params "," hooks_param
227              | unknown_map_entry
228
229  hooks_param ::= library
230             | parameters
231
232  library ::= "library" ":" STRING
233
234  parameters ::= "parameters" ":" map_value
235
236  loggers ::= "loggers" ":" "[" loggers_entries "]"
237
238  loggers_entries ::= logger_entry
239                 | loggers_entries "," logger_entry
240
241  logger_entry ::= "{" logger_params "}"
242
243  logger_params ::= logger_param
244               | logger_params "," logger_param
245
246  logger_param ::= name
247              | output_options_list
248              | debuglevel
249              | severity
250              | user_context
251              | comment
252              | unknown_map_entry
253
254  name ::= "name" ":" STRING
255
256  debuglevel ::= "debuglevel" ":" INTEGER
257
258  severity ::= "severity" ":" STRING
259
260  output_options_list ::= "output_options" ":" "[" output_options_list_content "]"
261
262  output_options_list_content ::= output_entry
263                             | output_options_list_content "," output_entry
264
265  output_entry ::= "{" output_params_list "}"
266
267  output_params_list ::= output_params
268                    | output_params_list "," output_params
269
270  output_params ::= output
271               | flush
272               | maxsize
273               | maxver
274               | pattern
275
276  output ::= "output" ":" STRING
277
278  flush ::= "flush" ":" BOOLEAN
279
280  maxsize ::= "maxsize" ":" INTEGER
281
282  maxver ::= "maxver" ":" INTEGER
283
284  pattern ::= "pattern" ":" STRING

BNF Grammar for Kea-netconf

Grammar generated on 2022-07-21 11:07. See Chapter YANG/NETCONF for an explanation.

  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
 33  list_generic ::= "[" list_content "]"
 34
 35  list_content ::=
 36              | not_empty_list
 37
 38  not_empty_list ::= value
 39                | not_empty_list "," value
 40
 41  unknown_map_entry ::= STRING ":"
 42
 43  netconf_syntax_map ::= "{" global_object "}"
 44
 45  global_object ::= "Netconf" ":" "{" global_params "}"
 46
 47  global_params ::=
 48               | not_empty_global_params
 49
 50  not_empty_global_params ::= global_param
 51                         | not_empty_global_params "," global_param
 52
 53  global_param ::= boot_update
 54              | subscribe_changes
 55              | validate_changes
 56              | managed_servers
 57              | hooks_libraries
 58              | loggers
 59              | user_context
 60              | comment
 61              | unknown_map_entry
 62
 63  boot_update ::= "boot-update" ":" BOOLEAN
 64
 65  subscribe_changes ::= "subscribe-changes" ":" BOOLEAN
 66
 67  validate_changes ::= "validate-changes" ":" BOOLEAN
 68
 69  user_context ::= "user-context" ":" map_value
 70
 71  comment ::= "comment" ":" STRING
 72
 73  hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
 74
 75  hooks_libraries_list ::=
 76                      | not_empty_hooks_libraries_list
 77
 78  not_empty_hooks_libraries_list ::= hooks_library
 79                                | not_empty_hooks_libraries_list "," hooks_library
 80
 81  hooks_library ::= "{" hooks_params "}"
 82
 83  hooks_params ::= hooks_param
 84              | hooks_params "," hooks_param
 85              | unknown_map_entry
 86
 87  hooks_param ::= library
 88             | parameters
 89
 90  library ::= "library" ":" STRING
 91
 92  parameters ::= "parameters" ":" map_value
 93
 94  managed_servers ::= "managed-servers" ":" "{" servers_entries "}"
 95
 96  servers_entries ::=
 97                 | not_empty_servers_entries
 98
 99  not_empty_servers_entries ::= server_entry
100                           | not_empty_servers_entries "," server_entry
101
102  server_entry ::= dhcp4_server
103              | dhcp6_server
104              | d2_server
105              | ca_server
106              | unknown_map_entry
107
108  dhcp4_server ::= "dhcp4" ":" "{" managed_server_params "}"
109
110  dhcp6_server ::= "dhcp6" ":" "{" managed_server_params "}"
111
112  d2_server ::= "d2" ":" "{" managed_server_params "}"
113
114  ca_server ::= "ca" ":" "{" managed_server_params "}"
115
116  managed_server_params ::= managed_server_param
117                       | managed_server_params "," managed_server_param
118
119  managed_server_param ::= model
120                      | boot_update
121                      | subscribe_changes
122                      | validate_changes
123                      | control_socket
124                      | user_context
125                      | comment
126                      | unknown_map_entry
127
128  model ::= "model" ":" STRING
129
130  control_socket ::= "control-socket" ":" "{" control_socket_params "}"
131
132  control_socket_params ::= control_socket_param
133                       | control_socket_params "," control_socket_param
134
135  control_socket_param ::= socket_type
136                      | socket_name
137                      | socket_url
138                      | user_context
139                      | comment
140                      | unknown_map_entry
141
142  socket_type ::= "socket-type" ":" socket_type_value
143
144  socket_type_value ::= "unix"
145                   | "http"
146                   | "stdout"
147
148  socket_name ::= "socket-name" ":" STRING
149
150  socket_url ::= "socket-url" ":" STRING
151
152  loggers ::= "loggers" ":" "[" loggers_entries "]"
153
154  loggers_entries ::= logger_entry
155                 | loggers_entries "," logger_entry
156
157  logger_entry ::= "{" logger_params "}"
158
159  logger_params ::= logger_param
160               | logger_params "," logger_param
161
162  logger_param ::= name
163              | output_options_list
164              | debuglevel
165              | severity
166              | user_context
167              | comment
168              | unknown_map_entry
169
170  name ::= "name" ":" STRING
171
172  debuglevel ::= "debuglevel" ":" INTEGER
173
174  severity ::= "severity" ":" STRING
175
176  output_options_list ::= "output_options" ":" "[" output_options_list_content "]"
177
178  output_options_list_content ::= output_entry
179                             | output_options_list_content "," output_entry
180
181  output_entry ::= "{" output_params_list "}"
182
183  output_params_list ::= output_params
184                    | output_params_list "," output_params
185
186  output_params ::= output
187               | flush
188               | maxsize
189               | maxver
190               | pattern
191
192  output ::= "output" ":" STRING
193
194  flush ::= "flush" ":" BOOLEAN
195
196  maxsize ::= "maxsize" ":" INTEGER
197
198  maxver ::= "maxver" ":" INTEGER
199
200  pattern ::= "pattern" ":" STRING