Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • BIND BIND
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 618
    • Issues 618
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 113
    • Merge requests 113
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Artifacts
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
    • Model experiments
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • ISC Open Source ProjectsISC Open Source Projects
  • BINDBIND
  • Issues
  • #1086

Reduce the number of "bad configuration options" flags

tl;dr:

  1. Reduce the number of bad option flags.
  2. Print a warning when an option is flagged experimental.
  3. Do something about the non-operational flags test only and default changed

There is a subtle difference between unsupported configuration options:

  • ancient: these are options that existed in 9.8 but removed in 9.9. Having them in named.conf is a configuration error, causing named to exit on startup.
  • obsoleted: these are options that no longer do anything, and should be removed from the configuration file, but is not a configuration error. Having these options in named.conf will log a warning that says the option is obsoleted and should be removed.
  • deprecated: these are options that still work but are deprecated. They will no longer be supported and you should use the newer configuration options. They will still work, and configuring them will trigger the expected behavior, but these options will be removed in a future version.
  • not implemented: These options are not implemented but do have a option name assigned.
  • not yet implemented: These options are not yet implemented but do have a option name assigned.
  • not operational: These options only do something if at compile time the feature was enabled, otherwise they are ignored.
  • not configured: These options are only allowed if at compile time the feature was enabled, otherwise having them in named.conf is a configuration error.
  • Then there are the options that have no special handling, these are "unknown". They are a configuration error and cause named to exit at startup.

Below are the list of options that fall in one of these categories.

Let's reduce the number of options to the following:

  • "unknown": Any option that is not supported and will result in a configuration error does not need a special flag. When encountering such an option, named will log that it encountered an "unknown option". Includes all ancient options.
  • ancient: These options are treated the same way as the unknown options, except it tells the operator and implementer the option was in use in the past.
  • obsoleted: This option does nothing and having them in your configuration file is a noop. The option may be removed in the future. This includes not (yet) implemented options. not implemented and not yet implemented options will be treated similar as obsoleted (the idea being that if an option is implemented it should be functional`).
  • deprecated: This option still works, but should be removed because the option may be removed in the future.
  • not configured: These options are only allowed if their feature is enabled at compile time. Having them in your named.conf otherwise is a configuration error. not operational is promoted to not configured.

In addition to these bad configuration options there is also difference between good options:

  • The normal options that do not require any special processing or logging.
  • multiple: This option is the same as normal options but may appear multiple times.
  • experimental: Experimental options that (currently) are treated as normal options.
  • default changed: This tells the user that if the configuration option is not present, the default has changed.
  • test only: This option is for testing purposes only.

Experimental options should also trigger a log warning.

We may want to do something about the broken default changed and test only options.

Ancient options

option clause
deallocate-on-exit options
fake-iquery options
has-old-clients options
host-statistics options
host-statistics-max options
multiple-cnames options
named-xfer options
serial-queries options
statistics-interval options
treat-cr-as-space options
use-id-pool options
fetch-glue view
min-roots view
rfc2308-type1 view
topology view
maintain-ixfr-base zone
max-ixfr-log-size zone
ixfr-base zone
ixfr-tmp-file zone
pubkey zone

Obsoleted options

option clause
lwres top
geoip-use-ecs options
sit-secret options
use-ixfr options
acache-cleaning-interval view
acache-enable view
additional-from-auth view
additional-from-cache view
allow-v6-synthesis view
cleaning-interval view
dnssec-enable view
filter-aaaa view
filter-aaaa-on-v4 view
filter-aaaa-on-v6 view
max-acache-size view
nosit-udp-size view
queryport-pool-ports view
queryport-pool-updateinterval view
request-sit view, server
use-queryport-pool view
support-ixfr server

Deprecated options

option clause
managed-keys top, view, bind.keys
trusted-keys top, view, bind.keys

Not implemented

None.

Not yet implemented

option clause
suppress-initial-notify view

Not operational

option clause feature
lmdb-mapsize view lmdb

Not configured

option clause feature
dnstap-output options dnstap
dnstap-identity options dnstap
dnstap-version options dnstap
fstrm-set-buffer-hint options dnstap
fstrm-set-flush-timeout options dnstap
fstrm-set-input-queue-size options dnstap
fstrm-set-output-notify-threshold options dnstap
fstrm-set-output-queue-model options dnstap
fstrm-set-output-queue-size options dnstap
fstrm-set-reopen-interval options dnstap
geoip-directory options geoip
dnsrps-enable view, rpz dnsrps
dnsrps-options view, rpz dnsrps
dnstap view dnstap
Edited Jun 14, 2019 by Matthijs Mekking
Assignee
Assign to
Time tracking