Almost every test instance's options block starts with the same seven
statements varying only in the instance address: the source-address
trio, port, pid-file, and the listen-on pair. Provide them as jinja2
partials in _common/options/ plus two umbrellas built on the
auto-injected per-instance `ns` variable: options.conf.j2 for the
v4-only case and options-dual.conf.j2 for dual-stack instances.
The partials carry no indentation of their own: consumers pull them in
with {% include_indented %} at the desired depth, so the templates do
not hardcode the block structure they are used in.
Semantic options (recursion, dnssec-validation, notify, allow-*) stay
in the individual config files by design.
Assisted-by: Claude:claude-fable-5
--- /dev/null
+{% include "_common/options/sources-dual.conf.j2" %}
+{% include "_common/options/server.conf.j2" %}
+{% include "_common/options/listen-dual.conf.j2" %}
--- /dev/null
+{% include "_common/options/sources.conf.j2" %}
+{% include "_common/options/server.conf.j2" %}
+{% include "_common/options/listen.conf.j2" %}
--- /dev/null
+listen-on { @ns.ip@; };
+listen-on-v6 { @ns.ip6@; };
--- /dev/null
+listen-on { @ns.ip@; };
+listen-on-v6 { none; };
--- /dev/null
+port @PORT@;
+pid-file "named.pid";
--- /dev/null
+{% include "_common/options/sources.conf.j2" %}
+{% include "_common/options/sources-v6.conf.j2" %}
--- /dev/null
+query-source-v6 address @ns.ip6@;
+notify-source-v6 @ns.ip6@;
+transfer-source-v6 @ns.ip6@;
--- /dev/null
+query-source address @ns.ip@;
+notify-source @ns.ip@;
+transfer-source @ns.ip@;