Kea Configuration File Syntax (BNF)

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

BNF Grammar for DHCPv4

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

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

BNF Grammar for DHCPv6

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

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

BNF Grammar for Control Agent

This grammar is generated from agent_parser.yy. See The Kea Control Agent for more details.

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

BNF Grammar for DHCP-DDNS

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

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

BNF Grammar for the Kea NETCONF Agent

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

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