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