diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 11:36:04 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 11:36:04 +0000 |
commit | 040eee1aa49b49df4698d83a05af57c220127fd1 (patch) | |
tree | f635435954e6ccde5eee9893889e24f30ca68346 /doc/sphinx/grammar | |
parent | Initial commit. (diff) | |
download | isc-kea-040eee1aa49b49df4698d83a05af57c220127fd1.tar.xz isc-kea-040eee1aa49b49df4698d83a05af57c220127fd1.zip |
Adding upstream version 2.2.0.upstream/2.2.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc/sphinx/grammar')
-rw-r--r-- | doc/sphinx/grammar/grammar-ca-parser.rst | 253 | ||||
-rw-r--r-- | doc/sphinx/grammar/grammar-d2-parser.rst | 310 | ||||
-rw-r--r-- | doc/sphinx/grammar/grammar-dhcp4-parser.rst | 997 | ||||
-rw-r--r-- | doc/sphinx/grammar/grammar-dhcp6-parser.rst | 1049 | ||||
-rw-r--r-- | doc/sphinx/grammar/grammar-netconf-parser.rst | 221 | ||||
-rw-r--r-- | doc/sphinx/grammar/grammar.rst | 44 |
6 files changed, 2874 insertions, 0 deletions
diff --git a/doc/sphinx/grammar/grammar-ca-parser.rst b/doc/sphinx/grammar/grammar-ca-parser.rst new file mode 100644 index 0000000..880d44b --- /dev/null +++ b/doc/sphinx/grammar/grammar-ca-parser.rst @@ -0,0 +1,253 @@ +This grammar is generated from ``agent_parser.yy``. See :ref:`kea-ctrl-agent` for more details. + +.. code-block:: BNF + :linenos: + + Grammar + + $accept ::= start EOF + + start ::= START_JSON json + + start ::= START_AGENT agent_syntax_map + + start ::= START_SUB_AGENT sub_agent + + sub_agent ::= "{" global_params "}" + + json ::= value + + value ::= INTEGER + | FLOAT + | BOOLEAN + | STRING + | NULL + | map + | list_generic + + map ::= "{" map_content "}" + + map_value ::= map + + map_content ::= + | not_empty_map + + not_empty_map ::= STRING ":" value + | not_empty_map "," STRING ":" value + | not_empty_map "," + + list_generic ::= "[" list_content "]" + + list_content ::= + | not_empty_list + + not_empty_list ::= value + | not_empty_list "," value + | not_empty_list "," + + unknown_map_entry ::= STRING ":" + + agent_syntax_map ::= "{" global_object "}" + + global_object ::= "Control-agent" ":" "{" global_params "}" + | global_object_comma + + global_object_comma ::= global_object "," + + global_params ::= global_param + | global_params "," global_param + | global_params "," + + global_param ::= http_host + | http_port + | trust_anchor + | cert_file + | key_file + | cert_required + | authentication + | control_sockets + | hooks_libraries + | loggers + | user_context + | comment + | unknown_map_entry + + http_host ::= "http-host" ":" STRING + + http_port ::= "http-port" ":" INTEGER + + trust_anchor ::= "trust-anchor" ":" STRING + + cert_file ::= "cert-file" ":" STRING + + key_file ::= "key-file" ":" STRING + + cert_required ::= "cert-required" ":" BOOLEAN + + user_context ::= "user-context" ":" map_value + + comment ::= "comment" ":" STRING + + hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]" + + hooks_libraries_list ::= + | not_empty_hooks_libraries_list + + not_empty_hooks_libraries_list ::= hooks_library + | not_empty_hooks_libraries_list "," hooks_library + | not_empty_hooks_libraries_list "," + + hooks_library ::= "{" hooks_params "}" + + hooks_params ::= hooks_param + | hooks_params "," hooks_param + | hooks_params "," + | unknown_map_entry + + hooks_param ::= library + | parameters + + library ::= "library" ":" STRING + + parameters ::= "parameters" ":" map_value + + control_sockets ::= "control-sockets" ":" "{" control_sockets_params "}" + + control_sockets_params ::= control_socket + | control_sockets_params "," control_socket + | control_sockets_params "," + + control_socket ::= dhcp4_server_socket + | dhcp6_server_socket + | d2_server_socket + | unknown_map_entry + + dhcp4_server_socket ::= "dhcp4" ":" "{" control_socket_params "}" + + dhcp6_server_socket ::= "dhcp6" ":" "{" control_socket_params "}" + + d2_server_socket ::= "d2" ":" "{" control_socket_params "}" + + control_socket_params ::= control_socket_param + | control_socket_params "," control_socket_param + | control_socket_params "," + + control_socket_param ::= socket_name + | socket_type + | user_context + | comment + | unknown_map_entry + + socket_name ::= "socket-name" ":" STRING + + socket_type ::= "socket-type" ":" socket_type_value + + socket_type_value ::= "unix" + + authentication ::= "authentication" ":" "{" auth_params "}" + + auth_params ::= auth_param + | auth_params "," auth_param + | auth_params "," + + auth_param ::= auth_type + | realm + | directory + | clients + | comment + | user_context + | unknown_map_entry + + auth_type ::= "type" ":" auth_type_value + + auth_type_value ::= "basic" + + realm ::= "realm" ":" STRING + + directory ::= "directory" ":" STRING + + clients ::= "clients" ":" "[" clients_list "]" + + clients_list ::= + | not_empty_clients_list + + not_empty_clients_list ::= basic_auth + | not_empty_clients_list "," basic_auth + | not_empty_clients_list "," + + basic_auth ::= "{" clients_params "}" + + clients_params ::= clients_param + | clients_params "," clients_param + | clients_params "," + + clients_param ::= user + | user_file + | password + | password_file + | user_context + | comment + | unknown_map_entry + + user ::= "user" ":" STRING + + user_file ::= "user-file" ":" STRING + + password ::= "password" ":" STRING + + password_file ::= "password-file" ":" STRING + + loggers ::= "loggers" ":" "[" loggers_entries "]" + + loggers_entries ::= logger_entry + | loggers_entries "," logger_entry + | loggers_entries "," + + logger_entry ::= "{" logger_params "}" + + logger_params ::= logger_param + | logger_params "," logger_param + | logger_params "," + + logger_param ::= name + | output_options_list + | debuglevel + | severity + | user_context + | comment + | unknown_map_entry + + name ::= "name" ":" STRING + + debuglevel ::= "debuglevel" ":" INTEGER + + severity ::= "severity" ":" STRING + + output_options_list ::= "output_options" ":" "[" output_options_list_content "]" + + output_options_list_content ::= output_entry + | output_options_list_content "," output_entry + | output_options_list_content "," + + output_entry ::= "{" output_params_list "}" + + output_params_list ::= output_params + | output_params_list "," output_params + | output_params_list "," + + output_params ::= output + | flush + | maxsize + | maxver + | pattern + + output ::= "output" ":" STRING + + flush ::= "flush" ":" BOOLEAN + + maxsize ::= "maxsize" ":" INTEGER + + maxver ::= "maxver" ":" INTEGER + + pattern ::= "pattern" ":" STRING + diff --git a/doc/sphinx/grammar/grammar-d2-parser.rst b/doc/sphinx/grammar/grammar-d2-parser.rst new file mode 100644 index 0000000..4f02ab0 --- /dev/null +++ b/doc/sphinx/grammar/grammar-d2-parser.rst @@ -0,0 +1,310 @@ +This grammar is generated from ``d2_parser.yy``. See :ref:`dhcp-ddns-server` for more details. + +.. code-block:: BNF + :linenos: + + Grammar + + $accept ::= start EOF + + start ::= TOPLEVEL_JSON sub_json + + start ::= TOPLEVEL_DHCPDDNS syntax_map + + start ::= SUB_DHCPDDNS sub_dhcpddns + + start ::= SUB_TSIG_KEY sub_tsig_key + + start ::= SUB_TSIG_KEYS sub_tsig_keys + + start ::= SUB_DDNS_DOMAIN sub_ddns_domain + + start ::= SUB_DDNS_DOMAINS sub_ddns_domains + + start ::= SUB_DNS_SERVER sub_dns_server + + start ::= SUB_DNS_SERVERS sub_dns_servers + + start ::= SUB_HOOKS_LIBRARY sub_hooks_library + + value ::= INTEGER + | FLOAT + | BOOLEAN + | STRING + | NULL + | map2 + | list_generic + + sub_json ::= value + + map2 ::= "{" map_content "}" + + map_value ::= map2 + + map_content ::= + | not_empty_map + + not_empty_map ::= STRING ":" value + | not_empty_map "," STRING ":" value + | not_empty_map "," + + list_generic ::= "[" list_content "]" + + list_content ::= + | not_empty_list + + not_empty_list ::= value + | not_empty_list "," value + | not_empty_list "," + + unknown_map_entry ::= STRING ":" + + syntax_map ::= "{" global_object "}" + + global_object ::= "DhcpDdns" ":" "{" dhcpddns_params "}" + | global_object_comma + + global_object_comma ::= global_object "," + + sub_dhcpddns ::= "{" dhcpddns_params "}" + + dhcpddns_params ::= dhcpddns_param + | dhcpddns_params "," dhcpddns_param + | dhcpddns_params "," + + dhcpddns_param ::= ip_address + | port + | dns_server_timeout + | ncr_protocol + | ncr_format + | forward_ddns + | reverse_ddns + | tsig_keys + | control_socket + | hooks_libraries + | loggers + | user_context + | comment + | unknown_map_entry + + ip_address ::= "ip-address" ":" STRING + + port ::= "port" ":" INTEGER + + dns_server_timeout ::= "dns-server-timeout" ":" INTEGER + + ncr_protocol ::= "ncr-protocol" ":" ncr_protocol_value + + ncr_protocol_value ::= "UDP" + | "TCP" + + ncr_format ::= "ncr-format" ":" "JSON" + + user_context ::= "user-context" ":" map_value + + comment ::= "comment" ":" STRING + + forward_ddns ::= "forward-ddns" ":" "{" ddns_mgr_params "}" + + reverse_ddns ::= "reverse-ddns" ":" "{" ddns_mgr_params "}" + + ddns_mgr_params ::= + | not_empty_ddns_mgr_params + + not_empty_ddns_mgr_params ::= ddns_mgr_param + | ddns_mgr_params "," ddns_mgr_param + | ddns_mgr_params "," + + ddns_mgr_param ::= ddns_domains + | unknown_map_entry + + ddns_domains ::= "ddns-domains" ":" "[" ddns_domain_list "]" + + sub_ddns_domains ::= "[" ddns_domain_list "]" + + ddns_domain_list ::= + | not_empty_ddns_domain_list + + not_empty_ddns_domain_list ::= ddns_domain + | not_empty_ddns_domain_list "," ddns_domain + | not_empty_ddns_domain_list "," + + ddns_domain ::= "{" ddns_domain_params "}" + + sub_ddns_domain ::= "{" ddns_domain_params "}" + + ddns_domain_params ::= ddns_domain_param + | ddns_domain_params "," ddns_domain_param + | ddns_domain_params "," + + ddns_domain_param ::= ddns_domain_name + | ddns_key_name + | dns_servers + | user_context + | comment + | unknown_map_entry + + ddns_domain_name ::= "name" ":" STRING + + ddns_key_name ::= "key-name" ":" STRING + + dns_servers ::= "dns-servers" ":" "[" dns_server_list "]" + + sub_dns_servers ::= "[" dns_server_list "]" + + dns_server_list ::= dns_server + | dns_server_list "," dns_server + | dns_server_list "," + + dns_server ::= "{" dns_server_params "}" + + sub_dns_server ::= "{" dns_server_params "}" + + dns_server_params ::= dns_server_param + | dns_server_params "," dns_server_param + | dns_server_params "," + + dns_server_param ::= dns_server_hostname + | dns_server_ip_address + | dns_server_port + | ddns_key_name + | user_context + | comment + | unknown_map_entry + + dns_server_hostname ::= "hostname" ":" STRING + + dns_server_ip_address ::= "ip-address" ":" STRING + + dns_server_port ::= "port" ":" INTEGER + + tsig_keys ::= "tsig-keys" ":" "[" tsig_keys_list "]" + + sub_tsig_keys ::= "[" tsig_keys_list "]" + + tsig_keys_list ::= + | not_empty_tsig_keys_list + + not_empty_tsig_keys_list ::= tsig_key + | not_empty_tsig_keys_list "," tsig_key + | not_empty_tsig_keys_list "," + + tsig_key ::= "{" tsig_key_params "}" + + sub_tsig_key ::= "{" tsig_key_params "}" + + tsig_key_params ::= tsig_key_param + | tsig_key_params "," tsig_key_param + | tsig_key_params "," + + tsig_key_param ::= tsig_key_name + | tsig_key_algorithm + | tsig_key_digest_bits + | tsig_key_secret + | user_context + | comment + | unknown_map_entry + + tsig_key_name ::= "name" ":" STRING + + tsig_key_algorithm ::= "algorithm" ":" STRING + + tsig_key_digest_bits ::= "digest-bits" ":" INTEGER + + tsig_key_secret ::= "secret" ":" STRING + + control_socket ::= "control-socket" ":" "{" control_socket_params "}" + + control_socket_params ::= control_socket_param + | control_socket_params "," control_socket_param + | control_socket_params "," + + control_socket_param ::= control_socket_type + | control_socket_name + | user_context + | comment + | unknown_map_entry + + control_socket_type ::= "socket-type" ":" STRING + + control_socket_name ::= "socket-name" ":" STRING + + hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]" + + hooks_libraries_list ::= + | not_empty_hooks_libraries_list + + not_empty_hooks_libraries_list ::= hooks_library + | not_empty_hooks_libraries_list "," hooks_library + | not_empty_hooks_libraries_list "," + + hooks_library ::= "{" hooks_params "}" + + sub_hooks_library ::= "{" hooks_params "}" + + hooks_params ::= hooks_param + | hooks_params "," hooks_param + | hooks_params "," + | unknown_map_entry + + hooks_param ::= library + | parameters + + library ::= "library" ":" STRING + + parameters ::= "parameters" ":" map_value + + loggers ::= "loggers" ":" "[" loggers_entries "]" + + loggers_entries ::= logger_entry + | loggers_entries "," logger_entry + | loggers_entries "," + + logger_entry ::= "{" logger_params "}" + + logger_params ::= logger_param + | logger_params "," logger_param + | logger_params "," + + logger_param ::= name + | output_options_list + | debuglevel + | severity + | user_context + | comment + | unknown_map_entry + + name ::= "name" ":" STRING + + debuglevel ::= "debuglevel" ":" INTEGER + + severity ::= "severity" ":" STRING + + output_options_list ::= "output_options" ":" "[" output_options_list_content "]" + + output_options_list_content ::= output_entry + | output_options_list_content "," output_entry + | output_options_list_content "," + + output_entry ::= "{" output_params_list "}" + + output_params_list ::= output_params + | output_params_list "," output_params + | output_params_list "," + + output_params ::= output + | flush + | maxsize + | maxver + | pattern + + output ::= "output" ":" STRING + + flush ::= "flush" ":" BOOLEAN + + maxsize ::= "maxsize" ":" INTEGER + + maxver ::= "maxver" ":" INTEGER + + pattern ::= "pattern" ":" STRING + diff --git a/doc/sphinx/grammar/grammar-dhcp4-parser.rst b/doc/sphinx/grammar/grammar-dhcp4-parser.rst new file mode 100644 index 0000000..94e9891 --- /dev/null +++ b/doc/sphinx/grammar/grammar-dhcp4-parser.rst @@ -0,0 +1,997 @@ +This grammar is generated from ``dhcp4_parser.yy``. See :ref:`dhcp4` for more details. + +.. code-block:: BNF + :linenos: + + Grammar + + $accept ::= start EOF + + start ::= TOPLEVEL_JSON sub_json + + start ::= TOPLEVEL_DHCP4 syntax_map + + start ::= SUB_DHCP4 sub_dhcp4 + + start ::= SUB_INTERFACES4 sub_interfaces4 + + start ::= SUB_SUBNET4 sub_subnet4 + + start ::= SUB_POOL4 sub_pool4 + + start ::= SUB_RESERVATION sub_reservation + + start ::= SUB_OPTION_DEFS sub_option_def_list + + start ::= SUB_OPTION_DEF sub_option_def + + start ::= SUB_OPTION_DATA sub_option_data + + start ::= SUB_HOOKS_LIBRARY sub_hooks_library + + start ::= SUB_DHCP_DDNS sub_dhcp_ddns + + start ::= SUB_CONFIG_CONTROL sub_config_control + + value ::= INTEGER + | FLOAT + | BOOLEAN + | STRING + | NULL + | map2 + | list_generic + + sub_json ::= value + + map2 ::= "{" map_content "}" + + map_value ::= map2 + + map_content ::= + | not_empty_map + + not_empty_map ::= STRING ":" value + | not_empty_map "," STRING ":" value + | not_empty_map "," + + list_generic ::= "[" list_content "]" + + list_content ::= + | not_empty_list + + not_empty_list ::= value + | not_empty_list "," value + | not_empty_list "," + + list_strings ::= "[" list_strings_content "]" + + list_strings_content ::= + | not_empty_list_strings + + not_empty_list_strings ::= STRING + | not_empty_list_strings "," STRING + | not_empty_list_strings "," + + unknown_map_entry ::= STRING ":" + + syntax_map ::= "{" global_object "}" + + global_object ::= "Dhcp4" ":" "{" global_params "}" + | global_object_comma + + global_object_comma ::= global_object "," + + sub_dhcp4 ::= "{" global_params "}" + + global_params ::= global_param + | global_params "," global_param + | global_params "," + + global_param ::= valid_lifetime + | min_valid_lifetime + | max_valid_lifetime + | renew_timer + | rebind_timer + | decline_probation_period + | subnet4_list + | shared_networks + | interfaces_config + | lease_database + | hosts_database + | hosts_databases + | host_reservation_identifiers + | client_classes + | option_def_list + | option_data_list + | hooks_libraries + | expired_leases_processing + | dhcp4o6_port + | control_socket + | dhcp_queue_control + | dhcp_ddns + | echo_client_id + | match_client_id + | authoritative + | next_server + | server_hostname + | boot_file_name + | user_context + | comment + | sanity_checks + | reservations + | config_control + | server_tag + | reservation_mode + | reservations_global + | reservations_in_subnet + | reservations_out_of_pool + | calculate_tee_times + | t1_percent + | t2_percent + | cache_threshold + | cache_max_age + | loggers + | hostname_char_set + | hostname_char_replacement + | ddns_send_updates + | ddns_override_no_update + | ddns_override_client_update + | ddns_replace_client_name + | ddns_generated_prefix + | ddns_qualifying_suffix + | ddns_update_on_renew + | ddns_use_conflict_resolution + | store_extended_info + | statistic_default_sample_count + | statistic_default_sample_age + | dhcp_multi_threading + | early_global_reservations_lookup + | ip_reservations_unique + | reservations_lookup_first + | compatibility + | parked_packet_limit + | unknown_map_entry + + valid_lifetime ::= "valid-lifetime" ":" INTEGER + + min_valid_lifetime ::= "min-valid-lifetime" ":" INTEGER + + max_valid_lifetime ::= "max-valid-lifetime" ":" INTEGER + + renew_timer ::= "renew-timer" ":" INTEGER + + rebind_timer ::= "rebind-timer" ":" INTEGER + + calculate_tee_times ::= "calculate-tee-times" ":" BOOLEAN + + t1_percent ::= "t1-percent" ":" FLOAT + + t2_percent ::= "t2-percent" ":" FLOAT + + cache_threshold ::= "cache-threshold" ":" FLOAT + + cache_max_age ::= "cache-max-age" ":" INTEGER + + decline_probation_period ::= "decline-probation-period" ":" INTEGER + + server_tag ::= "server-tag" ":" STRING + + parked_packet_limit ::= "parked-packet-limit" ":" INTEGER + + echo_client_id ::= "echo-client-id" ":" BOOLEAN + + match_client_id ::= "match-client-id" ":" BOOLEAN + + authoritative ::= "authoritative" ":" BOOLEAN + + ddns_send_updates ::= "ddns-send-updates" ":" BOOLEAN + + ddns_override_no_update ::= "ddns-override-no-update" ":" BOOLEAN + + ddns_override_client_update ::= "ddns-override-client-update" ":" BOOLEAN + + ddns_replace_client_name ::= "ddns-replace-client-name" ":" ddns_replace_client_name_value + + ddns_replace_client_name_value ::= "when-present" + | "never" + | "always" + | "when-not-present" + | BOOLEAN + + ddns_generated_prefix ::= "ddns-generated-prefix" ":" STRING + + ddns_qualifying_suffix ::= "ddns-qualifying-suffix" ":" STRING + + ddns_update_on_renew ::= "ddns-update-on-renew" ":" BOOLEAN + + ddns_use_conflict_resolution ::= "ddns-use-conflict-resolution" ":" BOOLEAN + + hostname_char_set ::= "hostname-char-set" ":" STRING + + hostname_char_replacement ::= "hostname-char-replacement" ":" STRING + + store_extended_info ::= "store-extended-info" ":" BOOLEAN + + statistic_default_sample_count ::= "statistic-default-sample-count" ":" INTEGER + + statistic_default_sample_age ::= "statistic-default-sample-age" ":" INTEGER + + early_global_reservations_lookup ::= "early-global-reservations-lookup" ":" BOOLEAN + + ip_reservations_unique ::= "ip-reservations-unique" ":" BOOLEAN + + reservations_lookup_first ::= "reservations-lookup-first" ":" BOOLEAN + + interfaces_config ::= "interfaces-config" ":" "{" interfaces_config_params "}" + + interfaces_config_params ::= interfaces_config_param + | interfaces_config_params "," interfaces_config_param + | interfaces_config_params "," + + interfaces_config_param ::= interfaces_list + | dhcp_socket_type + | outbound_interface + | re_detect + | service_sockets_require_all + | service_sockets_retry_wait_time + | service_sockets_max_retries + | user_context + | comment + | unknown_map_entry + + sub_interfaces4 ::= "{" interfaces_config_params "}" + + interfaces_list ::= "interfaces" ":" list_strings + + dhcp_socket_type ::= "dhcp-socket-type" ":" socket_type + + socket_type ::= "raw" + | "udp" + + outbound_interface ::= "outbound-interface" ":" outbound_interface_value + + outbound_interface_value ::= "same-as-inbound" + | "use-routing" + + re_detect ::= "re-detect" ":" BOOLEAN + + service_sockets_require_all ::= "service-sockets-require-all" ":" BOOLEAN + + service_sockets_retry_wait_time ::= "service-sockets-retry-wait-time" ":" INTEGER + + service_sockets_max_retries ::= "service-sockets-max-retries" ":" INTEGER + + lease_database ::= "lease-database" ":" "{" database_map_params "}" + + sanity_checks ::= "sanity-checks" ":" "{" sanity_checks_params "}" + + sanity_checks_params ::= sanity_checks_param + | sanity_checks_params "," sanity_checks_param + | sanity_checks_params "," + + sanity_checks_param ::= lease_checks + + lease_checks ::= "lease-checks" ":" STRING + + hosts_database ::= "hosts-database" ":" "{" database_map_params "}" + + hosts_databases ::= "hosts-databases" ":" "[" database_list "]" + + database_list ::= + | not_empty_database_list + + not_empty_database_list ::= database + | not_empty_database_list "," database + | not_empty_database_list "," + + database ::= "{" database_map_params "}" + + database_map_params ::= database_map_param + | database_map_params "," database_map_param + | database_map_params "," + + database_map_param ::= database_type + | user + | password + | host + | port + | name + | persist + | lfc_interval + | readonly + | connect_timeout + | max_reconnect_tries + | reconnect_wait_time + | on_fail + | max_row_errors + | trust_anchor + | cert_file + | key_file + | cipher_list + | unknown_map_entry + + database_type ::= "type" ":" db_type + + db_type ::= "memfile" + | "mysql" + | "postgresql" + + user ::= "user" ":" STRING + + password ::= "password" ":" STRING + + host ::= "host" ":" STRING + + port ::= "port" ":" INTEGER + + name ::= "name" ":" STRING + + persist ::= "persist" ":" BOOLEAN + + lfc_interval ::= "lfc-interval" ":" INTEGER + + readonly ::= "readonly" ":" BOOLEAN + + connect_timeout ::= "connect-timeout" ":" INTEGER + + max_reconnect_tries ::= "max-reconnect-tries" ":" INTEGER + + reconnect_wait_time ::= "reconnect-wait-time" ":" INTEGER + + on_fail ::= "on-fail" ":" on_fail_mode + + on_fail_mode ::= "stop-retry-exit" + | "serve-retry-exit" + | "serve-retry-continue" + + max_row_errors ::= "max-row-errors" ":" INTEGER + + trust_anchor ::= "trust-anchor" ":" STRING + + cert_file ::= "cert-file" ":" STRING + + key_file ::= "key-file" ":" STRING + + cipher_list ::= "cipher-list" ":" STRING + + host_reservation_identifiers ::= "host-reservation-identifiers" ":" "[" host_reservation_identifiers_list "]" + + host_reservation_identifiers_list ::= host_reservation_identifier + | host_reservation_identifiers_list "," host_reservation_identifier + | host_reservation_identifiers_list "," + + host_reservation_identifier ::= duid_id + | hw_address_id + | circuit_id + | client_id + | flex_id + + duid_id ::= "duid" + + hw_address_id ::= "hw-address" + + circuit_id ::= "circuit-id" + + client_id ::= "client-id" + + flex_id ::= "flex-id" + + dhcp_multi_threading ::= "multi-threading" ":" "{" multi_threading_params "}" + + multi_threading_params ::= multi_threading_param + | multi_threading_params "," multi_threading_param + | multi_threading_params "," + + multi_threading_param ::= enable_multi_threading + | thread_pool_size + | packet_queue_size + | user_context + | comment + | unknown_map_entry + + enable_multi_threading ::= "enable-multi-threading" ":" BOOLEAN + + thread_pool_size ::= "thread-pool-size" ":" INTEGER + + packet_queue_size ::= "packet-queue-size" ":" INTEGER + + hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]" + + hooks_libraries_list ::= + | not_empty_hooks_libraries_list + + not_empty_hooks_libraries_list ::= hooks_library + | not_empty_hooks_libraries_list "," hooks_library + | not_empty_hooks_libraries_list "," + + hooks_library ::= "{" hooks_params "}" + + sub_hooks_library ::= "{" hooks_params "}" + + hooks_params ::= hooks_param + | hooks_params "," hooks_param + | hooks_params "," + | unknown_map_entry + + hooks_param ::= library + | parameters + + library ::= "library" ":" STRING + + parameters ::= "parameters" ":" map_value + + expired_leases_processing ::= "expired-leases-processing" ":" "{" expired_leases_params "}" + + expired_leases_params ::= expired_leases_param + | expired_leases_params "," expired_leases_param + | expired_leases_params "," + + expired_leases_param ::= reclaim_timer_wait_time + | flush_reclaimed_timer_wait_time + | hold_reclaimed_time + | max_reclaim_leases + | max_reclaim_time + | unwarned_reclaim_cycles + + reclaim_timer_wait_time ::= "reclaim-timer-wait-time" ":" INTEGER + + flush_reclaimed_timer_wait_time ::= "flush-reclaimed-timer-wait-time" ":" INTEGER + + hold_reclaimed_time ::= "hold-reclaimed-time" ":" INTEGER + + max_reclaim_leases ::= "max-reclaim-leases" ":" INTEGER + + max_reclaim_time ::= "max-reclaim-time" ":" INTEGER + + unwarned_reclaim_cycles ::= "unwarned-reclaim-cycles" ":" INTEGER + + subnet4_list ::= "subnet4" ":" "[" subnet4_list_content "]" + + subnet4_list_content ::= + | not_empty_subnet4_list + + not_empty_subnet4_list ::= subnet4 + | not_empty_subnet4_list "," subnet4 + | not_empty_subnet4_list "," + + subnet4 ::= "{" subnet4_params "}" + + sub_subnet4 ::= "{" subnet4_params "}" + + subnet4_params ::= subnet4_param + | subnet4_params "," subnet4_param + | subnet4_params "," + + subnet4_param ::= valid_lifetime + | min_valid_lifetime + | max_valid_lifetime + | renew_timer + | rebind_timer + | option_data_list + | pools_list + | subnet + | interface + | id + | client_class + | require_client_classes + | reservations + | reservation_mode + | reservations_global + | reservations_in_subnet + | reservations_out_of_pool + | relay + | match_client_id + | authoritative + | next_server + | server_hostname + | boot_file_name + | subnet_4o6_interface + | subnet_4o6_interface_id + | subnet_4o6_subnet + | user_context + | comment + | calculate_tee_times + | t1_percent + | t2_percent + | cache_threshold + | cache_max_age + | ddns_send_updates + | ddns_override_no_update + | ddns_override_client_update + | ddns_replace_client_name + | ddns_generated_prefix + | ddns_qualifying_suffix + | ddns_update_on_renew + | ddns_use_conflict_resolution + | hostname_char_set + | hostname_char_replacement + | store_extended_info + | unknown_map_entry + + subnet ::= "subnet" ":" STRING + + subnet_4o6_interface ::= "4o6-interface" ":" STRING + + subnet_4o6_interface_id ::= "4o6-interface-id" ":" STRING + + subnet_4o6_subnet ::= "4o6-subnet" ":" STRING + + interface ::= "interface" ":" STRING + + client_class ::= "client-class" ":" STRING + + require_client_classes ::= "require-client-classes" ":" list_strings + + reservations_global ::= "reservations-global" ":" BOOLEAN + + reservations_in_subnet ::= "reservations-in-subnet" ":" BOOLEAN + + reservations_out_of_pool ::= "reservations-out-of-pool" ":" BOOLEAN + + reservation_mode ::= "reservation-mode" ":" hr_mode + + hr_mode ::= "disabled" + | "out-of-pool" + | "global" + | "all" + + id ::= "id" ":" INTEGER + + shared_networks ::= "shared-networks" ":" "[" shared_networks_content "]" + + shared_networks_content ::= + | shared_networks_list + + shared_networks_list ::= shared_network + | shared_networks_list "," shared_network + | shared_networks_list "," + + shared_network ::= "{" shared_network_params "}" + + shared_network_params ::= shared_network_param + | shared_network_params "," shared_network_param + | shared_network_params "," + + shared_network_param ::= name + | subnet4_list + | interface + | renew_timer + | rebind_timer + | option_data_list + | match_client_id + | authoritative + | next_server + | server_hostname + | boot_file_name + | relay + | reservation_mode + | reservations_global + | reservations_in_subnet + | reservations_out_of_pool + | client_class + | require_client_classes + | valid_lifetime + | min_valid_lifetime + | max_valid_lifetime + | user_context + | comment + | calculate_tee_times + | t1_percent + | t2_percent + | cache_threshold + | cache_max_age + | ddns_send_updates + | ddns_override_no_update + | ddns_override_client_update + | ddns_replace_client_name + | ddns_generated_prefix + | ddns_qualifying_suffix + | ddns_update_on_renew + | ddns_use_conflict_resolution + | hostname_char_set + | hostname_char_replacement + | store_extended_info + | unknown_map_entry + + option_def_list ::= "option-def" ":" "[" option_def_list_content "]" + + sub_option_def_list ::= "{" option_def_list "}" + + option_def_list_content ::= + | not_empty_option_def_list + + not_empty_option_def_list ::= option_def_entry + | not_empty_option_def_list "," option_def_entry + | not_empty_option_def_list "," + + option_def_entry ::= "{" option_def_params "}" + + sub_option_def ::= "{" option_def_params "}" + + option_def_params ::= + | not_empty_option_def_params + + not_empty_option_def_params ::= option_def_param + | not_empty_option_def_params "," option_def_param + | not_empty_option_def_params "," + + option_def_param ::= option_def_name + | option_def_code + | option_def_type + | option_def_record_types + | option_def_space + | option_def_encapsulate + | option_def_array + | user_context + | comment + | unknown_map_entry + + option_def_name ::= name + + code ::= "code" ":" INTEGER + + option_def_code ::= code + + option_def_type ::= "type" ":" STRING + + option_def_record_types ::= "record-types" ":" STRING + + space ::= "space" ":" STRING + + option_def_space ::= space + + option_def_encapsulate ::= "encapsulate" ":" STRING + + option_def_array ::= "array" ":" BOOLEAN + + option_data_list ::= "option-data" ":" "[" option_data_list_content "]" + + option_data_list_content ::= + | not_empty_option_data_list + + not_empty_option_data_list ::= option_data_entry + | not_empty_option_data_list "," option_data_entry + | not_empty_option_data_list "," + + option_data_entry ::= "{" option_data_params "}" + + sub_option_data ::= "{" option_data_params "}" + + option_data_params ::= + | not_empty_option_data_params + + not_empty_option_data_params ::= option_data_param + | not_empty_option_data_params "," option_data_param + | not_empty_option_data_params "," + + option_data_param ::= option_data_name + | option_data_data + | option_data_code + | option_data_space + | option_data_csv_format + | option_data_always_send + | user_context + | comment + | unknown_map_entry + + option_data_name ::= name + + option_data_data ::= "data" ":" STRING + + option_data_code ::= code + + option_data_space ::= space + + option_data_csv_format ::= "csv-format" ":" BOOLEAN + + option_data_always_send ::= "always-send" ":" BOOLEAN + + pools_list ::= "pools" ":" "[" pools_list_content "]" + + pools_list_content ::= + | not_empty_pools_list + + not_empty_pools_list ::= pool_list_entry + | not_empty_pools_list "," pool_list_entry + | not_empty_pools_list "," + + pool_list_entry ::= "{" pool_params "}" + + sub_pool4 ::= "{" pool_params "}" + + pool_params ::= pool_param + | pool_params "," pool_param + | pool_params "," + + pool_param ::= pool_entry + | option_data_list + | client_class + | require_client_classes + | user_context + | comment + | unknown_map_entry + + pool_entry ::= "pool" ":" STRING + + user_context ::= "user-context" ":" map_value + + comment ::= "comment" ":" STRING + + reservations ::= "reservations" ":" "[" reservations_list "]" + + reservations_list ::= + | not_empty_reservations_list + + not_empty_reservations_list ::= reservation + | not_empty_reservations_list "," reservation + | not_empty_reservations_list "," + + reservation ::= "{" reservation_params "}" + + sub_reservation ::= "{" reservation_params "}" + + reservation_params ::= + | not_empty_reservation_params + + not_empty_reservation_params ::= reservation_param + | not_empty_reservation_params "," reservation_param + | not_empty_reservation_params "," + + reservation_param ::= duid + | reservation_client_classes + | client_id_value + | circuit_id_value + | flex_id_value + | ip_address + | hw_address + | hostname + | option_data_list + | next_server + | server_hostname + | boot_file_name + | user_context + | comment + | unknown_map_entry + + next_server ::= "next-server" ":" STRING + + server_hostname ::= "server-hostname" ":" STRING + + boot_file_name ::= "boot-file-name" ":" STRING + + ip_address ::= "ip-address" ":" STRING + + ip_addresses ::= "ip-addresses" ":" list_strings + + duid ::= "duid" ":" STRING + + hw_address ::= "hw-address" ":" STRING + + client_id_value ::= "client-id" ":" STRING + + circuit_id_value ::= "circuit-id" ":" STRING + + flex_id_value ::= "flex-id" ":" STRING + + hostname ::= "hostname" ":" STRING + + reservation_client_classes ::= "client-classes" ":" list_strings + + relay ::= "relay" ":" "{" relay_map "}" + + relay_map ::= ip_address + | ip_addresses + + client_classes ::= "client-classes" ":" "[" client_classes_list "]" + + client_classes_list ::= client_class_entry + | client_classes_list "," client_class_entry + | client_classes_list "," + + client_class_entry ::= "{" client_class_params "}" + + client_class_params ::= + | not_empty_client_class_params + + not_empty_client_class_params ::= client_class_param + | not_empty_client_class_params "," client_class_param + | not_empty_client_class_params "," + + client_class_param ::= client_class_name + | client_class_test + | only_if_required + | option_def_list + | option_data_list + | next_server + | server_hostname + | boot_file_name + | user_context + | comment + | unknown_map_entry + | valid_lifetime + | min_valid_lifetime + | max_valid_lifetime + + client_class_name ::= name + + client_class_test ::= "test" ":" STRING + + only_if_required ::= "only-if-required" ":" BOOLEAN + + dhcp4o6_port ::= "dhcp4o6-port" ":" INTEGER + + control_socket ::= "control-socket" ":" "{" control_socket_params "}" + + control_socket_params ::= control_socket_param + | control_socket_params "," control_socket_param + | control_socket_params "," + + control_socket_param ::= control_socket_type + | control_socket_name + | user_context + | comment + | unknown_map_entry + + control_socket_type ::= "socket-type" ":" STRING + + control_socket_name ::= "socket-name" ":" STRING + + dhcp_queue_control ::= "dhcp-queue-control" ":" "{" queue_control_params "}" + + queue_control_params ::= queue_control_param + | queue_control_params "," queue_control_param + | queue_control_params "," + + queue_control_param ::= enable_queue + | queue_type + | capacity + | user_context + | comment + | arbitrary_map_entry + + enable_queue ::= "enable-queue" ":" BOOLEAN + + queue_type ::= "queue-type" ":" STRING + + capacity ::= "capacity" ":" INTEGER + + arbitrary_map_entry ::= STRING ":" value + + dhcp_ddns ::= "dhcp-ddns" ":" "{" dhcp_ddns_params "}" + + sub_dhcp_ddns ::= "{" dhcp_ddns_params "}" + + dhcp_ddns_params ::= dhcp_ddns_param + | dhcp_ddns_params "," dhcp_ddns_param + | dhcp_ddns_params "," + + dhcp_ddns_param ::= enable_updates + | server_ip + | server_port + | sender_ip + | sender_port + | max_queue_size + | ncr_protocol + | ncr_format + | dep_override_no_update + | dep_override_client_update + | dep_replace_client_name + | dep_generated_prefix + | dep_qualifying_suffix + | dep_hostname_char_set + | dep_hostname_char_replacement + | user_context + | comment + | unknown_map_entry + + enable_updates ::= "enable-updates" ":" BOOLEAN + + server_ip ::= "server-ip" ":" STRING + + server_port ::= "server-port" ":" INTEGER + + sender_ip ::= "sender-ip" ":" STRING + + sender_port ::= "sender-port" ":" INTEGER + + max_queue_size ::= "max-queue-size" ":" INTEGER + + ncr_protocol ::= "ncr-protocol" ":" ncr_protocol_value + + ncr_protocol_value ::= "udp" + | "tcp" + + ncr_format ::= "ncr-format" ":" "JSON" + + dep_qualifying_suffix ::= "qualifying-suffix" ":" STRING + + dep_override_no_update ::= "override-no-update" ":" BOOLEAN + + dep_override_client_update ::= "override-client-update" ":" BOOLEAN + + dep_replace_client_name ::= "replace-client-name" ":" ddns_replace_client_name_value + + dep_generated_prefix ::= "generated-prefix" ":" STRING + + dep_hostname_char_set ::= "hostname-char-set" ":" STRING + + dep_hostname_char_replacement ::= "hostname-char-replacement" ":" STRING + + config_control ::= "config-control" ":" "{" config_control_params "}" + + sub_config_control ::= "{" config_control_params "}" + + config_control_params ::= config_control_param + | config_control_params "," config_control_param + | config_control_params "," + + config_control_param ::= config_databases + | config_fetch_wait_time + + config_databases ::= "config-databases" ":" "[" database_list "]" + + config_fetch_wait_time ::= "config-fetch-wait-time" ":" INTEGER + + loggers ::= "loggers" ":" "[" loggers_entries "]" + + loggers_entries ::= logger_entry + | loggers_entries "," logger_entry + | loggers_entries "," + + logger_entry ::= "{" logger_params "}" + + logger_params ::= logger_param + | logger_params "," logger_param + | logger_params "," + + logger_param ::= name + | output_options_list + | debuglevel + | severity + | user_context + | comment + | unknown_map_entry + + debuglevel ::= "debuglevel" ":" INTEGER + + severity ::= "severity" ":" STRING + + output_options_list ::= "output_options" ":" "[" output_options_list_content "]" + + output_options_list_content ::= output_entry + | output_options_list_content "," output_entry + | output_options_list_content "," + + output_entry ::= "{" output_params_list "}" + + output_params_list ::= output_params + | output_params_list "," output_params + | output_params_list "," + + output_params ::= output + | flush + | maxsize + | maxver + | pattern + + output ::= "output" ":" STRING + + flush ::= "flush" ":" BOOLEAN + + maxsize ::= "maxsize" ":" INTEGER + + maxver ::= "maxver" ":" INTEGER + + pattern ::= "pattern" ":" STRING + + compatibility ::= "compatibility" ":" "{" compatibility_params "}" + + compatibility_params ::= compatibility_param + | compatibility_params "," compatibility_param + | compatibility_params "," + + compatibility_param ::= lenient_option_parsing + | unknown_map_entry + + lenient_option_parsing ::= "lenient-option-parsing" ":" BOOLEAN + diff --git a/doc/sphinx/grammar/grammar-dhcp6-parser.rst b/doc/sphinx/grammar/grammar-dhcp6-parser.rst new file mode 100644 index 0000000..b9d4b79 --- /dev/null +++ b/doc/sphinx/grammar/grammar-dhcp6-parser.rst @@ -0,0 +1,1049 @@ +This grammar is generated from ``dhcp6_parser.yy``. See :ref:`dhcp6` for more details. + +.. code-block:: BNF + :linenos: + + Grammar + + $accept ::= start EOF + + start ::= TOPLEVEL_JSON sub_json + + start ::= TOPLEVEL_DHCP6 syntax_map + + start ::= SUB_DHCP6 sub_dhcp6 + + start ::= SUB_INTERFACES6 sub_interfaces6 + + start ::= SUB_SUBNET6 sub_subnet6 + + start ::= SUB_POOL6 sub_pool6 + + start ::= SUB_PD_POOL sub_pd_pool + + start ::= SUB_RESERVATION sub_reservation + + start ::= SUB_OPTION_DEFS sub_option_def_list + + start ::= SUB_OPTION_DEF sub_option_def + + start ::= SUB_OPTION_DATA sub_option_data + + start ::= SUB_HOOKS_LIBRARY sub_hooks_library + + start ::= SUB_DHCP_DDNS sub_dhcp_ddns + + start ::= SUB_CONFIG_CONTROL sub_config_control + + value ::= INTEGER + | FLOAT + | BOOLEAN + | STRING + | NULL + | map2 + | list_generic + + sub_json ::= value + + map2 ::= "{" map_content "}" + + map_value ::= map2 + + map_content ::= + | not_empty_map + + not_empty_map ::= STRING ":" value + | not_empty_map "," STRING ":" value + | not_empty_map "," + + list_generic ::= "[" list_content "]" + + list_content ::= + | not_empty_list + + not_empty_list ::= value + | not_empty_list "," value + | not_empty_list "," + + list_strings ::= "[" list_strings_content "]" + + list_strings_content ::= + | not_empty_list_strings + + not_empty_list_strings ::= STRING + | not_empty_list_strings "," STRING + | not_empty_list_strings "," + + unknown_map_entry ::= STRING ":" + + syntax_map ::= "{" global_object "}" + + global_object ::= "Dhcp6" ":" "{" global_params "}" + | global_object_comma + + global_object_comma ::= global_object "," + + sub_dhcp6 ::= "{" global_params "}" + + global_params ::= global_param + | global_params "," global_param + | global_params "," + + global_param ::= data_directory + | preferred_lifetime + | min_preferred_lifetime + | max_preferred_lifetime + | valid_lifetime + | min_valid_lifetime + | max_valid_lifetime + | renew_timer + | rebind_timer + | decline_probation_period + | subnet6_list + | shared_networks + | interfaces_config + | lease_database + | hosts_database + | hosts_databases + | mac_sources + | relay_supplied_options + | host_reservation_identifiers + | client_classes + | option_def_list + | option_data_list + | hooks_libraries + | expired_leases_processing + | server_id + | dhcp4o6_port + | control_socket + | dhcp_queue_control + | dhcp_ddns + | user_context + | comment + | sanity_checks + | reservations + | config_control + | server_tag + | reservation_mode + | reservations_global + | reservations_in_subnet + | reservations_out_of_pool + | calculate_tee_times + | t1_percent + | t2_percent + | cache_threshold + | cache_max_age + | loggers + | hostname_char_set + | hostname_char_replacement + | ddns_send_updates + | ddns_override_no_update + | ddns_override_client_update + | ddns_replace_client_name + | ddns_generated_prefix + | ddns_qualifying_suffix + | ddns_update_on_renew + | ddns_use_conflict_resolution + | store_extended_info + | statistic_default_sample_count + | statistic_default_sample_age + | dhcp_multi_threading + | early_global_reservations_lookup + | ip_reservations_unique + | reservations_lookup_first + | compatibility + | parked_packet_limit + | unknown_map_entry + + data_directory ::= "data-directory" ":" STRING + + preferred_lifetime ::= "preferred-lifetime" ":" INTEGER + + min_preferred_lifetime ::= "min-preferred-lifetime" ":" INTEGER + + max_preferred_lifetime ::= "max-preferred-lifetime" ":" INTEGER + + valid_lifetime ::= "valid-lifetime" ":" INTEGER + + min_valid_lifetime ::= "min-valid-lifetime" ":" INTEGER + + max_valid_lifetime ::= "max-valid-lifetime" ":" INTEGER + + renew_timer ::= "renew-timer" ":" INTEGER + + rebind_timer ::= "rebind-timer" ":" INTEGER + + calculate_tee_times ::= "calculate-tee-times" ":" BOOLEAN + + t1_percent ::= "t1-percent" ":" FLOAT + + t2_percent ::= "t2-percent" ":" FLOAT + + cache_threshold ::= "cache-threshold" ":" FLOAT + + cache_max_age ::= "cache-max-age" ":" INTEGER + + decline_probation_period ::= "decline-probation-period" ":" INTEGER + + ddns_send_updates ::= "ddns-send-updates" ":" BOOLEAN + + ddns_override_no_update ::= "ddns-override-no-update" ":" BOOLEAN + + ddns_override_client_update ::= "ddns-override-client-update" ":" BOOLEAN + + ddns_replace_client_name ::= "ddns-replace-client-name" ":" ddns_replace_client_name_value + + ddns_replace_client_name_value ::= "when-present" + | "never" + | "always" + | "when-not-present" + | BOOLEAN + + ddns_generated_prefix ::= "ddns-generated-prefix" ":" STRING + + ddns_qualifying_suffix ::= "ddns-qualifying-suffix" ":" STRING + + ddns_update_on_renew ::= "ddns-update-on-renew" ":" BOOLEAN + + ddns_use_conflict_resolution ::= "ddns-use-conflict-resolution" ":" BOOLEAN + + hostname_char_set ::= "hostname-char-set" ":" STRING + + hostname_char_replacement ::= "hostname-char-replacement" ":" STRING + + store_extended_info ::= "store-extended-info" ":" BOOLEAN + + statistic_default_sample_count ::= "statistic-default-sample-count" ":" INTEGER + + statistic_default_sample_age ::= "statistic-default-sample-age" ":" INTEGER + + server_tag ::= "server-tag" ":" STRING + + parked_packet_limit ::= "parked-packet-limit" ":" INTEGER + + early_global_reservations_lookup ::= "early-global-reservations-lookup" ":" BOOLEAN + + ip_reservations_unique ::= "ip-reservations-unique" ":" BOOLEAN + + reservations_lookup_first ::= "reservations-lookup-first" ":" BOOLEAN + + interfaces_config ::= "interfaces-config" ":" "{" interfaces_config_params "}" + + sub_interfaces6 ::= "{" interfaces_config_params "}" + + interfaces_config_params ::= interfaces_config_param + | interfaces_config_params "," interfaces_config_param + | interfaces_config_params "," + + interfaces_config_param ::= interfaces_list + | re_detect + | service_sockets_require_all + | service_sockets_retry_wait_time + | service_sockets_max_retries + | user_context + | comment + | unknown_map_entry + + interfaces_list ::= "interfaces" ":" list_strings + + re_detect ::= "re-detect" ":" BOOLEAN + + service_sockets_require_all ::= "service-sockets-require-all" ":" BOOLEAN + + service_sockets_retry_wait_time ::= "service-sockets-retry-wait-time" ":" INTEGER + + service_sockets_max_retries ::= "service-sockets-max-retries" ":" INTEGER + + lease_database ::= "lease-database" ":" "{" database_map_params "}" + + hosts_database ::= "hosts-database" ":" "{" database_map_params "}" + + hosts_databases ::= "hosts-databases" ":" "[" database_list "]" + + database_list ::= + | not_empty_database_list + + not_empty_database_list ::= database + | not_empty_database_list "," database + | not_empty_database_list "," + + database ::= "{" database_map_params "}" + + database_map_params ::= database_map_param + | database_map_params "," database_map_param + | database_map_params "," + + database_map_param ::= database_type + | user + | password + | host + | port + | name + | persist + | lfc_interval + | readonly + | connect_timeout + | max_reconnect_tries + | reconnect_wait_time + | on_fail + | max_row_errors + | trust_anchor + | cert_file + | key_file + | cipher_list + | unknown_map_entry + + database_type ::= "type" ":" db_type + + db_type ::= "memfile" + | "mysql" + | "postgresql" + + user ::= "user" ":" STRING + + password ::= "password" ":" STRING + + host ::= "host" ":" STRING + + port ::= "port" ":" INTEGER + + name ::= "name" ":" STRING + + persist ::= "persist" ":" BOOLEAN + + lfc_interval ::= "lfc-interval" ":" INTEGER + + readonly ::= "readonly" ":" BOOLEAN + + connect_timeout ::= "connect-timeout" ":" INTEGER + + reconnect_wait_time ::= "reconnect-wait-time" ":" INTEGER + + on_fail ::= "on-fail" ":" on_fail_mode + + on_fail_mode ::= "stop-retry-exit" + | "serve-retry-exit" + | "serve-retry-continue" + + max_row_errors ::= "max-row-errors" ":" INTEGER + + max_reconnect_tries ::= "max-reconnect-tries" ":" INTEGER + + trust_anchor ::= "trust-anchor" ":" STRING + + cert_file ::= "cert-file" ":" STRING + + key_file ::= "key-file" ":" STRING + + cipher_list ::= "cipher-list" ":" STRING + + sanity_checks ::= "sanity-checks" ":" "{" sanity_checks_params "}" + + sanity_checks_params ::= sanity_checks_param + | sanity_checks_params "," sanity_checks_param + | sanity_checks_params "," + + sanity_checks_param ::= lease_checks + + lease_checks ::= "lease-checks" ":" STRING + + mac_sources ::= "mac-sources" ":" "[" mac_sources_list "]" + + mac_sources_list ::= mac_sources_value + | mac_sources_list "," mac_sources_value + | mac_sources_list "," + + mac_sources_value ::= duid_id + | string_id + + duid_id ::= "duid" + + string_id ::= STRING + + host_reservation_identifiers ::= "host-reservation-identifiers" ":" "[" host_reservation_identifiers_list "]" + + host_reservation_identifiers_list ::= host_reservation_identifier + | host_reservation_identifiers_list "," host_reservation_identifier + | host_reservation_identifiers_list "," + + host_reservation_identifier ::= duid_id + | hw_address_id + | flex_id + + hw_address_id ::= "hw-address" + + flex_id ::= "flex-id" + + relay_supplied_options ::= "relay-supplied-options" ":" "[" list_content "]" + + dhcp_multi_threading ::= "multi-threading" ":" "{" multi_threading_params "}" + + multi_threading_params ::= multi_threading_param + | multi_threading_params "," multi_threading_param + | multi_threading_params "," + + multi_threading_param ::= enable_multi_threading + | thread_pool_size + | packet_queue_size + | user_context + | comment + | unknown_map_entry + + enable_multi_threading ::= "enable-multi-threading" ":" BOOLEAN + + thread_pool_size ::= "thread-pool-size" ":" INTEGER + + packet_queue_size ::= "packet-queue-size" ":" INTEGER + + hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]" + + hooks_libraries_list ::= + | not_empty_hooks_libraries_list + + not_empty_hooks_libraries_list ::= hooks_library + | not_empty_hooks_libraries_list "," hooks_library + | not_empty_hooks_libraries_list "," + + hooks_library ::= "{" hooks_params "}" + + sub_hooks_library ::= "{" hooks_params "}" + + hooks_params ::= hooks_param + | hooks_params "," hooks_param + | hooks_params "," + | unknown_map_entry + + hooks_param ::= library + | parameters + + library ::= "library" ":" STRING + + parameters ::= "parameters" ":" map_value + + expired_leases_processing ::= "expired-leases-processing" ":" "{" expired_leases_params "}" + + expired_leases_params ::= expired_leases_param + | expired_leases_params "," expired_leases_param + | expired_leases_params "," + + expired_leases_param ::= reclaim_timer_wait_time + | flush_reclaimed_timer_wait_time + | hold_reclaimed_time + | max_reclaim_leases + | max_reclaim_time + | unwarned_reclaim_cycles + + reclaim_timer_wait_time ::= "reclaim-timer-wait-time" ":" INTEGER + + flush_reclaimed_timer_wait_time ::= "flush-reclaimed-timer-wait-time" ":" INTEGER + + hold_reclaimed_time ::= "hold-reclaimed-time" ":" INTEGER + + max_reclaim_leases ::= "max-reclaim-leases" ":" INTEGER + + max_reclaim_time ::= "max-reclaim-time" ":" INTEGER + + unwarned_reclaim_cycles ::= "unwarned-reclaim-cycles" ":" INTEGER + + subnet6_list ::= "subnet6" ":" "[" subnet6_list_content "]" + + subnet6_list_content ::= + | not_empty_subnet6_list + + not_empty_subnet6_list ::= subnet6 + | not_empty_subnet6_list "," subnet6 + | not_empty_subnet6_list "," + + subnet6 ::= "{" subnet6_params "}" + + sub_subnet6 ::= "{" subnet6_params "}" + + subnet6_params ::= subnet6_param + | subnet6_params "," subnet6_param + | subnet6_params "," + + subnet6_param ::= preferred_lifetime + | min_preferred_lifetime + | max_preferred_lifetime + | valid_lifetime + | min_valid_lifetime + | max_valid_lifetime + | renew_timer + | rebind_timer + | option_data_list + | pools_list + | pd_pools_list + | subnet + | interface + | interface_id + | id + | rapid_commit + | client_class + | require_client_classes + | reservations + | reservation_mode + | reservations_global + | reservations_in_subnet + | reservations_out_of_pool + | relay + | user_context + | comment + | calculate_tee_times + | t1_percent + | t2_percent + | cache_threshold + | cache_max_age + | hostname_char_set + | hostname_char_replacement + | ddns_send_updates + | ddns_override_no_update + | ddns_override_client_update + | ddns_replace_client_name + | ddns_generated_prefix + | ddns_qualifying_suffix + | ddns_update_on_renew + | ddns_use_conflict_resolution + | store_extended_info + | unknown_map_entry + + subnet ::= "subnet" ":" STRING + + interface ::= "interface" ":" STRING + + interface_id ::= "interface-id" ":" STRING + + client_class ::= "client-class" ":" STRING + + require_client_classes ::= "require-client-classes" ":" list_strings + + reservations_global ::= "reservations-global" ":" BOOLEAN + + reservations_in_subnet ::= "reservations-in-subnet" ":" BOOLEAN + + reservations_out_of_pool ::= "reservations-out-of-pool" ":" BOOLEAN + + reservation_mode ::= "reservation-mode" ":" hr_mode + + hr_mode ::= "disabled" + | "out-of-pool" + | "global" + | "all" + + id ::= "id" ":" INTEGER + + rapid_commit ::= "rapid-commit" ":" BOOLEAN + + shared_networks ::= "shared-networks" ":" "[" shared_networks_content "]" + + shared_networks_content ::= + | shared_networks_list + + shared_networks_list ::= shared_network + | shared_networks_list "," shared_network + | shared_networks_list "," + + shared_network ::= "{" shared_network_params "}" + + shared_network_params ::= shared_network_param + | shared_network_params "," shared_network_param + | shared_network_params "," + + shared_network_param ::= name + | subnet6_list + | interface + | interface_id + | renew_timer + | rebind_timer + | option_data_list + | relay + | reservation_mode + | reservations_global + | reservations_in_subnet + | reservations_out_of_pool + | client_class + | require_client_classes + | preferred_lifetime + | min_preferred_lifetime + | max_preferred_lifetime + | rapid_commit + | valid_lifetime + | min_valid_lifetime + | max_valid_lifetime + | user_context + | comment + | calculate_tee_times + | t1_percent + | t2_percent + | cache_threshold + | cache_max_age + | hostname_char_set + | hostname_char_replacement + | ddns_send_updates + | ddns_override_no_update + | ddns_override_client_update + | ddns_replace_client_name + | ddns_generated_prefix + | ddns_qualifying_suffix + | ddns_update_on_renew + | ddns_use_conflict_resolution + | store_extended_info + | unknown_map_entry + + option_def_list ::= "option-def" ":" "[" option_def_list_content "]" + + sub_option_def_list ::= "{" option_def_list "}" + + option_def_list_content ::= + | not_empty_option_def_list + + not_empty_option_def_list ::= option_def_entry + | not_empty_option_def_list "," option_def_entry + | not_empty_option_def_list "," + + option_def_entry ::= "{" option_def_params "}" + + sub_option_def ::= "{" option_def_params "}" + + option_def_params ::= + | not_empty_option_def_params + + not_empty_option_def_params ::= option_def_param + | not_empty_option_def_params "," option_def_param + | not_empty_option_def_params "," + + option_def_param ::= option_def_name + | option_def_code + | option_def_type + | option_def_record_types + | option_def_space + | option_def_encapsulate + | option_def_array + | user_context + | comment + | unknown_map_entry + + option_def_name ::= name + + code ::= "code" ":" INTEGER + + option_def_code ::= code + + option_def_type ::= "type" ":" STRING + + option_def_record_types ::= "record-types" ":" STRING + + space ::= "space" ":" STRING + + option_def_space ::= space + + option_def_encapsulate ::= "encapsulate" ":" STRING + + option_def_array ::= "array" ":" BOOLEAN + + option_data_list ::= "option-data" ":" "[" option_data_list_content "]" + + option_data_list_content ::= + | not_empty_option_data_list + + not_empty_option_data_list ::= option_data_entry + | not_empty_option_data_list "," option_data_entry + | not_empty_option_data_list "," + + option_data_entry ::= "{" option_data_params "}" + + sub_option_data ::= "{" option_data_params "}" + + option_data_params ::= + | not_empty_option_data_params + + not_empty_option_data_params ::= option_data_param + | not_empty_option_data_params "," option_data_param + | not_empty_option_data_params "," + + option_data_param ::= option_data_name + | option_data_data + | option_data_code + | option_data_space + | option_data_csv_format + | option_data_always_send + | user_context + | comment + | unknown_map_entry + + option_data_name ::= name + + option_data_data ::= "data" ":" STRING + + option_data_code ::= code + + option_data_space ::= space + + option_data_csv_format ::= "csv-format" ":" BOOLEAN + + option_data_always_send ::= "always-send" ":" BOOLEAN + + pools_list ::= "pools" ":" "[" pools_list_content "]" + + pools_list_content ::= + | not_empty_pools_list + + not_empty_pools_list ::= pool_list_entry + | not_empty_pools_list "," pool_list_entry + | not_empty_pools_list "," + + pool_list_entry ::= "{" pool_params "}" + + sub_pool6 ::= "{" pool_params "}" + + pool_params ::= pool_param + | pool_params "," pool_param + | pool_params "," + + pool_param ::= pool_entry + | option_data_list + | client_class + | require_client_classes + | user_context + | comment + | unknown_map_entry + + pool_entry ::= "pool" ":" STRING + + user_context ::= "user-context" ":" map_value + + comment ::= "comment" ":" STRING + + pd_pools_list ::= "pd-pools" ":" "[" pd_pools_list_content "]" + + pd_pools_list_content ::= + | not_empty_pd_pools_list + + not_empty_pd_pools_list ::= pd_pool_entry + | not_empty_pd_pools_list "," pd_pool_entry + | not_empty_pd_pools_list "," + + pd_pool_entry ::= "{" pd_pool_params "}" + + sub_pd_pool ::= "{" pd_pool_params "}" + + pd_pool_params ::= pd_pool_param + | pd_pool_params "," pd_pool_param + | pd_pool_params "," + + pd_pool_param ::= pd_prefix + | pd_prefix_len + | pd_delegated_len + | option_data_list + | client_class + | require_client_classes + | excluded_prefix + | excluded_prefix_len + | user_context + | comment + | unknown_map_entry + + pd_prefix ::= "prefix" ":" STRING + + pd_prefix_len ::= "prefix-len" ":" INTEGER + + excluded_prefix ::= "excluded-prefix" ":" STRING + + excluded_prefix_len ::= "excluded-prefix-len" ":" INTEGER + + pd_delegated_len ::= "delegated-len" ":" INTEGER + + reservations ::= "reservations" ":" "[" reservations_list "]" + + reservations_list ::= + | not_empty_reservations_list + + not_empty_reservations_list ::= reservation + | not_empty_reservations_list "," reservation + | not_empty_reservations_list "," + + reservation ::= "{" reservation_params "}" + + sub_reservation ::= "{" reservation_params "}" + + reservation_params ::= + | not_empty_reservation_params + + not_empty_reservation_params ::= reservation_param + | not_empty_reservation_params "," reservation_param + | not_empty_reservation_params "," + + reservation_param ::= duid + | reservation_client_classes + | ip_addresses + | prefixes + | hw_address + | hostname + | flex_id_value + | option_data_list + | user_context + | comment + | unknown_map_entry + + ip_addresses ::= "ip-addresses" ":" list_strings + + prefixes ::= "prefixes" ":" list_strings + + duid ::= "duid" ":" STRING + + hw_address ::= "hw-address" ":" STRING + + hostname ::= "hostname" ":" STRING + + flex_id_value ::= "flex-id" ":" STRING + + reservation_client_classes ::= "client-classes" ":" list_strings + + relay ::= "relay" ":" "{" relay_map "}" + + relay_map ::= ip_address + | ip_addresses + + ip_address ::= "ip-address" ":" STRING + + client_classes ::= "client-classes" ":" "[" client_classes_list "]" + + client_classes_list ::= client_class_entry + | client_classes_list "," client_class_entry + | client_classes_list "," + + client_class_entry ::= "{" client_class_params "}" + + client_class_params ::= + | not_empty_client_class_params + + not_empty_client_class_params ::= client_class_param + | not_empty_client_class_params "," client_class_param + | not_empty_client_class_params "," + + client_class_param ::= client_class_name + | client_class_test + | only_if_required + | option_data_list + | user_context + | comment + | preferred_lifetime + | min_preferred_lifetime + | max_preferred_lifetime + | valid_lifetime + | min_valid_lifetime + | max_valid_lifetime + | unknown_map_entry + + client_class_name ::= name + + client_class_test ::= "test" ":" STRING + + only_if_required ::= "only-if-required" ":" BOOLEAN + + server_id ::= "server-id" ":" "{" server_id_params "}" + + server_id_params ::= server_id_param + | server_id_params "," server_id_param + | server_id_params "," + + server_id_param ::= server_id_type + | identifier + | time + | htype + | enterprise_id + | persist + | user_context + | comment + | unknown_map_entry + + server_id_type ::= "type" ":" duid_type + + duid_type ::= "LLT" + | "EN" + | "LL" + + htype ::= "htype" ":" INTEGER + + identifier ::= "identifier" ":" STRING + + time ::= "time" ":" INTEGER + + enterprise_id ::= "enterprise-id" ":" INTEGER + + dhcp4o6_port ::= "dhcp4o6-port" ":" INTEGER + + control_socket ::= "control-socket" ":" "{" control_socket_params "}" + + control_socket_params ::= control_socket_param + | control_socket_params "," control_socket_param + | control_socket_params "," + + control_socket_param ::= socket_type + | socket_name + | user_context + | comment + | unknown_map_entry + + socket_type ::= "socket-type" ":" STRING + + socket_name ::= "socket-name" ":" STRING + + dhcp_queue_control ::= "dhcp-queue-control" ":" "{" queue_control_params "}" + + queue_control_params ::= queue_control_param + | queue_control_params "," queue_control_param + | queue_control_params "," + + queue_control_param ::= enable_queue + | queue_type + | capacity + | user_context + | comment + | arbitrary_map_entry + + enable_queue ::= "enable-queue" ":" BOOLEAN + + queue_type ::= "queue-type" ":" STRING + + capacity ::= "capacity" ":" INTEGER + + arbitrary_map_entry ::= STRING ":" value + + dhcp_ddns ::= "dhcp-ddns" ":" "{" dhcp_ddns_params "}" + + sub_dhcp_ddns ::= "{" dhcp_ddns_params "}" + + dhcp_ddns_params ::= dhcp_ddns_param + | dhcp_ddns_params "," dhcp_ddns_param + | dhcp_ddns_params "," + + dhcp_ddns_param ::= enable_updates + | server_ip + | server_port + | sender_ip + | sender_port + | max_queue_size + | ncr_protocol + | ncr_format + | dep_override_no_update + | dep_override_client_update + | dep_replace_client_name + | dep_generated_prefix + | dep_qualifying_suffix + | dep_hostname_char_set + | dep_hostname_char_replacement + | user_context + | comment + | unknown_map_entry + + enable_updates ::= "enable-updates" ":" BOOLEAN + + dep_qualifying_suffix ::= "qualifying-suffix" ":" STRING + + server_ip ::= "server-ip" ":" STRING + + server_port ::= "server-port" ":" INTEGER + + sender_ip ::= "sender-ip" ":" STRING + + sender_port ::= "sender-port" ":" INTEGER + + max_queue_size ::= "max-queue-size" ":" INTEGER + + ncr_protocol ::= "ncr-protocol" ":" ncr_protocol_value + + ncr_protocol_value ::= "UDP" + | "TCP" + + ncr_format ::= "ncr-format" ":" "JSON" + + dep_override_no_update ::= "override-no-update" ":" BOOLEAN + + dep_override_client_update ::= "override-client-update" ":" BOOLEAN + + dep_replace_client_name ::= "replace-client-name" ":" ddns_replace_client_name_value + + dep_generated_prefix ::= "generated-prefix" ":" STRING + + dep_hostname_char_set ::= "hostname-char-set" ":" STRING + + dep_hostname_char_replacement ::= "hostname-char-replacement" ":" STRING + + config_control ::= "config-control" ":" "{" config_control_params "}" + + sub_config_control ::= "{" config_control_params "}" + + config_control_params ::= config_control_param + | config_control_params "," config_control_param + | config_control_params "," + + config_control_param ::= config_databases + | config_fetch_wait_time + + config_databases ::= "config-databases" ":" "[" database_list "]" + + config_fetch_wait_time ::= "config-fetch-wait-time" ":" INTEGER + + loggers ::= "loggers" ":" "[" loggers_entries "]" + + loggers_entries ::= logger_entry + | loggers_entries "," logger_entry + | loggers_entries "," + + logger_entry ::= "{" logger_params "}" + + logger_params ::= logger_param + | logger_params "," logger_param + | logger_params "," + + logger_param ::= name + | output_options_list + | debuglevel + | severity + | user_context + | comment + | unknown_map_entry + + debuglevel ::= "debuglevel" ":" INTEGER + + severity ::= "severity" ":" STRING + + output_options_list ::= "output_options" ":" "[" output_options_list_content "]" + + output_options_list_content ::= output_entry + | output_options_list_content "," output_entry + | output_options_list_content "," + + output_entry ::= "{" output_params_list "}" + + output_params_list ::= output_params + | output_params_list "," output_params + | output_params_list "," + + output_params ::= output + | flush + | maxsize + | maxver + | pattern + + output ::= "output" ":" STRING + + flush ::= "flush" ":" BOOLEAN + + maxsize ::= "maxsize" ":" INTEGER + + maxver ::= "maxver" ":" INTEGER + + pattern ::= "pattern" ":" STRING + + compatibility ::= "compatibility" ":" "{" compatibility_params "}" + + compatibility_params ::= compatibility_param + | compatibility_params "," compatibility_param + | compatibility_params "," + + compatibility_param ::= lenient_option_parsing + | unknown_map_entry + + lenient_option_parsing ::= "lenient-option-parsing" ":" BOOLEAN + diff --git a/doc/sphinx/grammar/grammar-netconf-parser.rst b/doc/sphinx/grammar/grammar-netconf-parser.rst new file mode 100644 index 0000000..0594706 --- /dev/null +++ b/doc/sphinx/grammar/grammar-netconf-parser.rst @@ -0,0 +1,221 @@ +This grammar is generated from ``netconf_parser.yy``. See :ref:`netconf` for more details. + +.. code-block:: BNF + :linenos: + + Grammar + + $accept ::= start EOF + + start ::= START_JSON json + + start ::= START_NETCONF netconf_syntax_map + + start ::= START_SUB_NETCONF sub_netconf + + sub_netconf ::= "{" global_params "}" + + json ::= value + + value ::= INTEGER + | FLOAT + | BOOLEAN + | STRING + | NULL + | map + | list_generic + + map ::= "{" map_content "}" + + map_value ::= map + + map_content ::= + | not_empty_map + + not_empty_map ::= STRING ":" value + | not_empty_map "," STRING ":" value + | not_empty_map "," + + list_generic ::= "[" list_content "]" + + list_content ::= + | not_empty_list + + not_empty_list ::= value + | not_empty_list "," value + | not_empty_list "," + + unknown_map_entry ::= STRING ":" + + netconf_syntax_map ::= "{" global_object "}" + + global_object ::= "Netconf" ":" "{" global_params "}" + | global_object_comma + + global_object_comma ::= global_object "," + + global_params ::= + | not_empty_global_params + + not_empty_global_params ::= global_param + | not_empty_global_params "," global_param + | not_empty_global_params "," + + global_param ::= boot_update + | subscribe_changes + | validate_changes + | managed_servers + | hooks_libraries + | loggers + | user_context + | comment + | unknown_map_entry + + boot_update ::= "boot-update" ":" BOOLEAN + + subscribe_changes ::= "subscribe-changes" ":" BOOLEAN + + validate_changes ::= "validate-changes" ":" BOOLEAN + + user_context ::= "user-context" ":" map_value + + comment ::= "comment" ":" STRING + + hooks_libraries ::= "hooks-libraries" ":" "[" hooks_libraries_list "]" + + hooks_libraries_list ::= + | not_empty_hooks_libraries_list + + not_empty_hooks_libraries_list ::= hooks_library + | not_empty_hooks_libraries_list "," hooks_library + | not_empty_hooks_libraries_list "," + + hooks_library ::= "{" hooks_params "}" + + hooks_params ::= hooks_param + | hooks_params "," hooks_param + | hooks_params "," + | unknown_map_entry + + hooks_param ::= library + | parameters + + library ::= "library" ":" STRING + + parameters ::= "parameters" ":" map_value + + managed_servers ::= "managed-servers" ":" "{" servers_entries "}" + + servers_entries ::= + | not_empty_servers_entries + + not_empty_servers_entries ::= server_entry + | not_empty_servers_entries "," server_entry + | not_empty_servers_entries "," + + server_entry ::= dhcp4_server + | dhcp6_server + | d2_server + | ca_server + | unknown_map_entry + + dhcp4_server ::= "dhcp4" ":" "{" managed_server_params "}" + + dhcp6_server ::= "dhcp6" ":" "{" managed_server_params "}" + + d2_server ::= "d2" ":" "{" managed_server_params "}" + + ca_server ::= "ca" ":" "{" managed_server_params "}" + + managed_server_params ::= managed_server_param + | managed_server_params "," managed_server_param + | managed_server_params "," + + managed_server_param ::= model + | boot_update + | subscribe_changes + | validate_changes + | control_socket + | user_context + | comment + | unknown_map_entry + + model ::= "model" ":" STRING + + control_socket ::= "control-socket" ":" "{" control_socket_params "}" + + control_socket_params ::= control_socket_param + | control_socket_params "," control_socket_param + | control_socket_params "," + + control_socket_param ::= socket_type + | socket_name + | socket_url + | user_context + | comment + | unknown_map_entry + + socket_type ::= "socket-type" ":" socket_type_value + + socket_type_value ::= "unix" + | "http" + | "stdout" + + socket_name ::= "socket-name" ":" STRING + + socket_url ::= "socket-url" ":" STRING + + loggers ::= "loggers" ":" "[" loggers_entries "]" + + loggers_entries ::= logger_entry + | loggers_entries "," logger_entry + | loggers_entries "," + + logger_entry ::= "{" logger_params "}" + + logger_params ::= logger_param + | logger_params "," logger_param + | logger_params "," + + logger_param ::= name + | output_options_list + | debuglevel + | severity + | user_context + | comment + | unknown_map_entry + + name ::= "name" ":" STRING + + debuglevel ::= "debuglevel" ":" INTEGER + + severity ::= "severity" ":" STRING + + output_options_list ::= "output_options" ":" "[" output_options_list_content "]" + + output_options_list_content ::= output_entry + | output_options_list_content "," output_entry + | output_options_list_content "," + + output_entry ::= "{" output_params_list "}" + + output_params_list ::= output_params + | output_params_list "," output_params + | output_params_list "," + + output_params ::= output + | flush + | maxsize + | maxver + | pattern + + output ::= "output" ":" STRING + + flush ::= "flush" ":" BOOLEAN + + maxsize ::= "maxsize" ":" INTEGER + + maxver ::= "maxver" ":" INTEGER + + pattern ::= "pattern" ":" STRING + diff --git a/doc/sphinx/grammar/grammar.rst b/doc/sphinx/grammar/grammar.rst new file mode 100644 index 0000000..d8f77b0 --- /dev/null +++ b/doc/sphinx/grammar/grammar.rst @@ -0,0 +1,44 @@ +.. + Copyright (C) 2021-2022 Internet Systems Consortium, Inc. ("ISC") + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + + See the COPYRIGHT file distributed with this work for additional + information regarding copyright ownership. + +.. _bnf-grammar: + +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 <https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form>`_ for +more information. + +BNF Grammar for DHCPv4 +---------------------- + +.. include:: grammar-dhcp4-parser.rst + +BNF Grammar for DHCPv6 +---------------------- + +.. include:: grammar-dhcp6-parser.rst + +BNF Grammar for Control Agent +----------------------------- + +.. include:: grammar-ca-parser.rst + +BNF Grammar for DHCP-DDNS +------------------------- + +.. include:: grammar-d2-parser.rst + +BNF Grammar for the Kea NETCONF Agent +------------------------------------- + +.. include:: grammar-netconf-parser.rst |