From 30918dc9f706beec7fb5bd9948175ce3b03f9e48 Mon Sep 17 00:00:00 2001 From: Daniel Akulenok Date: Sat, 31 Jan 2026 22:05:58 +0100 Subject: [PATCH] Add zone option JSON files for BIND9 grammar - Created primary.zoneopt.json to define grammar for primary zones with various options including allow-query, allow-transfer, and DNSSEC settings. - Added redirect.zoneopt.json for redirect zones, specifying options like allow-query and primaries. - Introduced secondary.zoneopt.json for secondary zones, detailing options such as allow-notify, forwarders, and notify configurations. - Implemented static-stub.zoneopt.json for static stub zones, including server-addresses and server-names options. - Added stub.zoneopt.json for stub zones, defining options like check-names and forwarders. - Created zoneopt.json as a general template for zone options, incorporating common fields across different zone types. --- CONFIGURATION_GRAMMAR.md | 13 + bind9-grammar/forward.zoneopt.json | 19 + bind9-grammar/hint.zoneopt.json | 19 + bind9-grammar/in-view.zoneopt.json | 10 + bind9-grammar/mirror.zoneopt.json | 171 ++ bind9-grammar/options.json | 2315 ++++++++++++++++++++++++ bind9-grammar/primary.zoneopt.json | 258 +++ bind9-grammar/redirect.zoneopt.json | 58 + bind9-grammar/secondary.zoneopt.json | 258 +++ bind9-grammar/static-stub.zoneopt.json | 43 + bind9-grammar/stub.zoneopt.json | 85 + bind9-grammar/zoneopt.json | 85 + molecule/default/converge.yml | 74 + 13 files changed, 3408 insertions(+) create mode 100644 bind9-grammar/forward.zoneopt.json create mode 100644 bind9-grammar/hint.zoneopt.json create mode 100644 bind9-grammar/in-view.zoneopt.json create mode 100644 bind9-grammar/mirror.zoneopt.json create mode 100644 bind9-grammar/options.json create mode 100644 bind9-grammar/primary.zoneopt.json create mode 100644 bind9-grammar/redirect.zoneopt.json create mode 100644 bind9-grammar/secondary.zoneopt.json create mode 100644 bind9-grammar/static-stub.zoneopt.json create mode 100644 bind9-grammar/stub.zoneopt.json create mode 100644 bind9-grammar/zoneopt.json diff --git a/CONFIGURATION_GRAMMAR.md b/CONFIGURATION_GRAMMAR.md index fdde2df..211a80f 100644 --- a/CONFIGURATION_GRAMMAR.md +++ b/CONFIGURATION_GRAMMAR.md @@ -541,6 +541,19 @@ options: # Logging querylog: + # DNSTAP - DNS traffic capture + dnstap: # List of message types to capture + - type: # Message type (required) + log: # Optional: specific direction + dnstap_output: # Output destination (required if dnstap is set) + output_type: # Output type: file or unix socket (required) + output_file: # File path or socket path (required) + size: # Optional: Max file size before rotation + versions: # Optional: Number of versions to keep + suffix: # Optional: Rotation suffix type + dnstap_identity: # Optional: Identity string (defaults to hostname) + dnstap_version: # Optional: Version string (defaults to BIND version) + # Zone management check_names: check_dup_records: diff --git a/bind9-grammar/forward.zoneopt.json b/bind9-grammar/forward.zoneopt.json new file mode 100644 index 0000000..2fcf4c2 --- /dev/null +++ b/bind9-grammar/forward.zoneopt.json @@ -0,0 +1,19 @@ +{ + "zone": { + "_id": " [ ]", + "_mapbody": { + "type": { + "_grammar": "forward" + }, + "forward": { + "_grammar": "( first | only )" + }, + "forwarders": { + "_grammar": "[ port ] [ tls ] { ( | ) [ port ] [ tls ]; ... }" + }, + "template": { + "_grammar": "" + } + } + } +} diff --git a/bind9-grammar/hint.zoneopt.json b/bind9-grammar/hint.zoneopt.json new file mode 100644 index 0000000..a88c3ad --- /dev/null +++ b/bind9-grammar/hint.zoneopt.json @@ -0,0 +1,19 @@ +{ + "zone": { + "_id": " [ ]", + "_mapbody": { + "type": { + "_grammar": "hint" + }, + "check-names": { + "_grammar": "( fail | warn | ignore )" + }, + "file": { + "_grammar": "" + }, + "template": { + "_grammar": "" + } + } + } +} diff --git a/bind9-grammar/in-view.zoneopt.json b/bind9-grammar/in-view.zoneopt.json new file mode 100644 index 0000000..70bfa3a --- /dev/null +++ b/bind9-grammar/in-view.zoneopt.json @@ -0,0 +1,10 @@ +{ + "zone": { + "_id": " [ ]", + "_mapbody": { + "in-view": { + "_grammar": "" + } + } + } +} diff --git a/bind9-grammar/mirror.zoneopt.json b/bind9-grammar/mirror.zoneopt.json new file mode 100644 index 0000000..519cdc2 --- /dev/null +++ b/bind9-grammar/mirror.zoneopt.json @@ -0,0 +1,171 @@ +{ + "zone": { + "_id": " [ ]", + "_mapbody": { + "type": { + "_grammar": "mirror" + }, + "allow-notify": { + "_grammar": "{ ; ... }" + }, + "allow-query": { + "_grammar": "{ ; ... }" + }, + "allow-query-on": { + "_grammar": "{ ; ... }" + }, + "allow-transfer": { + "_grammar": "[ port ] [ transport ] { ; ... }" + }, + "allow-update-forwarding": { + "_grammar": "{ ; ... }" + }, + "also-notify": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "check-names": { + "_grammar": "( fail | warn | ignore )" + }, + "database": { + "_grammar": "" + }, + "file": { + "_grammar": "" + }, + "ixfr-from-differences": { + "_grammar": "" + }, + "journal": { + "_grammar": "" + }, + "masterfile-format": { + "_grammar": "( raw | text )" + }, + "masterfile-style": { + "_grammar": "( full | relative )" + }, + "max-ixfr-ratio": { + "_grammar": "( unlimited | )" + }, + "max-journal-size": { + "_grammar": "( default | unlimited | )" + }, + "max-records": { + "_grammar": "" + }, + "max-records-per-type": { + "_grammar": "" + }, + "max-refresh-time": { + "_grammar": "" + }, + "max-retry-time": { + "_grammar": "" + }, + "max-transfer-idle-in": { + "_grammar": "" + }, + "max-transfer-idle-out": { + "_grammar": "" + }, + "max-transfer-time-in": { + "_grammar": "" + }, + "max-transfer-time-out": { + "_grammar": "" + }, + "max-types-per-name": { + "_grammar": "" + }, + "min-refresh-time": { + "_grammar": "" + }, + "min-retry-time": { + "_grammar": "" + }, + "min-transfer-rate-in": { + "_grammar": " " + }, + "multi-master": { + "_grammar": "" + }, + "notify": { + "_grammar": "( explicit | master-only | primary-only | )" + }, + "notify-cfg": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "notify": { + "_grammar": "" + }, + "notify-defer": { + "_grammar": "" + }, + "notify-delay": { + "_grammar": "" + }, + "notify-source": { + "_grammar": "( | * )" + }, + "notify-source-v6": { + "_grammar": "( | * )" + } + } + }, + "notify-defer": { + "_grammar": "" + }, + "notify-delay": { + "_grammar": "" + }, + "notify-source": { + "_grammar": "( | * )" + }, + "notify-source-v6": { + "_grammar": "( | * )" + }, + "plugin": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "( query ) [ { } ]" + }, + "primaries": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "provide-zoneversion": { + "_grammar": "" + }, + "request-expire": { + "_grammar": "" + }, + "request-ixfr": { + "_grammar": "" + }, + "request-ixfr-max-diffs": { + "_grammar": "" + }, + "template": { + "_grammar": "" + }, + "transfer-source": { + "_grammar": "( | * )" + }, + "transfer-source-v6": { + "_grammar": "( | * )" + }, + "try-tcp-refresh": { + "_grammar": "" + }, + "zero-no-soa-ttl": { + "_grammar": "" + }, + "zone-statistics": { + "_grammar": "( full | terse | none | )" + } + } + } +} diff --git a/bind9-grammar/options.json b/bind9-grammar/options.json new file mode 100644 index 0000000..3d75ceb --- /dev/null +++ b/bind9-grammar/options.json @@ -0,0 +1,2315 @@ +{ + "acl": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": " { ; ... }" + }, + "controls": { + "_flags": [ + "may occur multiple times" + ], + "_mapbody": { + "inet": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "( | | * ) [ port ( | * ) ] allow { ; ... } [ keys { ; ... } ] [ read-only ]" + }, + "unix": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": " perm owner group [ keys { ; ... } ] [ read-only ]" + } + } + }, + "dlz": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "database": { + "_grammar": "" + }, + "search": { + "_grammar": "" + } + } + }, + "dnssec-policy": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "cdnskey": { + "_grammar": "" + }, + "cds-digest-types": { + "_grammar": "{ ; ... }" + }, + "dnskey-ttl": { + "_grammar": "" + }, + "inline-signing": { + "_grammar": "" + }, + "keys": { + "_grammar": "{ ( csk | ksk | zsk ) [ key-directory | key-store ] lifetime algorithm [ tag-range ] [ ]; ... }" + }, + "manual-mode": { + "_grammar": "" + }, + "max-zone-ttl": { + "_grammar": "" + }, + "nsec3param": { + "_grammar": "[ iterations ] [ optout ] [ salt-length ]" + }, + "offline-ksk": { + "_grammar": "" + }, + "parent-ds-ttl": { + "_grammar": "" + }, + "parent-propagation-delay": { + "_grammar": "" + }, + "publish-safety": { + "_grammar": "" + }, + "purge-keys": { + "_grammar": "" + }, + "retire-safety": { + "_grammar": "" + }, + "signatures-jitter": { + "_grammar": "" + }, + "signatures-refresh": { + "_grammar": "" + }, + "signatures-validity": { + "_grammar": "" + }, + "signatures-validity-dnskey": { + "_grammar": "" + }, + "zone-propagation-delay": { + "_grammar": "" + } + } + }, + "dyndb": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": " { }" + }, + "http": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "endpoints": { + "_grammar": "{ ; ... }" + }, + "listener-clients": { + "_grammar": "" + }, + "streams-per-connection": { + "_grammar": "" + } + } + }, + "key": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "algorithm": { + "_grammar": "" + }, + "secret": { + "_grammar": "" + } + } + }, + "key-store": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "directory": { + "_grammar": "" + }, + "pkcs11-uri": { + "_grammar": "" + } + } + }, + "logging": { + "_mapbody": { + "category": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": " { ; ... }" + }, + "channel": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "buffered": { + "_grammar": "" + }, + "file": { + "_grammar": " [ versions ( unlimited | ) ] [ size ] [ suffix ( increment | timestamp ) ]" + }, + "null": { + "_grammar": "" + }, + "print-category": { + "_grammar": "" + }, + "print-severity": { + "_grammar": "" + }, + "print-time": { + "_grammar": "( iso8601 | iso8601-utc | iso8601-tzinfo | local | )" + }, + "severity": { + "_grammar": "" + }, + "stderr": { + "_grammar": "" + }, + "syslog": { + "_grammar": "[ ]" + } + } + } + } + }, + "options": { + "_mapbody": { + "allow-new-zones": { + "_grammar": "" + }, + "allow-notify": { + "_grammar": "{ ; ... }" + }, + "allow-proxy": { + "_flags": [ + "experimental" + ], + "_grammar": "{ ; ... }" + }, + "allow-proxy-on": { + "_flags": [ + "experimental" + ], + "_grammar": "{ ; ... }" + }, + "allow-query": { + "_grammar": "{ ; ... }" + }, + "allow-query-cache": { + "_grammar": "{ ; ... }" + }, + "allow-query-cache-on": { + "_grammar": "{ ; ... }" + }, + "allow-query-on": { + "_grammar": "{ ; ... }" + }, + "allow-recursion": { + "_grammar": "{ ; ... }" + }, + "allow-recursion-on": { + "_grammar": "{ ; ... }" + }, + "allow-transfer": { + "_grammar": "[ port ] [ transport ] { ; ... }" + }, + "allow-update": { + "_grammar": "{ ; ... }" + }, + "allow-update-forwarding": { + "_grammar": "{ ; ... }" + }, + "also-notify": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "answer-cookie": { + "_grammar": "" + }, + "attach-cache": { + "_grammar": "" + }, + "auth-nxdomain": { + "_grammar": "" + }, + "automatic-interface-scan": { + "_grammar": "" + }, + "blackhole": { + "_grammar": "{ ; ... }" + }, + "catalog-zones": { + "_grammar": "{ zone [ default-primaries [ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... } ] [ zone-directory ] [ in-memory ] [ min-update-interval ]; ... }" + }, + "check-dup-records": { + "_grammar": "( fail | warn | ignore )" + }, + "check-integrity": { + "_grammar": "" + }, + "check-mx": { + "_grammar": "( fail | warn | ignore )" + }, + "check-mx-cname": { + "_grammar": "( fail | warn | ignore )" + }, + "check-names": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "( primary | master | secondary | slave | response ) ( fail | warn | ignore )" + }, + "check-sibling": { + "_grammar": "" + }, + "check-spf": { + "_grammar": "( warn | ignore )" + }, + "check-srv-cname": { + "_grammar": "( fail | warn | ignore )" + }, + "check-svcb": { + "_grammar": "" + }, + "check-wildcard": { + "_grammar": "" + }, + "clients-per-query": { + "_grammar": "" + }, + "cookie-algorithm": { + "_grammar": "( siphash24 )" + }, + "cookie-secret": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "" + }, + "deny-answer-addresses": { + "_grammar": "{ ; ... } [ except-from { ; ... } ]" + }, + "deny-answer-aliases": { + "_grammar": "{ ; ... } [ except-from { ; ... } ]" + }, + "directory": { + "_grammar": "" + }, + "disable-algorithms": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": " { ; ... }" + }, + "disable-ds-digests": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": " { ; ... }" + }, + "disable-empty-zone": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "" + }, + "dns64": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "break-dnssec": { + "_grammar": "" + }, + "clients": { + "_grammar": "{ ; ... }" + }, + "exclude": { + "_grammar": "{ ; ... }" + }, + "mapped": { + "_grammar": "{ ; ... }" + }, + "recursive-only": { + "_grammar": "" + }, + "suffix": { + "_grammar": "" + } + } + }, + "dns64-contact": { + "_grammar": "" + }, + "dns64-server": { + "_grammar": "" + }, + "dnskey-sig-validity": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnsrps-enable": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnsrps-library": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnsrps-options": { + "_flags": [ + "obsolete" + ], + "_grammar": "{ }" + }, + "dnssec-accept-expired": { + "_grammar": "" + }, + "dnssec-dnskey-kskonly": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnssec-loadkeys-interval": { + "_grammar": "" + }, + "dnssec-policy": { + "_grammar": "" + }, + "dnssec-secure-to-insecure": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnssec-update-mode": { + "_flags": [ + "obsolete" + ], + "_grammar": "( maintain | no-resign )" + }, + "dnssec-validation": { + "_grammar": "( yes | no | auto )" + }, + "dnstap": { + "_grammar": "{ ( all | auth | client | forwarder | resolver | update ) [ ( query | response ) ]; ... }" + }, + "dnstap-identity": { + "_grammar": "( | none | hostname )" + }, + "dnstap-output": { + "_grammar": "( file | unix ) [ size ( unlimited | ) ] [ versions ( unlimited | ) ] [ suffix ( increment | timestamp ) ]" + }, + "dnstap-version": { + "_grammar": "( | none )" + }, + "dual-stack-servers": { + "_grammar": "[ port ] { ( [ port ] | [ port ] | [ port ] ); ... }" + }, + "dump-file": { + "_grammar": "" + }, + "edns-udp-size": { + "_grammar": "" + }, + "empty-contact": { + "_grammar": "" + }, + "empty-server": { + "_grammar": "" + }, + "empty-zones-enable": { + "_grammar": "" + }, + "fetch-quota-params": { + "_grammar": " " + }, + "fetches-per-server": { + "_grammar": " [ ( drop | fail ) ]" + }, + "fetches-per-zone": { + "_grammar": " [ ( drop | fail ) ]" + }, + "flush-zones-on-shutdown": { + "_grammar": "" + }, + "forward": { + "_grammar": "( first | only )" + }, + "forwarders": { + "_grammar": "[ port ] [ tls ] { ( | ) [ port ] [ tls ]; ... }" + }, + "fstrm-set-buffer-hint": { + "_grammar": "" + }, + "fstrm-set-flush-timeout": { + "_grammar": "" + }, + "fstrm-set-input-queue-size": { + "_grammar": "" + }, + "fstrm-set-output-notify-threshold": { + "_grammar": "" + }, + "fstrm-set-output-queue-model": { + "_grammar": "( mpsc | spsc )" + }, + "fstrm-set-output-queue-size": { + "_grammar": "" + }, + "fstrm-set-reopen-interval": { + "_grammar": "" + }, + "geoip-directory": { + "_grammar": "( | none )" + }, + "hostname": { + "_grammar": "( | none )" + }, + "http-listener-clients": { + "_grammar": "" + }, + "http-port": { + "_grammar": "" + }, + "http-streams-per-connection": { + "_grammar": "" + }, + "https-port": { + "_grammar": "" + }, + "interface-interval": { + "_grammar": "" + }, + "ipv4only-contact": { + "_grammar": "" + }, + "ipv4only-enable": { + "_grammar": "" + }, + "ipv4only-server": { + "_grammar": "" + }, + "ixfr-from-differences": { + "_grammar": "( primary | master | secondary | slave | )" + }, + "keep-response-order": { + "_flags": [ + "obsolete" + ], + "_grammar": "{ ; ... }" + }, + "key-directory": { + "_grammar": "" + }, + "lame-ttl": { + "_grammar": "" + }, + "listen-on": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "[ port ] [ proxy ] [ tls ] [ http ] { ; ... }" + }, + "listen-on-v6": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "[ port ] [ proxy ] [ tls ] [ http ] { ; ... }" + }, + "lmdb-mapsize": { + "_grammar": "" + }, + "managed-keys-directory": { + "_grammar": "" + }, + "masterfile-format": { + "_grammar": "( raw | text )" + }, + "masterfile-style": { + "_grammar": "( full | relative )" + }, + "match-mapped-addresses": { + "_grammar": "" + }, + "max-cache-size": { + "_grammar": "( default | unlimited | | )" + }, + "max-cache-ttl": { + "_grammar": "" + }, + "max-clients-per-query": { + "_grammar": "" + }, + "max-ixfr-ratio": { + "_grammar": "( unlimited | )" + }, + "max-journal-size": { + "_grammar": "( default | unlimited | )" + }, + "max-ncache-ttl": { + "_grammar": "" + }, + "max-query-count": { + "_grammar": "" + }, + "max-query-restarts": { + "_grammar": "" + }, + "max-records": { + "_grammar": "" + }, + "max-records-per-type": { + "_grammar": "" + }, + "max-recursion-depth": { + "_grammar": "" + }, + "max-recursion-queries": { + "_grammar": "" + }, + "max-refresh-time": { + "_grammar": "" + }, + "max-retry-time": { + "_grammar": "" + }, + "max-rsa-exponent-size": { + "_grammar": "" + }, + "max-stale-ttl": { + "_grammar": "" + }, + "max-transfer-idle-in": { + "_grammar": "" + }, + "max-transfer-idle-out": { + "_grammar": "" + }, + "max-transfer-time-in": { + "_grammar": "" + }, + "max-transfer-time-out": { + "_grammar": "" + }, + "max-types-per-name": { + "_grammar": "" + }, + "max-udp-size": { + "_grammar": "" + }, + "max-validation-failures-per-fetch": { + "_flags": [ + "experimental" + ], + "_grammar": "" + }, + "max-validations-per-fetch": { + "_flags": [ + "experimental" + ], + "_grammar": "" + }, + "max-zone-ttl": { + "_flags": [ + "deprecated" + ], + "_grammar": "( unlimited | )" + }, + "memstatistics": { + "_grammar": "" + }, + "memstatistics-file": { + "_grammar": "" + }, + "message-compression": { + "_grammar": "" + }, + "min-cache-ttl": { + "_grammar": "" + }, + "min-ncache-ttl": { + "_grammar": "" + }, + "min-refresh-time": { + "_grammar": "" + }, + "min-retry-time": { + "_grammar": "" + }, + "min-transfer-rate-in": { + "_grammar": " " + }, + "minimal-any": { + "_grammar": "" + }, + "minimal-responses": { + "_grammar": "( no-auth | no-auth-recursive | )" + }, + "multi-master": { + "_grammar": "" + }, + "new-zones-directory": { + "_grammar": "" + }, + "no-case-compress": { + "_grammar": "{ ; ... }" + }, + "nocookie-udp-size": { + "_grammar": "" + }, + "notify": { + "_grammar": "( explicit | master-only | primary-only | )" + }, + "notify-cfg": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "notify": { + "_grammar": "" + }, + "notify-defer": { + "_grammar": "" + }, + "notify-delay": { + "_grammar": "" + }, + "notify-source": { + "_grammar": "( | * )" + }, + "notify-source-v6": { + "_grammar": "( | * )" + } + } + }, + "notify-defer": { + "_grammar": "" + }, + "notify-delay": { + "_grammar": "" + }, + "notify-rate": { + "_grammar": "" + }, + "notify-source": { + "_grammar": "( | * )" + }, + "notify-source-v6": { + "_grammar": "( | * )" + }, + "notify-to-soa": { + "_grammar": "" + }, + "nsec3-test-zone": { + "_flags": [ + "test only" + ], + "_grammar": "" + }, + "nta-lifetime": { + "_grammar": "" + }, + "nta-recheck": { + "_grammar": "" + }, + "nxdomain-redirect": { + "_grammar": "" + }, + "parental-source": { + "_grammar": "( | * )" + }, + "parental-source-v6": { + "_grammar": "( | * )" + }, + "pid-file": { + "_grammar": "( | none )" + }, + "port": { + "_grammar": "" + }, + "preferred-glue": { + "_grammar": "" + }, + "prefetch": { + "_grammar": " [ ]" + }, + "provide-ixfr": { + "_grammar": "" + }, + "provide-zoneversion": { + "_grammar": "" + }, + "qname-minimization": { + "_grammar": "( strict | relaxed | disabled | off )" + }, + "query-source": { + "_grammar": "[ address ] ( | * | none )" + }, + "query-source-v6": { + "_grammar": "[ address ] ( | * | none )" + }, + "querylog": { + "_grammar": "" + }, + "rate-limit": { + "_mapbody": { + "all-per-second": { + "_grammar": "" + }, + "errors-per-second": { + "_grammar": "" + }, + "exempt-clients": { + "_grammar": "{ ; ... }" + }, + "ipv4-prefix-length": { + "_grammar": "" + }, + "ipv6-prefix-length": { + "_grammar": "" + }, + "log-only": { + "_grammar": "" + }, + "max-table-size": { + "_grammar": "" + }, + "min-table-size": { + "_grammar": "" + }, + "nodata-per-second": { + "_grammar": "" + }, + "nxdomains-per-second": { + "_grammar": "" + }, + "qps-scale": { + "_grammar": "" + }, + "referrals-per-second": { + "_grammar": "" + }, + "responses-per-second": { + "_grammar": "" + }, + "slip": { + "_grammar": "" + }, + "window": { + "_grammar": "" + } + } + }, + "recursing-file": { + "_grammar": "" + }, + "recursion": { + "_grammar": "" + }, + "recursive-clients": { + "_grammar": "" + }, + "request-expire": { + "_grammar": "" + }, + "request-ixfr": { + "_grammar": "" + }, + "request-ixfr-max-diffs": { + "_grammar": "" + }, + "request-nsid": { + "_grammar": "" + }, + "request-zoneversion": { + "_grammar": "" + }, + "require-server-cookie": { + "_grammar": "" + }, + "resolver-query-timeout": { + "_grammar": "" + }, + "resolver-use-dns64": { + "_grammar": "" + }, + "response-padding": { + "_grammar": "{ ; ... } block-size " + }, + "response-policy": { + "_grammar": "{ zone [ add-soa ] [ log ] [ max-policy-ttl ] [ min-update-interval ] [ policy ( cname | disabled | drop | given | no-op | nodata | nxdomain | passthru | tcp-only ) ] [ recursive-only ] [ nsip-enable ] [ nsdname-enable ] [ ede ]; ... } [ add-soa ] [ break-dnssec ] [ max-policy-ttl ] [ min-update-interval ] [ min-ns-dots ] [ nsip-wait-recurse ] [ nsdname-wait-recurse ] [ qname-wait-recurse ] [ recursive-only ] [ servfail-until-ready ] [ nsip-enable ] [ nsdname-enable ] [ dnsrps-enable ] [ dnsrps-options { } ]" + }, + "responselog": { + "_grammar": "" + }, + "reuseport": { + "_grammar": "" + }, + "root-key-sentinel": { + "_grammar": "" + }, + "rrset-order": { + "_grammar": "{ [ class ] [ type ] [ name ] ; ... }" + }, + "secroots-file": { + "_grammar": "" + }, + "send-cookie": { + "_grammar": "" + }, + "send-report-channel": { + "_grammar": "" + }, + "serial-query-rate": { + "_grammar": "" + }, + "serial-update-method": { + "_grammar": "( date | increment | unixtime )" + }, + "server-id": { + "_grammar": "( | none | hostname )" + }, + "servfail-ttl": { + "_grammar": "" + }, + "session-keyalg": { + "_grammar": "" + }, + "session-keyfile": { + "_grammar": "( | none )" + }, + "session-keyname": { + "_grammar": "" + }, + "sig-signing-nodes": { + "_grammar": "" + }, + "sig-signing-signatures": { + "_grammar": "" + }, + "sig-signing-type": { + "_grammar": "" + }, + "sig-validity-interval": { + "_flags": [ + "obsolete" + ], + "_grammar": " [ ]" + }, + "sig0checks-quota": { + "_flags": [ + "experimental" + ], + "_grammar": "" + }, + "sig0checks-quota-exempt": { + "_flags": [ + "experimental" + ], + "_grammar": "{ ; ... }" + }, + "sig0key-checks-limit": { + "_grammar": "" + }, + "sig0message-checks-limit": { + "_grammar": "" + }, + "stale-answer-client-timeout": { + "_grammar": "( disabled | off | )" + }, + "stale-answer-enable": { + "_grammar": "" + }, + "stale-answer-ttl": { + "_grammar": "" + }, + "stale-cache-enable": { + "_grammar": "" + }, + "stale-refresh-time": { + "_grammar": "" + }, + "startup-notify-rate": { + "_grammar": "" + }, + "statistics-file": { + "_grammar": "" + }, + "synth-from-dnssec": { + "_grammar": "" + }, + "tcp-advertised-timeout": { + "_grammar": "" + }, + "tcp-clients": { + "_grammar": "" + }, + "tcp-idle-timeout": { + "_grammar": "" + }, + "tcp-initial-timeout": { + "_grammar": "" + }, + "tcp-keepalive-timeout": { + "_grammar": "" + }, + "tcp-listen-queue": { + "_grammar": "" + }, + "tcp-primaries-timeout": { + "_grammar": "" + }, + "tcp-receive-buffer": { + "_grammar": "" + }, + "tcp-send-buffer": { + "_grammar": "" + }, + "tkey-gssapi-keytab": { + "_grammar": "" + }, + "tls-port": { + "_grammar": "" + }, + "transfer-format": { + "_grammar": "( many-answers | one-answer )" + }, + "transfer-message-size": { + "_grammar": "" + }, + "transfer-source": { + "_grammar": "( | * )" + }, + "transfer-source-v6": { + "_grammar": "( | * )" + }, + "transfers-in": { + "_grammar": "" + }, + "transfers-out": { + "_grammar": "" + }, + "transfers-per-ns": { + "_grammar": "" + }, + "trust-anchor-telemetry": { + "_grammar": "" + }, + "try-tcp-refresh": { + "_grammar": "" + }, + "udp-receive-buffer": { + "_grammar": "" + }, + "udp-send-buffer": { + "_grammar": "" + }, + "update-check-ksk": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "update-quota": { + "_grammar": "" + }, + "v6-bias": { + "_grammar": "" + }, + "validate-except": { + "_grammar": "{ ; ... }" + }, + "version": { + "_grammar": "( | none )" + }, + "zero-no-soa-ttl": { + "_grammar": "" + }, + "zero-no-soa-ttl-cache": { + "_grammar": "" + }, + "zone-statistics": { + "_grammar": "( full | terse | none | )" + } + } + }, + "plugin": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "( query ) [ { } ]" + }, + "remote-servers": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": " [ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "server": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "bogus": { + "_grammar": "" + }, + "edns": { + "_grammar": "" + }, + "edns-udp-size": { + "_grammar": "" + }, + "edns-version": { + "_grammar": "" + }, + "keys": { + "_grammar": "" + }, + "max-udp-size": { + "_grammar": "" + }, + "notify-source": { + "_grammar": "( | * )" + }, + "notify-source-v6": { + "_grammar": "( | * )" + }, + "padding": { + "_grammar": "" + }, + "provide-ixfr": { + "_grammar": "" + }, + "query-source": { + "_grammar": "[ address ] ( | * )" + }, + "query-source-v6": { + "_grammar": "[ address ] ( | * )" + }, + "request-expire": { + "_grammar": "" + }, + "request-ixfr": { + "_grammar": "" + }, + "request-ixfr-max-diffs": { + "_grammar": "" + }, + "request-nsid": { + "_grammar": "" + }, + "request-zoneversion": { + "_grammar": "" + }, + "require-cookie": { + "_grammar": "" + }, + "send-cookie": { + "_grammar": "" + }, + "tcp-keepalive": { + "_grammar": "" + }, + "tcp-only": { + "_grammar": "" + }, + "transfer-format": { + "_grammar": "( many-answers | one-answer )" + }, + "transfer-source": { + "_grammar": "( | * )" + }, + "transfer-source-v6": { + "_grammar": "( | * )" + }, + "transfers": { + "_grammar": "" + } + } + }, + "statistics-channels": { + "_flags": [ + "may occur multiple times" + ], + "_mapbody": { + "inet": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "( | | * ) [ port ( | * ) ] [ allow { ; ... } ]" + } + } + }, + "template": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "allow-notify": { + "_grammar": "{ ; ... }" + }, + "allow-query": { + "_grammar": "{ ; ... }" + }, + "allow-query-on": { + "_grammar": "{ ; ... }" + }, + "allow-transfer": { + "_grammar": "[ port ] [ transport ] { ; ... }" + }, + "allow-update": { + "_grammar": "{ ; ... }" + }, + "allow-update-forwarding": { + "_grammar": "{ ; ... }" + }, + "also-notify": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "check-dup-records": { + "_grammar": "( fail | warn | ignore )" + }, + "check-integrity": { + "_grammar": "" + }, + "check-mx": { + "_grammar": "( fail | warn | ignore )" + }, + "check-mx-cname": { + "_grammar": "( fail | warn | ignore )" + }, + "check-names": { + "_grammar": "( fail | warn | ignore )" + }, + "check-sibling": { + "_grammar": "" + }, + "check-spf": { + "_grammar": "( warn | ignore )" + }, + "check-srv-cname": { + "_grammar": "( fail | warn | ignore )" + }, + "check-svcb": { + "_grammar": "" + }, + "check-wildcard": { + "_grammar": "" + }, + "checkds": { + "_grammar": "( explicit | )" + }, + "database": { + "_grammar": "" + }, + "dlz": { + "_grammar": "" + }, + "dnskey-sig-validity": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnssec-dnskey-kskonly": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnssec-loadkeys-interval": { + "_grammar": "" + }, + "dnssec-policy": { + "_grammar": "" + }, + "dnssec-secure-to-insecure": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnssec-update-mode": { + "_flags": [ + "obsolete" + ], + "_grammar": "( maintain | no-resign )" + }, + "file": { + "_grammar": "" + }, + "forward": { + "_grammar": "( first | only )" + }, + "forwarders": { + "_grammar": "[ port ] [ tls ] { ( | ) [ port ] [ tls ]; ... }" + }, + "initial-file": { + "_grammar": "" + }, + "inline-signing": { + "_grammar": "" + }, + "ixfr-from-differences": { + "_grammar": "" + }, + "journal": { + "_grammar": "" + }, + "key-directory": { + "_grammar": "" + }, + "log-report-channel": { + "_grammar": "" + }, + "masterfile-format": { + "_grammar": "( raw | text )" + }, + "masterfile-style": { + "_grammar": "( full | relative )" + }, + "max-ixfr-ratio": { + "_grammar": "( unlimited | )" + }, + "max-journal-size": { + "_grammar": "( default | unlimited | )" + }, + "max-records": { + "_grammar": "" + }, + "max-records-per-type": { + "_grammar": "" + }, + "max-refresh-time": { + "_grammar": "" + }, + "max-retry-time": { + "_grammar": "" + }, + "max-transfer-idle-in": { + "_grammar": "" + }, + "max-transfer-idle-out": { + "_grammar": "" + }, + "max-transfer-time-in": { + "_grammar": "" + }, + "max-transfer-time-out": { + "_grammar": "" + }, + "max-types-per-name": { + "_grammar": "" + }, + "max-zone-ttl": { + "_flags": [ + "deprecated" + ], + "_grammar": "( unlimited | )" + }, + "min-refresh-time": { + "_grammar": "" + }, + "min-retry-time": { + "_grammar": "" + }, + "min-transfer-rate-in": { + "_grammar": " " + }, + "multi-master": { + "_grammar": "" + }, + "notify": { + "_grammar": "( explicit | master-only | primary-only | )" + }, + "notify-cfg": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "notify": { + "_grammar": "" + }, + "notify-defer": { + "_grammar": "" + }, + "notify-delay": { + "_grammar": "" + }, + "notify-source": { + "_grammar": "( | * )" + }, + "notify-source-v6": { + "_grammar": "( | * )" + } + } + }, + "notify-defer": { + "_grammar": "" + }, + "notify-delay": { + "_grammar": "" + }, + "notify-source": { + "_grammar": "( | * )" + }, + "notify-source-v6": { + "_grammar": "( | * )" + }, + "notify-to-soa": { + "_grammar": "" + }, + "nsec3-test-zone": { + "_flags": [ + "test only" + ], + "_grammar": "" + }, + "parental-agents": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "parental-source": { + "_grammar": "( | * )" + }, + "parental-source-v6": { + "_grammar": "( | * )" + }, + "plugin": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "( query ) [ { } ]" + }, + "primaries": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "provide-zoneversion": { + "_grammar": "" + }, + "request-expire": { + "_grammar": "" + }, + "request-ixfr": { + "_grammar": "" + }, + "request-ixfr-max-diffs": { + "_grammar": "" + }, + "send-report-channel": { + "_grammar": "" + }, + "serial-update-method": { + "_grammar": "( date | increment | unixtime )" + }, + "server-addresses": { + "_grammar": "{ ( | ); ... }" + }, + "server-names": { + "_grammar": "{ ; ... }" + }, + "sig-signing-nodes": { + "_grammar": "" + }, + "sig-signing-signatures": { + "_grammar": "" + }, + "sig-signing-type": { + "_grammar": "" + }, + "sig-validity-interval": { + "_flags": [ + "obsolete" + ], + "_grammar": " [ ]" + }, + "transfer-source": { + "_grammar": "( | * )" + }, + "transfer-source-v6": { + "_grammar": "( | * )" + }, + "try-tcp-refresh": { + "_grammar": "" + }, + "type": { + "_grammar": "( primary | master | secondary | slave | mirror | forward | hint | redirect | static-stub | stub )" + }, + "update-check-ksk": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "update-policy": { + "_grammar": "( local | { ( deny | grant ) ( 6to4-self | external | krb5-self | krb5-selfsub | krb5-subdomain | krb5-subdomain-self-rhs | ms-self | ms-selfsub | ms-subdomain | ms-subdomain-self-rhs | name | self | selfsub | selfwild | subdomain | tcp-self | wildcard | zonesub ) [ ] ; ... } )" + }, + "zero-no-soa-ttl": { + "_grammar": "" + }, + "zone-statistics": { + "_grammar": "( full | terse | none | )" + } + } + }, + "tls": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "ca-file": { + "_grammar": "" + }, + "cert-file": { + "_grammar": "" + }, + "cipher-suites": { + "_grammar": "" + }, + "ciphers": { + "_grammar": "" + }, + "dhparam-file": { + "_grammar": "" + }, + "key-file": { + "_grammar": "" + }, + "prefer-server-ciphers": { + "_grammar": "" + }, + "protocols": { + "_grammar": "{ ; ... }" + }, + "remote-hostname": { + "_grammar": "" + }, + "session-tickets": { + "_grammar": "" + } + } + }, + "trust-anchors": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "{ ( static-key | initial-key | static-ds | initial-ds ) ; ... }" + }, + "view": { + "_flags": [ + "may occur multiple times" + ], + "_id": " [ ]", + "_mapbody": { + "allow-new-zones": { + "_grammar": "" + }, + "allow-notify": { + "_grammar": "{ ; ... }" + }, + "allow-proxy": { + "_flags": [ + "experimental" + ], + "_grammar": "{ ; ... }" + }, + "allow-proxy-on": { + "_flags": [ + "experimental" + ], + "_grammar": "{ ; ... }" + }, + "allow-query": { + "_grammar": "{ ; ... }" + }, + "allow-query-cache": { + "_grammar": "{ ; ... }" + }, + "allow-query-cache-on": { + "_grammar": "{ ; ... }" + }, + "allow-query-on": { + "_grammar": "{ ; ... }" + }, + "allow-recursion": { + "_grammar": "{ ; ... }" + }, + "allow-recursion-on": { + "_grammar": "{ ; ... }" + }, + "allow-transfer": { + "_grammar": "[ port ] [ transport ] { ; ... }" + }, + "allow-update": { + "_grammar": "{ ; ... }" + }, + "allow-update-forwarding": { + "_grammar": "{ ; ... }" + }, + "also-notify": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "attach-cache": { + "_grammar": "" + }, + "auth-nxdomain": { + "_grammar": "" + }, + "catalog-zones": { + "_grammar": "{ zone [ default-primaries [ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... } ] [ zone-directory ] [ in-memory ] [ min-update-interval ]; ... }" + }, + "check-dup-records": { + "_grammar": "( fail | warn | ignore )" + }, + "check-integrity": { + "_grammar": "" + }, + "check-mx": { + "_grammar": "( fail | warn | ignore )" + }, + "check-mx-cname": { + "_grammar": "( fail | warn | ignore )" + }, + "check-names": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "( primary | master | secondary | slave | response ) ( fail | warn | ignore )" + }, + "check-sibling": { + "_grammar": "" + }, + "check-spf": { + "_grammar": "( warn | ignore )" + }, + "check-srv-cname": { + "_grammar": "( fail | warn | ignore )" + }, + "check-svcb": { + "_grammar": "" + }, + "check-wildcard": { + "_grammar": "" + }, + "clients-per-query": { + "_grammar": "" + }, + "deny-answer-addresses": { + "_grammar": "{ ; ... } [ except-from { ; ... } ]" + }, + "deny-answer-aliases": { + "_grammar": "{ ; ... } [ except-from { ; ... } ]" + }, + "disable-algorithms": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": " { ; ... }" + }, + "disable-ds-digests": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": " { ; ... }" + }, + "disable-empty-zone": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "" + }, + "dlz": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "database": { + "_grammar": "" + }, + "search": { + "_grammar": "" + } + } + }, + "dns64": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "break-dnssec": { + "_grammar": "" + }, + "clients": { + "_grammar": "{ ; ... }" + }, + "exclude": { + "_grammar": "{ ; ... }" + }, + "mapped": { + "_grammar": "{ ; ... }" + }, + "recursive-only": { + "_grammar": "" + }, + "suffix": { + "_grammar": "" + } + } + }, + "dns64-contact": { + "_grammar": "" + }, + "dns64-server": { + "_grammar": "" + }, + "dnskey-sig-validity": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnsrps-enable": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnsrps-options": { + "_flags": [ + "obsolete" + ], + "_grammar": "{ }" + }, + "dnssec-accept-expired": { + "_grammar": "" + }, + "dnssec-dnskey-kskonly": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnssec-loadkeys-interval": { + "_grammar": "" + }, + "dnssec-policy": { + "_grammar": "" + }, + "dnssec-secure-to-insecure": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnssec-update-mode": { + "_flags": [ + "obsolete" + ], + "_grammar": "( maintain | no-resign )" + }, + "dnssec-validation": { + "_grammar": "( yes | no | auto )" + }, + "dnstap": { + "_grammar": "{ ( all | auth | client | forwarder | resolver | update ) [ ( query | response ) ]; ... }" + }, + "dual-stack-servers": { + "_grammar": "[ port ] { ( [ port ] | [ port ] | [ port ] ); ... }" + }, + "dyndb": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": " { }" + }, + "edns-udp-size": { + "_grammar": "" + }, + "empty-contact": { + "_grammar": "" + }, + "empty-server": { + "_grammar": "" + }, + "empty-zones-enable": { + "_grammar": "" + }, + "fetch-quota-params": { + "_grammar": " " + }, + "fetches-per-server": { + "_grammar": " [ ( drop | fail ) ]" + }, + "fetches-per-zone": { + "_grammar": " [ ( drop | fail ) ]" + }, + "forward": { + "_grammar": "( first | only )" + }, + "forwarders": { + "_grammar": "[ port ] [ tls ] { ( | ) [ port ] [ tls ]; ... }" + }, + "ipv4only-contact": { + "_grammar": "" + }, + "ipv4only-enable": { + "_grammar": "" + }, + "ipv4only-server": { + "_grammar": "" + }, + "ixfr-from-differences": { + "_grammar": "( primary | master | secondary | slave | )" + }, + "key": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "algorithm": { + "_grammar": "" + }, + "secret": { + "_grammar": "" + } + } + }, + "key-directory": { + "_grammar": "" + }, + "lame-ttl": { + "_grammar": "" + }, + "lmdb-mapsize": { + "_grammar": "" + }, + "masterfile-format": { + "_grammar": "( raw | text )" + }, + "masterfile-style": { + "_grammar": "( full | relative )" + }, + "match-clients": { + "_grammar": "{ ; ... }" + }, + "match-destinations": { + "_grammar": "{ ; ... }" + }, + "match-recursive-only": { + "_grammar": "" + }, + "max-cache-size": { + "_grammar": "( default | unlimited | | )" + }, + "max-cache-ttl": { + "_grammar": "" + }, + "max-clients-per-query": { + "_grammar": "" + }, + "max-ixfr-ratio": { + "_grammar": "( unlimited | )" + }, + "max-journal-size": { + "_grammar": "( default | unlimited | )" + }, + "max-ncache-ttl": { + "_grammar": "" + }, + "max-query-count": { + "_grammar": "" + }, + "max-query-restarts": { + "_grammar": "" + }, + "max-records": { + "_grammar": "" + }, + "max-records-per-type": { + "_grammar": "" + }, + "max-recursion-depth": { + "_grammar": "" + }, + "max-recursion-queries": { + "_grammar": "" + }, + "max-refresh-time": { + "_grammar": "" + }, + "max-retry-time": { + "_grammar": "" + }, + "max-stale-ttl": { + "_grammar": "" + }, + "max-transfer-idle-in": { + "_grammar": "" + }, + "max-transfer-idle-out": { + "_grammar": "" + }, + "max-transfer-time-in": { + "_grammar": "" + }, + "max-transfer-time-out": { + "_grammar": "" + }, + "max-types-per-name": { + "_grammar": "" + }, + "max-udp-size": { + "_grammar": "" + }, + "max-validation-failures-per-fetch": { + "_flags": [ + "experimental" + ], + "_grammar": "" + }, + "max-validations-per-fetch": { + "_flags": [ + "experimental" + ], + "_grammar": "" + }, + "max-zone-ttl": { + "_flags": [ + "deprecated" + ], + "_grammar": "( unlimited | )" + }, + "message-compression": { + "_grammar": "" + }, + "min-cache-ttl": { + "_grammar": "" + }, + "min-ncache-ttl": { + "_grammar": "" + }, + "min-refresh-time": { + "_grammar": "" + }, + "min-retry-time": { + "_grammar": "" + }, + "min-transfer-rate-in": { + "_grammar": " " + }, + "minimal-any": { + "_grammar": "" + }, + "minimal-responses": { + "_grammar": "( no-auth | no-auth-recursive | )" + }, + "multi-master": { + "_grammar": "" + }, + "new-zones-directory": { + "_grammar": "" + }, + "no-case-compress": { + "_grammar": "{ ; ... }" + }, + "nocookie-udp-size": { + "_grammar": "" + }, + "notify": { + "_grammar": "( explicit | master-only | primary-only | )" + }, + "notify-cfg": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "notify": { + "_grammar": "" + }, + "notify-defer": { + "_grammar": "" + }, + "notify-delay": { + "_grammar": "" + }, + "notify-source": { + "_grammar": "( | * )" + }, + "notify-source-v6": { + "_grammar": "( | * )" + } + } + }, + "notify-defer": { + "_grammar": "" + }, + "notify-delay": { + "_grammar": "" + }, + "notify-source": { + "_grammar": "( | * )" + }, + "notify-source-v6": { + "_grammar": "( | * )" + }, + "notify-to-soa": { + "_grammar": "" + }, + "nsec3-test-zone": { + "_flags": [ + "test only" + ], + "_grammar": "" + }, + "nta-lifetime": { + "_grammar": "" + }, + "nta-recheck": { + "_grammar": "" + }, + "nxdomain-redirect": { + "_grammar": "" + }, + "parental-source": { + "_grammar": "( | * )" + }, + "parental-source-v6": { + "_grammar": "( | * )" + }, + "plugin": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "( query ) [ { } ]" + }, + "preferred-glue": { + "_grammar": "" + }, + "prefetch": { + "_grammar": " [ ]" + }, + "provide-ixfr": { + "_grammar": "" + }, + "provide-zoneversion": { + "_grammar": "" + }, + "qname-minimization": { + "_grammar": "( strict | relaxed | disabled | off )" + }, + "query-source": { + "_grammar": "[ address ] ( | * | none )" + }, + "query-source-v6": { + "_grammar": "[ address ] ( | * | none )" + }, + "rate-limit": { + "_mapbody": { + "all-per-second": { + "_grammar": "" + }, + "errors-per-second": { + "_grammar": "" + }, + "exempt-clients": { + "_grammar": "{ ; ... }" + }, + "ipv4-prefix-length": { + "_grammar": "" + }, + "ipv6-prefix-length": { + "_grammar": "" + }, + "log-only": { + "_grammar": "" + }, + "max-table-size": { + "_grammar": "" + }, + "min-table-size": { + "_grammar": "" + }, + "nodata-per-second": { + "_grammar": "" + }, + "nxdomains-per-second": { + "_grammar": "" + }, + "qps-scale": { + "_grammar": "" + }, + "referrals-per-second": { + "_grammar": "" + }, + "responses-per-second": { + "_grammar": "" + }, + "slip": { + "_grammar": "" + }, + "window": { + "_grammar": "" + } + } + }, + "recursion": { + "_grammar": "" + }, + "request-expire": { + "_grammar": "" + }, + "request-ixfr": { + "_grammar": "" + }, + "request-ixfr-max-diffs": { + "_grammar": "" + }, + "request-nsid": { + "_grammar": "" + }, + "request-zoneversion": { + "_grammar": "" + }, + "require-server-cookie": { + "_grammar": "" + }, + "resolver-query-timeout": { + "_grammar": "" + }, + "resolver-use-dns64": { + "_grammar": "" + }, + "response-padding": { + "_grammar": "{ ; ... } block-size " + }, + "response-policy": { + "_grammar": "{ zone [ add-soa ] [ log ] [ max-policy-ttl ] [ min-update-interval ] [ policy ( cname | disabled | drop | given | no-op | nodata | nxdomain | passthru | tcp-only ) ] [ recursive-only ] [ nsip-enable ] [ nsdname-enable ] [ ede ]; ... } [ add-soa ] [ break-dnssec ] [ max-policy-ttl ] [ min-update-interval ] [ min-ns-dots ] [ nsip-wait-recurse ] [ nsdname-wait-recurse ] [ qname-wait-recurse ] [ recursive-only ] [ servfail-until-ready ] [ nsip-enable ] [ nsdname-enable ] [ dnsrps-enable ] [ dnsrps-options { } ]" + }, + "root-key-sentinel": { + "_grammar": "" + }, + "rrset-order": { + "_grammar": "{ [ class ] [ type ] [ name ] ; ... }" + }, + "send-cookie": { + "_grammar": "" + }, + "send-report-channel": { + "_grammar": "" + }, + "serial-update-method": { + "_grammar": "( date | increment | unixtime )" + }, + "server": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "bogus": { + "_grammar": "" + }, + "edns": { + "_grammar": "" + }, + "edns-udp-size": { + "_grammar": "" + }, + "edns-version": { + "_grammar": "" + }, + "keys": { + "_grammar": "" + }, + "max-udp-size": { + "_grammar": "" + }, + "notify-source": { + "_grammar": "( | * )" + }, + "notify-source-v6": { + "_grammar": "( | * )" + }, + "padding": { + "_grammar": "" + }, + "provide-ixfr": { + "_grammar": "" + }, + "query-source": { + "_grammar": "[ address ] ( | * )" + }, + "query-source-v6": { + "_grammar": "[ address ] ( | * )" + }, + "request-expire": { + "_grammar": "" + }, + "request-ixfr": { + "_grammar": "" + }, + "request-ixfr-max-diffs": { + "_grammar": "" + }, + "request-nsid": { + "_grammar": "" + }, + "request-zoneversion": { + "_grammar": "" + }, + "require-cookie": { + "_grammar": "" + }, + "send-cookie": { + "_grammar": "" + }, + "tcp-keepalive": { + "_grammar": "" + }, + "tcp-only": { + "_grammar": "" + }, + "transfer-format": { + "_grammar": "( many-answers | one-answer )" + }, + "transfer-source": { + "_grammar": "( | * )" + }, + "transfer-source-v6": { + "_grammar": "( | * )" + }, + "transfers": { + "_grammar": "" + } + } + }, + "servfail-ttl": { + "_grammar": "" + }, + "sig-signing-nodes": { + "_grammar": "" + }, + "sig-signing-signatures": { + "_grammar": "" + }, + "sig-signing-type": { + "_grammar": "" + }, + "sig-validity-interval": { + "_flags": [ + "obsolete" + ], + "_grammar": " [ ]" + }, + "sig0key-checks-limit": { + "_grammar": "" + }, + "sig0message-checks-limit": { + "_grammar": "" + }, + "stale-answer-client-timeout": { + "_grammar": "( disabled | off | )" + }, + "stale-answer-enable": { + "_grammar": "" + }, + "stale-answer-ttl": { + "_grammar": "" + }, + "stale-cache-enable": { + "_grammar": "" + }, + "stale-refresh-time": { + "_grammar": "" + }, + "synth-from-dnssec": { + "_grammar": "" + }, + "transfer-format": { + "_grammar": "( many-answers | one-answer )" + }, + "transfer-source": { + "_grammar": "( | * )" + }, + "transfer-source-v6": { + "_grammar": "( | * )" + }, + "trust-anchor-telemetry": { + "_grammar": "" + }, + "trust-anchors": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "{ ( static-key | initial-key | static-ds | initial-ds ) ; ... }" + }, + "try-tcp-refresh": { + "_grammar": "" + }, + "update-check-ksk": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "v6-bias": { + "_grammar": "" + }, + "validate-except": { + "_grammar": "{ ; ... }" + }, + "zero-no-soa-ttl": { + "_grammar": "" + }, + "zero-no-soa-ttl-cache": { + "_grammar": "" + }, + "zone-statistics": { + "_grammar": "( full | terse | none | )" + } + } + } +} diff --git a/bind9-grammar/primary.zoneopt.json b/bind9-grammar/primary.zoneopt.json new file mode 100644 index 0000000..76353ee --- /dev/null +++ b/bind9-grammar/primary.zoneopt.json @@ -0,0 +1,258 @@ +{ + "zone": { + "_id": " [ ]", + "_mapbody": { + "type": { + "_grammar": "primary" + }, + "allow-query": { + "_grammar": "{ ; ... }" + }, + "allow-query-on": { + "_grammar": "{ ; ... }" + }, + "allow-transfer": { + "_grammar": "[ port ] [ transport ] { ; ... }" + }, + "allow-update": { + "_grammar": "{ ; ... }" + }, + "also-notify": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "check-dup-records": { + "_grammar": "( fail | warn | ignore )" + }, + "check-integrity": { + "_grammar": "" + }, + "check-mx": { + "_grammar": "( fail | warn | ignore )" + }, + "check-mx-cname": { + "_grammar": "( fail | warn | ignore )" + }, + "check-names": { + "_grammar": "( fail | warn | ignore )" + }, + "check-sibling": { + "_grammar": "" + }, + "check-spf": { + "_grammar": "( warn | ignore )" + }, + "check-srv-cname": { + "_grammar": "( fail | warn | ignore )" + }, + "check-svcb": { + "_grammar": "" + }, + "check-wildcard": { + "_grammar": "" + }, + "checkds": { + "_grammar": "( explicit | )" + }, + "database": { + "_grammar": "" + }, + "dlz": { + "_grammar": "" + }, + "dnskey-sig-validity": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnssec-dnskey-kskonly": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnssec-loadkeys-interval": { + "_grammar": "" + }, + "dnssec-policy": { + "_grammar": "" + }, + "dnssec-secure-to-insecure": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnssec-update-mode": { + "_flags": [ + "obsolete" + ], + "_grammar": "( maintain | no-resign )" + }, + "file": { + "_grammar": "" + }, + "forward": { + "_grammar": "( first | only )" + }, + "forwarders": { + "_grammar": "[ port ] [ tls ] { ( | ) [ port ] [ tls ]; ... }" + }, + "initial-file": { + "_grammar": "" + }, + "inline-signing": { + "_grammar": "" + }, + "ixfr-from-differences": { + "_grammar": "" + }, + "journal": { + "_grammar": "" + }, + "key-directory": { + "_grammar": "" + }, + "log-report-channel": { + "_grammar": "" + }, + "masterfile-format": { + "_grammar": "( raw | text )" + }, + "masterfile-style": { + "_grammar": "( full | relative )" + }, + "max-ixfr-ratio": { + "_grammar": "( unlimited | )" + }, + "max-journal-size": { + "_grammar": "( default | unlimited | )" + }, + "max-records": { + "_grammar": "" + }, + "max-records-per-type": { + "_grammar": "" + }, + "max-transfer-idle-out": { + "_grammar": "" + }, + "max-transfer-time-out": { + "_grammar": "" + }, + "max-types-per-name": { + "_grammar": "" + }, + "max-zone-ttl": { + "_flags": [ + "deprecated" + ], + "_grammar": "( unlimited | )" + }, + "notify": { + "_grammar": "( explicit | master-only | primary-only | )" + }, + "notify-cfg": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "notify": { + "_grammar": "" + }, + "notify-defer": { + "_grammar": "" + }, + "notify-delay": { + "_grammar": "" + }, + "notify-source": { + "_grammar": "( | * )" + }, + "notify-source-v6": { + "_grammar": "( | * )" + } + } + }, + "notify-defer": { + "_grammar": "" + }, + "notify-delay": { + "_grammar": "" + }, + "notify-source": { + "_grammar": "( | * )" + }, + "notify-source-v6": { + "_grammar": "( | * )" + }, + "notify-to-soa": { + "_grammar": "" + }, + "nsec3-test-zone": { + "_flags": [ + "test only" + ], + "_grammar": "" + }, + "parental-agents": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "parental-source": { + "_grammar": "( | * )" + }, + "parental-source-v6": { + "_grammar": "( | * )" + }, + "plugin": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "( query ) [ { } ]" + }, + "provide-zoneversion": { + "_grammar": "" + }, + "send-report-channel": { + "_grammar": "" + }, + "serial-update-method": { + "_grammar": "( date | increment | unixtime )" + }, + "sig-signing-nodes": { + "_grammar": "" + }, + "sig-signing-signatures": { + "_grammar": "" + }, + "sig-signing-type": { + "_grammar": "" + }, + "sig-validity-interval": { + "_flags": [ + "obsolete" + ], + "_grammar": " [ ]" + }, + "template": { + "_grammar": "" + }, + "update-check-ksk": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "update-policy": { + "_grammar": "( local | { ( deny | grant ) ( 6to4-self | external | krb5-self | krb5-selfsub | krb5-subdomain | krb5-subdomain-self-rhs | ms-self | ms-selfsub | ms-subdomain | ms-subdomain-self-rhs | name | self | selfsub | selfwild | subdomain | tcp-self | wildcard | zonesub ) [ ] ; ... } )" + }, + "zero-no-soa-ttl": { + "_grammar": "" + }, + "zone-statistics": { + "_grammar": "( full | terse | none | )" + } + } + } +} diff --git a/bind9-grammar/redirect.zoneopt.json b/bind9-grammar/redirect.zoneopt.json new file mode 100644 index 0000000..28cf0d0 --- /dev/null +++ b/bind9-grammar/redirect.zoneopt.json @@ -0,0 +1,58 @@ +{ + "zone": { + "_id": " [ ]", + "_mapbody": { + "type": { + "_grammar": "redirect" + }, + "allow-query": { + "_grammar": "{ ; ... }" + }, + "allow-query-on": { + "_grammar": "{ ; ... }" + }, + "dlz": { + "_grammar": "" + }, + "file": { + "_grammar": "" + }, + "masterfile-format": { + "_grammar": "( raw | text )" + }, + "masterfile-style": { + "_grammar": "( full | relative )" + }, + "max-records": { + "_grammar": "" + }, + "max-records-per-type": { + "_grammar": "" + }, + "max-types-per-name": { + "_grammar": "" + }, + "max-zone-ttl": { + "_flags": [ + "deprecated" + ], + "_grammar": "( unlimited | )" + }, + "plugin": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "( query ) [ { } ]" + }, + "primaries": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "template": { + "_grammar": "" + }, + "zone-statistics": { + "_grammar": "( full | terse | none | )" + } + } + } +} diff --git a/bind9-grammar/secondary.zoneopt.json b/bind9-grammar/secondary.zoneopt.json new file mode 100644 index 0000000..6f7bd27 --- /dev/null +++ b/bind9-grammar/secondary.zoneopt.json @@ -0,0 +1,258 @@ +{ + "zone": { + "_id": " [ ]", + "_mapbody": { + "type": { + "_grammar": "secondary" + }, + "allow-notify": { + "_grammar": "{ ; ... }" + }, + "allow-query": { + "_grammar": "{ ; ... }" + }, + "allow-query-on": { + "_grammar": "{ ; ... }" + }, + "allow-transfer": { + "_grammar": "[ port ] [ transport ] { ; ... }" + }, + "allow-update-forwarding": { + "_grammar": "{ ; ... }" + }, + "also-notify": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "check-names": { + "_grammar": "( fail | warn | ignore )" + }, + "checkds": { + "_grammar": "( explicit | )" + }, + "database": { + "_grammar": "" + }, + "dlz": { + "_grammar": "" + }, + "dnskey-sig-validity": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnssec-dnskey-kskonly": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "dnssec-loadkeys-interval": { + "_grammar": "" + }, + "dnssec-policy": { + "_grammar": "" + }, + "dnssec-update-mode": { + "_flags": [ + "obsolete" + ], + "_grammar": "( maintain | no-resign )" + }, + "file": { + "_grammar": "" + }, + "forward": { + "_grammar": "( first | only )" + }, + "forwarders": { + "_grammar": "[ port ] [ tls ] { ( | ) [ port ] [ tls ]; ... }" + }, + "inline-signing": { + "_grammar": "" + }, + "ixfr-from-differences": { + "_grammar": "" + }, + "journal": { + "_grammar": "" + }, + "key-directory": { + "_grammar": "" + }, + "log-report-channel": { + "_grammar": "" + }, + "masterfile-format": { + "_grammar": "( raw | text )" + }, + "masterfile-style": { + "_grammar": "( full | relative )" + }, + "max-ixfr-ratio": { + "_grammar": "( unlimited | )" + }, + "max-journal-size": { + "_grammar": "( default | unlimited | )" + }, + "max-records": { + "_grammar": "" + }, + "max-records-per-type": { + "_grammar": "" + }, + "max-refresh-time": { + "_grammar": "" + }, + "max-retry-time": { + "_grammar": "" + }, + "max-transfer-idle-in": { + "_grammar": "" + }, + "max-transfer-idle-out": { + "_grammar": "" + }, + "max-transfer-time-in": { + "_grammar": "" + }, + "max-transfer-time-out": { + "_grammar": "" + }, + "max-types-per-name": { + "_grammar": "" + }, + "min-refresh-time": { + "_grammar": "" + }, + "min-retry-time": { + "_grammar": "" + }, + "min-transfer-rate-in": { + "_grammar": " " + }, + "multi-master": { + "_grammar": "" + }, + "notify": { + "_grammar": "( explicit | master-only | primary-only | )" + }, + "notify-cfg": { + "_flags": [ + "may occur multiple times" + ], + "_id": "", + "_mapbody": { + "notify": { + "_grammar": "" + }, + "notify-defer": { + "_grammar": "" + }, + "notify-delay": { + "_grammar": "" + }, + "notify-source": { + "_grammar": "( | * )" + }, + "notify-source-v6": { + "_grammar": "( | * )" + } + } + }, + "notify-defer": { + "_grammar": "" + }, + "notify-delay": { + "_grammar": "" + }, + "notify-source": { + "_grammar": "( | * )" + }, + "notify-source-v6": { + "_grammar": "( | * )" + }, + "notify-to-soa": { + "_grammar": "" + }, + "nsec3-test-zone": { + "_flags": [ + "test only" + ], + "_grammar": "" + }, + "parental-agents": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "parental-source": { + "_grammar": "( | * )" + }, + "parental-source-v6": { + "_grammar": "( | * )" + }, + "plugin": { + "_flags": [ + "may occur multiple times" + ], + "_grammar": "( query ) [ { } ]" + }, + "primaries": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "provide-zoneversion": { + "_grammar": "" + }, + "request-expire": { + "_grammar": "" + }, + "request-ixfr": { + "_grammar": "" + }, + "request-ixfr-max-diffs": { + "_grammar": "" + }, + "send-report-channel": { + "_grammar": "" + }, + "sig-signing-nodes": { + "_grammar": "" + }, + "sig-signing-signatures": { + "_grammar": "" + }, + "sig-signing-type": { + "_grammar": "" + }, + "sig-validity-interval": { + "_flags": [ + "obsolete" + ], + "_grammar": " [ ]" + }, + "template": { + "_grammar": "" + }, + "transfer-source": { + "_grammar": "( | * )" + }, + "transfer-source-v6": { + "_grammar": "( | * )" + }, + "try-tcp-refresh": { + "_grammar": "" + }, + "update-check-ksk": { + "_flags": [ + "obsolete" + ], + "_grammar": "" + }, + "zero-no-soa-ttl": { + "_grammar": "" + }, + "zone-statistics": { + "_grammar": "( full | terse | none | )" + } + } + } +} diff --git a/bind9-grammar/static-stub.zoneopt.json b/bind9-grammar/static-stub.zoneopt.json new file mode 100644 index 0000000..bfbeef1 --- /dev/null +++ b/bind9-grammar/static-stub.zoneopt.json @@ -0,0 +1,43 @@ +{ + "zone": { + "_id": " [ ]", + "_mapbody": { + "type": { + "_grammar": "static-stub" + }, + "allow-query": { + "_grammar": "{ ; ... }" + }, + "allow-query-on": { + "_grammar": "{ ; ... }" + }, + "forward": { + "_grammar": "( first | only )" + }, + "forwarders": { + "_grammar": "[ port ] [ tls ] { ( | ) [ port ] [ tls ]; ... }" + }, + "max-records": { + "_grammar": "" + }, + "max-records-per-type": { + "_grammar": "" + }, + "max-types-per-name": { + "_grammar": "" + }, + "server-addresses": { + "_grammar": "{ ( | ); ... }" + }, + "server-names": { + "_grammar": "{ ; ... }" + }, + "template": { + "_grammar": "" + }, + "zone-statistics": { + "_grammar": "( full | terse | none | )" + } + } + } +} diff --git a/bind9-grammar/stub.zoneopt.json b/bind9-grammar/stub.zoneopt.json new file mode 100644 index 0000000..ade960b --- /dev/null +++ b/bind9-grammar/stub.zoneopt.json @@ -0,0 +1,85 @@ +{ + "zone": { + "_id": " [ ]", + "_mapbody": { + "type": { + "_grammar": "stub" + }, + "allow-query": { + "_grammar": "{ ; ... }" + }, + "allow-query-on": { + "_grammar": "{ ; ... }" + }, + "check-names": { + "_grammar": "( fail | warn | ignore )" + }, + "database": { + "_grammar": "" + }, + "file": { + "_grammar": "" + }, + "forward": { + "_grammar": "( first | only )" + }, + "forwarders": { + "_grammar": "[ port ] [ tls ] { ( | ) [ port ] [ tls ]; ... }" + }, + "masterfile-format": { + "_grammar": "( raw | text )" + }, + "masterfile-style": { + "_grammar": "( full | relative )" + }, + "max-records": { + "_grammar": "" + }, + "max-records-per-type": { + "_grammar": "" + }, + "max-refresh-time": { + "_grammar": "" + }, + "max-retry-time": { + "_grammar": "" + }, + "max-transfer-idle-in": { + "_grammar": "" + }, + "max-transfer-time-in": { + "_grammar": "" + }, + "max-types-per-name": { + "_grammar": "" + }, + "min-refresh-time": { + "_grammar": "" + }, + "min-retry-time": { + "_grammar": "" + }, + "min-transfer-rate-in": { + "_grammar": " " + }, + "multi-master": { + "_grammar": "" + }, + "primaries": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "template": { + "_grammar": "" + }, + "transfer-source": { + "_grammar": "( | * )" + }, + "transfer-source-v6": { + "_grammar": "( | * )" + }, + "zone-statistics": { + "_grammar": "( full | terse | none | )" + } + } + } +} diff --git a/bind9-grammar/zoneopt.json b/bind9-grammar/zoneopt.json new file mode 100644 index 0000000..ade960b --- /dev/null +++ b/bind9-grammar/zoneopt.json @@ -0,0 +1,85 @@ +{ + "zone": { + "_id": " [ ]", + "_mapbody": { + "type": { + "_grammar": "stub" + }, + "allow-query": { + "_grammar": "{ ; ... }" + }, + "allow-query-on": { + "_grammar": "{ ; ... }" + }, + "check-names": { + "_grammar": "( fail | warn | ignore )" + }, + "database": { + "_grammar": "" + }, + "file": { + "_grammar": "" + }, + "forward": { + "_grammar": "( first | only )" + }, + "forwarders": { + "_grammar": "[ port ] [ tls ] { ( | ) [ port ] [ tls ]; ... }" + }, + "masterfile-format": { + "_grammar": "( raw | text )" + }, + "masterfile-style": { + "_grammar": "( full | relative )" + }, + "max-records": { + "_grammar": "" + }, + "max-records-per-type": { + "_grammar": "" + }, + "max-refresh-time": { + "_grammar": "" + }, + "max-retry-time": { + "_grammar": "" + }, + "max-transfer-idle-in": { + "_grammar": "" + }, + "max-transfer-time-in": { + "_grammar": "" + }, + "max-types-per-name": { + "_grammar": "" + }, + "min-refresh-time": { + "_grammar": "" + }, + "min-retry-time": { + "_grammar": "" + }, + "min-transfer-rate-in": { + "_grammar": " " + }, + "multi-master": { + "_grammar": "" + }, + "primaries": { + "_grammar": "[ port ] [ source ( | * ) ] [ source-v6 ( | * ) ] { ( | [ port ] | [ port ] ) [ key ] [ tls ]; ... }" + }, + "template": { + "_grammar": "" + }, + "transfer-source": { + "_grammar": "( | * )" + }, + "transfer-source-v6": { + "_grammar": "( | * )" + }, + "zone-statistics": { + "_grammar": "( full | terse | none | )" + } + } + } +} diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml index ea41b85..2344860 100644 --- a/molecule/default/converge.yml +++ b/molecule/default/converge.yml @@ -2,10 +2,19 @@ - name: Converge hosts: all tasks: + - name: Create log directory for BIND + ansible.builtin.file: + path: /var/log/named + state: directory + mode: '0755' + owner: bind + group: bind + - name: Include bind9 role ansible.builtin.include_role: name: ../../../ansible-bind9-role # noqa: role-name[path] vars: + bind9_backup_config: false bind9_host_config: - name: named.conf.options options: @@ -26,6 +35,71 @@ tls: censurfridns-unicast forward: first dnssec_validation: auto + dnstap: + - type: auth + - type: resolver + log: query + - type: client + log: response + dnstap_output: + output_type: file + output_file: /var/log/named/dnstap.log + size: 20m + versions: 3 + suffix: increment + dnstap_identity: dns-server-01 + dnstap_version: 9.18 + logging: + channels: + - name: default_log + file: + name: /var/log/named/default.log + severity: info + print_time: true + print_severity: true + print_category: true + - name: security_log + file: + name: /var/log/named/security.log + severity: dynamic + print_time: true + print_severity: true + print_category: true + - name: query_log + file: + name: /var/log/named/queries.log + versions: 5 + size: 10m + severity: info + print_time: true + - name: dnssec_log + file: + name: /var/log/named/dnssec.log + severity: debug + print_time: true + print_severity: true + - name: rate_limit_log + syslog: daemon + severity: warning + categories: + - name: default + channels: + - default_log + - name: general + channels: + - default_log + - name: security + channels: + - security_log + - name: queries + channels: + - query_log + - name: dnssec + channels: + - dnssec_log + - name: rate-limit + channels: + - rate_limit_log - name: named.conf.local tls: - name: censurfridns-anycast