Kea Configuration File Syntax (BNF)

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

BNF Grammar for DHCPv4

Grammar generated on 2021-06-22 19:06. See Chapter The DHCPv4 Server for an explanation.

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

BNF Grammar for DHCPv6

Grammar generated on 2021-06-22 19:06. See Chapter The DHCPv6 Server for an explanation.

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

BNF Grammar for Control Agent

Grammar generated on 2021-06-22 19:06. See Chapter The Kea Control Agent for an explanation.

  1  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 2021-06-22 19:06. 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_domain_key_name
128                   | dns_servers
129                   | user_context
130                   | comment
131                   | unknown_map_entry
132
133  ddns_domain_name ::= "name" ":" STRING
134
135  ddns_domain_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                  | user_context
155                  | comment
156                  | unknown_map_entry
157
158  dns_server_hostname ::= "hostname" ":" STRING
159
160  dns_server_ip_address ::= "ip-address" ":" STRING
161
162  dns_server_port ::= "port" ":" INTEGER
163
164  tsig_keys ::= "tsig-keys" ":" "[" tsig_keys_list "]"
165
166  sub_tsig_keys ::= "[" tsig_keys_list "]"
167
168  tsig_keys_list ::=
169                | not_empty_tsig_keys_list
170
171  not_empty_tsig_keys_list ::= tsig_key
172                          | not_empty_tsig_keys_list "," tsig_key
173
174  tsig_key ::= "{" tsig_key_params "}"
175
176  sub_tsig_key ::= "{" tsig_key_params "}"
177
178  tsig_key_params ::= tsig_key_param
179                 | tsig_key_params "," tsig_key_param
180
181  tsig_key_param ::= tsig_key_name
182                | tsig_key_algorithm
183                | tsig_key_digest_bits
184                | tsig_key_secret
185                | user_context
186                | comment
187                | unknown_map_entry
188
189  tsig_key_name ::= "name" ":" STRING
190
191  tsig_key_algorithm ::= "algorithm" ":" STRING
192
193  tsig_key_digest_bits ::= "digest-bits" ":" INTEGER
194
195  tsig_key_secret ::= "secret" ":" STRING
196
197  control_socket ::= "control-socket" ":" "{" control_socket_params "}"
198
199  control_socket_params ::= control_socket_param
200                       | control_socket_params "," control_socket_param
201
202  control_socket_param ::= control_socket_type
203                      | control_socket_name
204                      | user_context
205                      | comment
206                      | unknown_map_entry
207
208  control_socket_type ::= "socket-type" ":" STRING
209
210  control_socket_name ::= "socket-name" ":" STRING
211
212  hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]"
213
214  hooks_libraries_list ::=
215                      | not_empty_hooks_libraries_list
216
217  not_empty_hooks_libraries_list ::= hooks_library
218                                | not_empty_hooks_libraries_list "," hooks_library
219
220  hooks_library ::= "{" hooks_params "}"
221
222  sub_hooks_library ::= "{" hooks_params "}"
223
224  hooks_params ::= hooks_param
225              | hooks_params "," hooks_param
226              | unknown_map_entry
227
228  hooks_param ::= library
229             | parameters
230
231  library ::= "library" ":" STRING
232
233  parameters ::= "parameters" ":" map_value
234
235  loggers ::= "loggers" ":" "[" loggers_entries "]"
236
237  loggers_entries ::= logger_entry
238                 | loggers_entries "," logger_entry
239
240  logger_entry ::= "{" logger_params "}"
241
242  logger_params ::= logger_param
243               | logger_params "," logger_param
244
245  logger_param ::= name
246              | output_options_list
247              | debuglevel
248              | severity
249              | user_context
250              | comment
251              | unknown_map_entry
252
253  name ::= "name" ":" STRING
254
255  debuglevel ::= "debuglevel" ":" INTEGER
256
257  severity ::= "severity" ":" STRING
258
259  output_options_list ::= "output_options" ":" "[" output_options_list_content "]"
260
261  output_options_list_content ::= output_entry
262                             | output_options_list_content "," output_entry
263
264  output_entry ::= "{" output_params_list "}"
265
266  output_params_list ::= output_params
267                    | output_params_list "," output_params
268
269  output_params ::= output
270               | flush
271               | maxsize
272               | maxver
273               | pattern
274
275  output ::= "output" ":" STRING
276
277  flush ::= "flush" ":" BOOLEAN
278
279  maxsize ::= "maxsize" ":" INTEGER
280
281  maxver ::= "maxver" ":" INTEGER
282
283  pattern ::= "pattern" ":" STRING

BNF Grammar for Kea-netconf

Grammar generated on 2021-06-22 19:06. 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