]> git.ipfire.org Git - thirdparty/bind9.git/log
thirdparty/bind9.git
7 months ago'nextpart' and 'grep -q' don't work together
Mark Andrews [Tue, 14 Oct 2025 05:41:50 +0000 (16:41 +1100)] 
'nextpart' and 'grep -q' don't work together

'nextpart file | grep -q' doesn't work as expected.  'grep -q' is not
required to read all of the input and that causes 'nextpart' to fail.

7 months agofix: nil: Fix parse_rr in lib/dns/skr.c was failing to reset the comments
Mark Andrews [Tue, 14 Oct 2025 06:46:05 +0000 (17:46 +1100)] 
fix: nil: Fix parse_rr in lib/dns/skr.c was failing to reset the comments

If dns_name_fromtext failed or the subsequent dns_name_compare
failed the lexer's comments state wasn't cleaned up.

Closes #5564

Merge branch '5564-fix-bug-in-skr-c-parse_rr-on-error-path' into 'main'

See merge request isc-projects/bind9!11088

7 months agoFix parse_rr in lib/dns/skr.c was failing to reset the comments
Mark Andrews [Tue, 14 Oct 2025 00:26:45 +0000 (11:26 +1100)] 
Fix parse_rr in lib/dns/skr.c was failing to reset the comments

If dns_name_fromtext failed or the subsequent dns_name_compare
failed the lexer's comments state wasn't cleaned up.

7 months agofix: doc: Remove mentions of the bind-workers mailing list
Štěpán Balážik [Mon, 13 Oct 2025 16:02:30 +0000 (16:02 +0000)] 
fix: doc: Remove mentions of the bind-workers mailing list

It has been shutdown back in 2022.

Merge branch 'stepan/remove-bind-workers-from-readme' into 'main'

See merge request isc-projects/bind9!11061

7 months agoRemove mentions of the bind-workers mailing list
Štěpán Balážik [Tue, 7 Oct 2025 17:32:45 +0000 (19:32 +0200)] 
Remove mentions of the bind-workers mailing list

It has been shutdown back in 2022.

7 months agochg: doc: Set up version for BIND 9.21.15
Michał Kępień [Mon, 13 Oct 2025 13:42:54 +0000 (15:42 +0200)] 
chg: doc: Set up version for BIND 9.21.15

Merge branch 'michal/set-up-version-for-bind-9.21.15' into 'main'

See merge request isc-projects/bind9!11083

7 months agoUpdate BIND version to 9.21.15-dev
Michał Kępień [Mon, 13 Oct 2025 13:38:56 +0000 (15:38 +0200)] 
Update BIND version to 9.21.15-dev

7 months agorem: dev: Remove "bindkeys-file" option
Evan Hunt [Mon, 13 Oct 2025 07:12:41 +0000 (07:12 +0000)] 
rem: dev: Remove "bindkeys-file" option

The `bindkeys-file` option was only used for testing purposes, and has now been replaced with a `-T bindkeys=<filename>` option for `named`.

Merge branch 'each-remove-bindkeys-file' into 'main'

See merge request isc-projects/bind9!11081

7 months agoremove "bindkeys-file" option
Evan Hunt [Sat, 11 Oct 2025 01:27:41 +0000 (18:27 -0700)] 
remove "bindkeys-file" option

The bindkeys-file option was only used for testing purposes, and
has now been replaced with a "-T bindkeys=<filename>" option for
named.

7 months agoclean up bind.keys
Evan Hunt [Sat, 11 Oct 2025 00:41:07 +0000 (17:41 -0700)] 
clean up bind.keys

the comments in the bind.keys file were outdated; the file now only
exists to be converted into bind.keys.h and compiled into named and
delv.

some tests also referenced it, and have been cleaned up, since
the keys in it are already built into named.

7 months agochg: nil: Add dnssec-policy text for dnssec-importkey alessio/rdataslab-inline-baseline
Matthijs Mekking [Fri, 10 Oct 2025 17:34:59 +0000 (17:34 +0000)] 
chg: nil: Add dnssec-policy text for dnssec-importkey

:program:`dnssec-importkey` should not be used to import DNSKEY records from other providers (for example when setting up multi-signer). Clarify this in the manpage.

Merge branch 'matthijs-clarify-import-key-dnssec-policy' into 'main'

See merge request isc-projects/bind9!11064

7 months agoAdd dnssec-policy text for dnssec-importkey
Matthijs Mekking [Wed, 8 Oct 2025 07:44:54 +0000 (09:44 +0200)] 
Add dnssec-policy text for dnssec-importkey

You should not use dnssec-importkey to import DNSKEY records from
other providers (for example when setting up multi-signer).

Clarify this in the manpage.

7 months agofix: test: Disable keyfromlabel collision avoidance in tests
Nicki Křížek [Fri, 10 Oct 2025 09:24:39 +0000 (11:24 +0200)] 
fix: test: Disable keyfromlabel collision avoidance in tests

With the collision avoidance on, some of the tests would occasionally
fail. None of the tests using keyfromlabel are revoking the keys so it
should be safe to disable it.

Closes #5554

Merge branch '5554-disable-keyfromlabel-collision-avoidance-in-tests' into 'main'

See merge request isc-projects/bind9!11066

7 months agoDisable keyfromlabel collision avoidance in tests
Nicki Křížek [Wed, 8 Oct 2025 09:35:24 +0000 (11:35 +0200)] 
Disable keyfromlabel collision avoidance in tests

With the collision avoidance on, some of the tests would occasionally
fail. None of the tests using keyfromlabel are revoking the keys so it
should be safe to disable it.

8 months agofix: nil: Update the semantic patches to use new coccinelle syntax
Ondřej Surý [Wed, 8 Oct 2025 17:17:45 +0000 (19:17 +0200)] 
fix: nil: Update the semantic patches to use new coccinelle syntax

Merge branch 'ondrej/update-semantic-patches' into 'main'

See merge request isc-projects/bind9!11067

8 months agoApply the changes from updated set_if_not_null semantic patch
Ondřej Surý [Wed, 8 Oct 2025 15:34:12 +0000 (17:34 +0200)] 
Apply the changes from updated set_if_not_null semantic patch

8 months agoDisable the unreachable semantic patch
Ondřej Surý [Wed, 8 Oct 2025 15:41:35 +0000 (17:41 +0200)] 
Disable the unreachable semantic patch

The UNREACHABLE() semantic patch seems to be broken with coccinelle
1.3.0 - it spins undefinitely.  Disable it for now.

8 months agoUpdate the semantic patches to use new development ideas
Ondřej Surý [Wed, 8 Oct 2025 15:03:18 +0000 (17:03 +0200)] 
Update the semantic patches to use new development ideas

Co-Authored-By: Markus Elfring <Markus.Elfring@web.de>
8 months agochg: test: Remove KeyProperties property expect
Matthijs Mekking [Wed, 8 Oct 2025 08:33:04 +0000 (08:33 +0000)] 
chg: test: Remove KeyProperties property expect

We agreed to make "expect" a direct attribute of KeyProperties, but it turns out the property is unused, so we can just remove it.

Closes #5278

Merge branch '5278-kasp-system-test-follow-up-1' into 'main'

See merge request isc-projects/bind9!11042

8 months agoMake properties direct attribute of KeyProperties
Matthijs Mekking [Thu, 2 Oct 2025 08:22:54 +0000 (10:22 +0200)] 
Make properties direct attribute of KeyProperties

There is no real reason to keep those in a dictionary.

8 months agoRemove KeyProperties property expect
Matthijs Mekking [Wed, 1 Oct 2025 14:35:20 +0000 (16:35 +0200)] 
Remove KeyProperties property expect

This property is unused, so we can just remove it.

8 months agorem: dev: remove dns_zone_dump
Colin Vidal [Wed, 8 Oct 2025 07:37:50 +0000 (09:37 +0200)] 
rem: dev: remove dns_zone_dump

Zone API `dns_zone_dump` is dead code in 9.21 (and was also dead code at
least in 9.20), removing it.

Merge branch 'colin/remove-dns_zone_dump' into 'main'

See merge request isc-projects/bind9!11060

8 months agoremove dns_zone_dump
Colin Vidal [Tue, 7 Oct 2025 09:42:04 +0000 (11:42 +0200)] 
remove dns_zone_dump

Zone API `dns_zone_dump` is dead code in 9.21 (and was also dead code at
least in 9.20), removing it.

8 months agofix: nil: Exclude lib/dns/include/dns/db.h from unsigned-int.spatch
Mark Andrews [Wed, 8 Oct 2025 06:25:05 +0000 (17:25 +1100)] 
fix: nil: Exclude lib/dns/include/dns/db.h from unsigned-int.spatch

Disable unsigned-int spatch in db.h to silence the following error from coccinelle v1.1:

```
EXN: Failure("./lib/dns/include/dns/db.h: 188: try to delete an expanded token: unsigned") in ./lib/dns/include/dns/db.h
```

Merge branch 'marka-cocci-fix' into 'main'

See merge request isc-projects/bind9!11062

8 months agoExclude lib/dns/include/dns/db.h from unsigned-int.spatch
Mark Andrews [Wed, 8 Oct 2025 01:35:08 +0000 (12:35 +1100)] 
Exclude lib/dns/include/dns/db.h from unsigned-int.spatch

Disable unsigned-int spatch in db.h to silence the following error
from coccinelle v1.1:

    EXN: Failure("./lib/dns/include/dns/db.h: 188: try to delete an expanded token: unsigned") in ./lib/dns/include/dns/db.h

8 months agofix: nil: synthrecord: fixing code nits
Colin Vidal [Tue, 7 Oct 2025 05:42:33 +0000 (07:42 +0200)] 
fix: nil: synthrecord: fixing code nits

Fixing an (invalid) Coverity NULL-dereference (ns_pluginctx_t is always
defined) by enforcing a REQUIRE, and add a missing return value check.

Closes #1586

Merge branch 'colin/synthrecord-fixup' into 'main'

See merge request isc-projects/bind9!11053

8 months agosynthrecord: fixing code nits
Colin Vidal [Sun, 5 Oct 2025 13:20:57 +0000 (15:20 +0200)] 
synthrecord: fixing code nits

Fixing an (invalid) Coverity NULL-dereference (ns_pluginctx_t is always
defined) by enforcing a REQUIRE, and add a missing return value check.

8 months agofix: ci: Remove reuse annotations for unused m4 libtool files
Nicki Křížek [Mon, 6 Oct 2025 16:04:51 +0000 (18:04 +0200)] 
fix: ci: Remove reuse annotations for unused m4 libtool files

The files in question are no longer included in the git tree and
distributed with the code. Remove the reuse annotations as they caused
issues with reuse 6.0.0, as multiline annotation for
SPDX-FileCopyrightText breaks the parsing.

Merge branch 'nicki/reuse-remove-m4-annotations' into 'main'

See merge request isc-projects/bind9!11056

8 months agoRemove reuse annotations for unused m4 libtool files
Nicki Křížek [Mon, 6 Oct 2025 15:45:07 +0000 (17:45 +0200)] 
Remove reuse annotations for unused m4 libtool files

The files in question are no longer included in the git tree and
distributed with the code. Remove the reuse annotations as they caused
issues with reuse 6.0.0, as multiline annotation for
SPDX-FileCopyrightText breaks the parsing.

8 months agorem: usr: Remove the "tkey-domain" statement
Michał Kępień [Mon, 6 Oct 2025 12:56:10 +0000 (14:56 +0200)] 
rem: usr: Remove the "tkey-domain" statement

The previously deprecated ``tkey-domain`` statement has now been
removed.

Closes #4204

Merge branch '4204-remove-tkey-domain' into 'main'

See merge request isc-projects/bind9!10801

8 months agoRemove "tkey-domain"
Michał Kępień [Mon, 6 Oct 2025 12:14:33 +0000 (14:14 +0200)] 
Remove "tkey-domain"

Since the "tkey-domain" statement has been previously obsoleted, mark it
as ancient to make any attempts to use it a fatal error.

8 months agorem: usr: Remove the "tkey-gssapi-credential" statement
Michał Kępień [Mon, 6 Oct 2025 12:14:10 +0000 (14:14 +0200)] 
rem: usr: Remove the "tkey-gssapi-credential" statement

The previously deprecated ``tkey-gssapi-credential`` statement and all
code related to it have now been removed.

Closes #4204

Merge branch '4204-remove-tkey-gssapi-credential' into 'main'

See merge request isc-projects/bind9!10800

8 months agoSimplify named_tkeyctx_fromconfig()
Michał Kępień [Mon, 6 Oct 2025 11:19:50 +0000 (13:19 +0200)] 
Simplify named_tkeyctx_fromconfig()

With the code handling the "tkey-gssapi-credential" statement removed,
the named_tkeyctx_fromconfig() function can no longer fail.  Update its
return type to void and revise its only call site accordingly.  Clean up
the function's documentation.  Declare the 's' helper variable only in
the scope it is used in to improve readability.

8 months agoRemove "tkey-gssapi-credential" and related code
Michał Kępień [Mon, 6 Oct 2025 11:19:50 +0000 (13:19 +0200)] 
Remove "tkey-gssapi-credential" and related code

Since the "tkey-gssapi-credential" statement has been previously
deprecated, mark it as ancient and remove all code related to it:

  - The code processing the "tkey-gssapi-credential" statement in the
    configuration is the only user of the dst_gssapi_acquirecred() and
    dst_gssapi_releasecred() functions, so remove them along with their
    static helper functions and a backup definition of the
    GSS_KRB5_MECHANISM macro.

  - When calling gss_accept_sec_context(), pass GSS_C_NO_CREDENTIAL
    instead of the credential acquired by gss_acquire_cred().
    (Previously, NULL was passed when "tkey-gssapi-credential" was not
    specified.  Kerberos headers define GSS_C_NO_CREDENTIAL as
    (gss_cred_id_t) 0, so the logic was effectively the same, but using
    the GSS_C_NO_CREDENTIAL macro is more appropriate.)  This renders
    the 'cred' parameter for dst_gssapi_acceptctx() redundant, so remove
    it from the prototype of the latter.  (Contrary to what the
    documentation for dst_gssapi_acceptctx() claims,
    dst_gssapi_releasecred() does not need to subsequently be called to
    free the GSS-API context; a dst_gssapi_deletectx() call in
    gssapi_destroy() takes care of that when the dynamically generated
    TSIG key is destroyed.)

  - Remove the 'gsscred' member from struct dns_tkeyctx, along with its
    related dns_gss_cred_id_t typedef.

Update the relevant sections of the ARM and code comments accordingly.

This makes the "tkey-gssapi-keytab" statement the only way to set up
GSS-TSIG in named.

Remove redundant code from bin/named/tkeyconf.c while at it.

8 months agoStop using "tkey-gssapi-credential" in tests
Michał Kępień [Mon, 6 Oct 2025 11:19:50 +0000 (13:19 +0200)] 
Stop using "tkey-gssapi-credential" in tests

Since the "tkey-gssapi-credential" statement is now deprecated and is
about to be removed, migrate the only system test using it ("nsupdate")
to "tkey-gssapi-keytab".

Currently, the GSS-TSIG parts of the "nsupdate" system test require
properly setting up a combination of:

  - "tkey-gssapi-credential" statements in named.conf files,
  - the KRB5_KTNAME environment variable.

Specifically, this configuration causes named startup to include
acquiring the credential that GSS-API is allowed to match keys against
from a keytab file specified by the KRB5_KTNAME environment variable.

By contrast, the revised configuration uses the "tkey-gssapi-keytab"
statement, which makes GSS-API match keys against any credential present
in the specified keytab file.

Since both keytabs in question (ns9/dns.keytab, ns10/dns.keytab) only
contain a single credential, the two configurations are functionally
equivalent, with the revised one being significantly more readable and
simpler to prepare.

8 months agoUpdate BIND version for release
Michał Kępień [Thu, 2 Oct 2025 16:19:19 +0000 (18:19 +0200)] 
Update BIND version for release

8 months agonew: doc: Prepare documentation for BIND 9.21.13
Michał Kępień [Thu, 2 Oct 2025 16:15:43 +0000 (18:15 +0200)] 
new: doc: Prepare documentation for BIND 9.21.13

Merge branch 'michal/prepare-documentation-for-bind-9.21.13' into 'v9.21.13-release'

See merge request isc-private/bind9!855

8 months agoReorder release notes
Michał Kępień [Thu, 2 Oct 2025 16:12:18 +0000 (18:12 +0200)] 
Reorder release notes

8 months agoTweak and reword release notes
Michał Kępień [Thu, 2 Oct 2025 16:12:18 +0000 (18:12 +0200)] 
Tweak and reword release notes

8 months agoPrepare release notes for BIND 9.21.13
Michał Kępień [Thu, 2 Oct 2025 16:12:18 +0000 (18:12 +0200)] 
Prepare release notes for BIND 9.21.13

8 months agoGenerate changelog for BIND 9.21.13
Michał Kępień [Thu, 2 Oct 2025 16:12:18 +0000 (18:12 +0200)] 
Generate changelog for BIND 9.21.13

8 months agochg: doc: Set up version for BIND 9.21.14
Michał Kępień [Thu, 2 Oct 2025 15:53:29 +0000 (17:53 +0200)] 
chg: doc: Set up version for BIND 9.21.14

Merge branch 'michal/set-up-version-for-bind-9.21.14' into 'main'

See merge request isc-projects/bind9!11049

8 months agoUpdate BIND version to 9.21.14-dev
Michał Kępień [Thu, 2 Oct 2025 15:50:00 +0000 (17:50 +0200)] 
Update BIND version to 9.21.14-dev

8 months ago[CVE-2025-40780] sec: usr: Cache-poisoning due to weak pseudo-random number generator
Michał Kępień [Thu, 2 Oct 2025 12:17:17 +0000 (14:17 +0200)] 
[CVE-2025-40780] sec: usr: Cache-poisoning due to weak pseudo-random number generator

It was discovered during research for an upcoming academic paper that a
xoshiro128\*\* internal state can be recovered by an external 3rd party,
allowing the prediction of UDP ports and DNS IDs in outgoing queries.
This could lead to an attacker spoofing the DNS answers with great
efficiency and poisoning the DNS cache.

The internal random generator has been changed to a cryptographically
secure pseudo-random generator.

ISC would like to thank Prof. Amit Klein and Omer Ben Simhon from Hebrew
University of Jerusalem for bringing this vulnerability to our
attention.

Closes isc-projects/bind9#5484

Merge branch '5484-security-make-isc_random-csprng' into 'v9.21.13-release'

See merge request isc-private/bind9!831

8 months agoUse arc4random for CSPRNG when available
Ondřej Surý [Mon, 25 Aug 2025 17:02:54 +0000 (19:02 +0200)] 
Use arc4random for CSPRNG when available

Use arc4random on platforms where available.  arc4random() provides high
quality cryptographically-secure pseudo-random numbers and is generally
recommended for application use.

The uv_random() call unfortunately uses getentropy() on platforms like
MacOS, OpenBSD or NetBSD which is not recommended for application use.

8 months agoUse cryptographically-secure pseudo-random generator everywhere
Ondřej Surý [Tue, 19 Aug 2025 17:22:18 +0000 (19:22 +0200)] 
Use cryptographically-secure pseudo-random generator everywhere

It was discovered in an upcoming academic paper that a xoshiro128**
internal state can be recovered by an external 3rd party allowing to
predict UDP ports and DNS IDs in the outgoing queries.  This could lead
to an attacker spoofing the DNS answers with great efficiency and
poisoning the DNS cache.

Change the internal random generator to system CSPRNG with buffering to
avoid excessive syscalls.

Thanks Omer Ben Simhon and Amit Klein of Hebrew University of Jerusalem
for responsibly reporting this to us.  Very cool research!

8 months ago[CVE-2025-40778] sec: usr: Address various spoofing attacks
Michał Kępień [Thu, 2 Oct 2025 11:24:53 +0000 (13:24 +0200)] 
[CVE-2025-40778] sec: usr: Address various spoofing attacks

Previously, several issues could be exploited to poison a DNS cache with
spoofed records for zones which were not DNSSEC-signed or if the
resolver was configured to not do DNSSEC validation. These issues were
assigned CVE-2025-40778 and have now been fixed.

As an additional layer of protection, :iscman:`named` no longer accepts
DNAME records or extraneous NS records in the AUTHORITY section unless
these are received via spoofing-resistant transport (TCP, UDP with DNS
cookies, TSIG, or SIG(0)).

ISC would like to thank Yuxiao Wu, Yunyi Zhang, Baojun Liu, and Haixin
Duan from Tsinghua University for bringing this vulnerability to our
attention.

Closes isc-projects/bind9#5414

Merge branch '5414-security-check-name-vs-qname-again' into 'v9.21.13-release'

See merge request isc-private/bind9!838

8 months agoRetry lookups with unsigned DNAME over TCP
Mark Andrews [Wed, 13 Aug 2025 03:56:01 +0000 (13:56 +1000)] 
Retry lookups with unsigned DNAME over TCP

To prevent spoofed unsigned DNAME responses being accepted retry
response with unsigned DNAMEs over TCP if the response is not TSIG
signed or there isn't a good DNS CLIENT COOKIE.

8 months agoFurther restrict addresses that are cached when processing referrals
Mark Andrews [Thu, 14 Aug 2025 04:35:46 +0000 (14:35 +1000)] 
Further restrict addresses that are cached when processing referrals

Use the owner name of the NS record as the bailwick apex name
when determining which additional records to cache, rather than
the name of the delegating zone (or a parent thereof).

8 months agoTighten restrictions on caching NS RRsets in authority section
Mark Andrews [Wed, 9 Jul 2025 23:37:36 +0000 (09:37 +1000)] 
Tighten restrictions on caching NS RRsets in authority section

To prevent certain spoofing attacks, a new check has been added
to the existing rules for whether NS data can be cached: the owner
name of the NS RRset must be an ancestor of the name being queried.

8 months ago[CVE-2025-8677] sec: usr: DNSSEC validation fails if matching but invalid DNSKEY...
Michał Kępień [Thu, 2 Oct 2025 10:53:46 +0000 (12:53 +0200)] 
[CVE-2025-8677] sec: usr: DNSSEC validation fails if matching but invalid DNSKEY is found

Previously, if a matching but cryptographically invalid key was encountered during
DNSSEC validation, the key was skipped and not counted
towards validation failures. :iscman:`named` now treats such DNSSEC keys
as hard failures and the DNSSEC validation fails immediately, instead of
continuing with the next DNSKEYs in the RRset.

ISC would like to thank Zuyao Xu and Xiang Li from the All-in-One
Security and Privacy Laboratory at Nankai University for bringing this
vulnerability to our attention.

Closes isc-projects/bind9#5343

Merge branch '5343-security-count-invalid-keys-into-validation-fails' into 'v9.21.13-release'

See merge request isc-private/bind9!821

8 months agoFail the DNSSEC validation if matching but invalid DNSKEY is found
Ondřej Surý [Tue, 22 Jul 2025 06:07:02 +0000 (08:07 +0200)] 
Fail the DNSSEC validation if matching but invalid DNSKEY is found

If a matching but cryptographically invalid key was encountered during
the DNSSEC validation, the key would be just skipped and not counted
towards validation failures.  Treat such DNSSEC keys as hard failures
and fail the DNSSEC validation immediatelly instead of continuing the
DNSSEC validation with the next DNSKEYs in the RRset.

Co-authored-by: Matthijs Mekking <matthijs@isc.org>
8 months agofix: test: Reorganize imports in tests_synthrecord.py
Michał Kępień [Thu, 2 Oct 2025 10:15:11 +0000 (12:15 +0200)] 
fix: test: Reorganize imports in tests_synthrecord.py

bin/tests/system/synthrecord/tests_synthrecord.py imports hypothesis
before importing isctest.hypothesis, which causes the "synthrecord"
system test to fail on platforms on which the Hypothesis module is not
available.  Reorganize Python imports in tests_synthrecord.py to fix the
above issue and also to make it more in line with other similar test
scripts.

Closes #1586

Merge branch '1586-reorganize-imports-in-tests_synthrecord.py' into 'main'

See merge request isc-projects/bind9!11046

8 months agoReorganize imports in tests_synthrecord.py
Michał Kępień [Thu, 2 Oct 2025 09:13:05 +0000 (11:13 +0200)] 
Reorganize imports in tests_synthrecord.py

bin/tests/system/synthrecord/tests_synthrecord.py imports hypothesis
before importing isctest.hypothesis, which causes the "synthrecord"
system test to fail on platforms on which the Hypothesis module is not
available.  Reorganize Python imports in tests_synthrecord.py to fix the
above issue and also to make it more in line with other similar test
scripts.

8 months agochg: test: Convert kasp sub-test comments to info logs
Matthijs Mekking [Thu, 2 Oct 2025 07:23:14 +0000 (07:23 +0000)] 
chg: test: Convert kasp sub-test comments to info logs

Follow-up on the discussion on the kasp system test rewrite to pytest.

Closes #5289

Merge branch '5289-kasp-system-test-follow-up-2' into 'main'

See merge request isc-projects/bind9!11043

8 months agoConvert kasp sub-test comments to info logs
Matthijs Mekking [Wed, 1 Oct 2025 14:51:06 +0000 (16:51 +0200)] 
Convert kasp sub-test comments to info logs

Follow-up on the discussion on the kasp system test rewrite to pytest.

8 months agochg: dev: rename ns_pluginregister_ctx_t into ns_pluginctx_t
Colin Vidal [Thu, 2 Oct 2025 05:32:50 +0000 (07:32 +0200)] 
chg: dev: rename ns_pluginregister_ctx_t into ns_pluginctx_t

The type `ns_pluginregister_ctx_t` was initially added to pass plugin
contextual data when the plugin is registered, but this is also now
passed into `plugin_check`. Furthermore, those various data are not
specific to the registration in particular. Rename the type into
`ns_pluginctx_t` for clarity.

Merge branch 'colin/rename-pluginctx-rename' into 'main'

See merge request isc-projects/bind9!11035

8 months agorename ns_pluginregister_ctx_t into ns_pluginctx_t
Colin Vidal [Wed, 1 Oct 2025 11:32:59 +0000 (13:32 +0200)] 
rename ns_pluginregister_ctx_t into ns_pluginctx_t

The type `ns_pluginregister_ctx_t` was initially added to pass plugin
contextual data when the plugin is registered, but this is also now
passed into `plugin_check`. Furthermore, those various data are not
specific to the registration in particular. Rename the type into
`ns_pluginctx_t` for clarity.

8 months agonew: ci: Prepare release announcement MR
Andoni Duarte [Wed, 1 Oct 2025 14:20:26 +0000 (14:20 +0000)] 
new: ci: Prepare release announcement MR

In the 'release' stage, create an MR automatically with the
corresponding release announcement. The input for this is taken from
metadata.json in bind9-qa.

Merge branch 'andoni/release-announcement-preparation' into 'main'

See merge request isc-projects/bind9!11039

8 months agoCreate release announcement MR
Andoni Duarte Pintado [Mon, 29 Sep 2025 15:21:13 +0000 (17:21 +0200)] 
Create release announcement MR

In the 'release' stage, create an MR automatically with the
corresponding release announcement. The input for this is taken from
metadata.json in bind9-qa.

8 months agochg: dev: Minor refactor of dst code
Matthijs Mekking [Wed, 1 Oct 2025 12:26:03 +0000 (12:26 +0000)] 
chg: dev: Minor refactor of dst code

Convert the defines to enums. Initialize the tags more explicitly and less ugly.

Merge branch 'matthijs-ugly-kid-joe' into 'main'

See merge request isc-projects/bind9!11000

8 months agoMinor refactor of dst code
Matthijs Mekking [Mon, 22 Sep 2025 14:58:22 +0000 (16:58 +0200)] 
Minor refactor of dst code

Convert the defines to enums. Initialize the tags more explicitly and
less ugly.

8 months agonew: usr: add support for synthetic records
Colin Vidal [Wed, 1 Oct 2025 10:52:39 +0000 (12:52 +0200)] 
new: usr: add support for synthetic records

Add a query plugin which, in "reverse" mode, enables the server to build a synthesized response to a PTR query when the PTR record requested is not found in the zone.

The dynamically-built name is constructed from a static prefix (passed as a plugin parameter), the IP address (extracted from the query name) and a suffix (also passed as a plugin parameter).  An `allow-synth` address-match list can be used to limit the network addresses for which the plugin may generate responses.

The plugin can also be used in "forward" mode, to build synthesized A/AAAA records from names using the same format as the dynamically-built PTR names. The same parameters are used: the plugin will react and answer a query if the name matches the configured prefix and origin, and encodes an IP address that is within `allow-synth`.

Closes #1586

Merge branch '1586-synthreverse' into 'main'

See merge request isc-projects/bind9!10348

8 months agomake "origin" optional for forward zones
Evan Hunt [Sat, 27 Sep 2025 04:59:52 +0000 (21:59 -0700)] 
make "origin" optional for forward zones

The "origin" parameter for synthrecord is now mandatory for reverse
zones, but when configured in a non-reverse zone, it will default to
the zone name.

8 months agoremove "mode" parameter from synthrecord
Evan Hunt [Sat, 27 Sep 2025 04:42:04 +0000 (21:42 -0700)] 
remove "mode" parameter from synthrecord

the plugin's operating mode is now determined automatically
from the zone name: if the name ends in "ip6.arpa" or "in-addr.arpa",
then the plugin is in reverse mode, otherwise forward.

8 months agoadd synthrecord plugin documentation
Colin Vidal [Thu, 15 May 2025 08:34:32 +0000 (10:34 +0200)] 
add synthrecord plugin documentation

Add synthrecord plugin documentation as well as update some
documentation for the other filter-a and filter-aaaa plugins.

8 months agoShare reverse (ARPA) domain names
Colin Vidal [Wed, 14 May 2025 11:56:48 +0000 (13:56 +0200)] 
Share reverse (ARPA) domain names

Names for reverse resolution are now shared and accessible from
dns/name.h header as those are used by ptr_12.c and byaddr.c files.

(Also, for consistency, move deprecated ip6.int. name in name.h, even
though it is used only by ptr_12.c).

8 months agoadd synthesized record system tests
Colin Vidal [Mon, 31 Mar 2025 14:00:32 +0000 (16:00 +0200)] 
add synthesized record system tests

Add system tests for the dynamically synthesized record plugin. This
covers the various cases the plugin should handle: generating a PTR
record only when (1) no answer is found locally and (2) the IP address
extracted from the query name is part of an allowed network. This also
covered the cases of forward synthesized records; answering a A/AAAA/ANY
query from a PTR address when this match the prefix, ACL and origin.

8 months agoadd support for synthesized PTR answers
Colin Vidal [Mon, 31 Mar 2025 13:57:24 +0000 (15:57 +0200)] 
add support for synthesized PTR answers

Add a BIND9 plugin which, in "reverse" mode, enables the server to build
a synthesized response to a PTR query when the PTR record requested is
not found in the zone. (The plugin won't be called for names below a
delegation point, because it couldn't know whether a name actually
exists within the delegation.)

The dynamically-built name is constructed from a static prefix (passed
as a plugin parameter), the IP address (extracted from the query name)
and a suffx (also passed as a plugin parameter).  An "allow-synth"
address-match list is used to limit the network addresses for which
the plugin may generate responses.

The plugin can also be used in "forward" mode, to build synthesized
A/AAAA records from names using the same format as he dynamically-built
PTR names, if the query name and type are not found in the zone.
The same parameters are used when the plugin is in forward mode:
the plugin will react and answer a query if the name matches the
configured prefix and origin, and encodes an IP address that is
within "allow-synth".

8 months agoadd API to parse and extract IP from PTR name
Colin Vidal [Mon, 31 Mar 2025 13:50:32 +0000 (15:50 +0200)] 
add API to parse and extract IP from PTR name

Add an API to parse and extract either an IPv4 or IPv6 address from
a name using the reverse format. It takes care of family detection,
and returns a generic error in case of syntax error.

8 months agoexpose hex_decode APIs
Colin Vidal [Fri, 16 May 2025 16:33:13 +0000 (18:33 +0200)] 
expose hex_decode APIs

Functions hex_decode_init(), hex_decode_char() and hex_decode_finish()
are now exposed, as well as the context hex_decode_ctx_t. They now are
respectively called isc_hex_decodeinit(), isc_hex_decodechar(),
isc_hex_decodefinish() and isc_hex_decodectx_t.

This enable to re-implement the functionality of isc_hex_decodestring()
in contextes where the input is not a NULL-terminated string, but, for
example, individual characters extracted (and avoid creating an
intermediate buffer to store them). This also enable to decode a stream
of hex characters where only hex characters are expected (i.e. no white
spaces).

8 months agochg: dev: provide more context when registering plugins
Colin Vidal [Wed, 1 Oct 2025 09:52:14 +0000 (11:52 +0200)] 
chg: dev: provide more context when registering plugins

Add a new type, `ns_pluginregister_ctx_t`, which is passed to `plugin_register()` in place of the `source` parameter. The source value is now just part of the structure, which also holds a pointer to the zone origin if the plugin is loaded at a zone level.

This provides more contextual information, enabling the plugin to make specific configuration decisions based on the name of the zone for which it is loaded.

It's also flexible if more contextual data are needed in the future: add a new field to `ns_pluginregister_ctx_t`, and new plugins can use it without affecting compatibility with existing plugins.

Closes #5533

Merge branch '5533-plugin-register-ctx' into 'main'

See merge request isc-projects/bind9!11019

8 months agounload zone plugin before freeing the zone
Colin Vidal [Sun, 28 Sep 2025 21:07:11 +0000 (23:07 +0200)] 
unload zone plugin before freeing the zone

Make sure all zone's plugin are unloaded before the zone gets freed.
This makes passing zone metadata like its origin to the plugin
registering function safe, as this garantee that the origin would always
be valid from the plugin lifecycle.

8 months agoprovide a context structure for plugin_register()
Colin Vidal [Fri, 26 Sep 2025 13:54:51 +0000 (15:54 +0200)] 
provide a context structure for plugin_register()

This commit introduces a new type, ns_pluginregister_ctx_t,
which is passed to plugin_check() and plugin_register() in place of the
'source' parameter. The source value is now just part of the structure,
which also holds a pointer to the zone origin if the plugin is loaded at
a zone level.

This provides more contextual information, enabling the plugin to make
specific configuration decisions based on the name of the zone for which
it is loaded.

It's also flexible if more contextual data are needed in the future:
add a new field to ns_pluginregister_ctx_t, and new plugins can use
it without affecting compatibility with existing plugins.

8 months agofix: dev: check plugin config before registering
Colin Vidal [Wed, 1 Oct 2025 09:10:40 +0000 (11:10 +0200)] 
fix: dev: check plugin config before registering

In `named_config_parsefile()`, when checking the validity of
`named.conf`, the checking of plugin correctness was deliberately
postponed until the plugin is loaded and registered. However,
the checking was never actually done: the `plugin_register()`
implementation was called, but `plugin_check()` was not.

`ns_plugin_register()` (used by `named`) now calls the check function
before the register function, and aborts if either one fails.
`ns_plugin_check()` (used by `named-checkconf`) calls only
the check function.

Merge branch 'each-check-plugin-named' into 'main'

See merge request isc-projects/bind9!11031

8 months agocheck plugin config before registering
Evan Hunt [Sat, 27 Sep 2025 03:57:52 +0000 (20:57 -0700)] 
check plugin config before registering

In named_config_parsefile(), when checking the validity of
named.conf, the checking of plugin correctness was deliberately
postponed until the plugin is loaded and registered. However,
when the plugin was registered, the checking was never actually
done: the plugin_register() implementation was called, but
plugin_check() was not.

This made it necessary to duplicate the correctness checking in both
functions, so that both named-checkconf and named could catch errors.
That should not be required.

ns_plugin_register() now calls the check function before the register
function, and aborts if either one fails.  ns_plugin_check() calls only
the check function.  ns_plugin_check() is used by named-checkconf, and
ns_plugin_register() is used by named. (Note: this design has a
side effect that a call to ns_plugin_register() will result in the
plugin parameters being parsed twice at registration time.)

ns_plugin_check() now takes an additional argument for the hook
source: zone or view.

8 months agorem: dev: remove CHECK_FOR_GLUE_IN_ANSWER
Colin Vidal [Tue, 30 Sep 2025 10:42:04 +0000 (12:42 +0200)] 
rem: dev: remove CHECK_FOR_GLUE_IN_ANSWER

Macro CHECK_FOR_GLUE_IN_ANSWER is defined in `lib/dns/resolver.c` only,
documented nowhere and not exposed as build configuration. This is valid
at least for 9.21+, 9.20 and 9.18. Furthermore, it doesn't compile
anymore on 9.21+ with -DCHECK_FOR_GLUE_IN_ANSWER=1.

Considering it is very unlikely that anyone build named with this,
remove the code rather than fixing it.

Closes #5538

Merge branch '5538-remove-check-for-glue-in-answer' into 'main'

See merge request isc-projects/bind9!11029

8 months agoremove CHECK_FOR_GLUE_IN_ANSWER
Colin Vidal [Tue, 30 Sep 2025 08:02:34 +0000 (10:02 +0200)] 
remove CHECK_FOR_GLUE_IN_ANSWER

Macro CHECK_FOR_GLUE_IN_ANSWER is defined in `lib/dns/resolver.c` only,
documented nowhere and not exposed as build configuration. This is valid
at least for 9.21+, 9.20 and 9.18. Furthermore, it doesn't compile
anymore on 9.21+ with -DCHECK_FOR_GLUE_IN_ANSWER=1.

Considering it is very unlikely that anyone build named with this,
remove the code rather than fixing it.

8 months agochg: dev: Add option to always build fuzz binaries
Alessio Podda [Mon, 29 Sep 2025 14:07:12 +0000 (14:07 +0000)] 
chg: dev: Add option to always build fuzz binaries

Currently the fuzzer binaries are only built when someone requests a
fuzzer. This might cause us to inadvertently break fuzzing when changing
function signatures. It also deviates with the behaviour we had with
autotools, where the fuzz binaries were built with make test.

This commit splits the -Dfuzzing option into two: fuzzing, and
fuzzing-backend. The fuzzing option controls whether the fuzzing
binaries are built. The fuzzing-backend option controls which backend to
use, and defaults to none. If the value none is used the binaries are
built, but no backend is used or guaranteed, which means that the
binaries might be non-functional.

Closes #5526

Merge branch '5526-add-meson-option-to-always-build-fuzz-binaries' into 'main'

See merge request isc-projects/bind9!10990

8 months agoAdd option to always build fuzz binaries
Alessio Podda [Thu, 18 Sep 2025 09:32:13 +0000 (11:32 +0200)] 
Add option to always build fuzz binaries

Currently the fuzzer binaries are only built when someone requests a
fuzzer. This might cause us to inadvertently break fuzzing when changing
function signatures. It also deviates with the behaviour we had with
autotools, where the fuzz binaries were built with make test.

This commit splits the -Dfuzzing option into two: fuzzing, and
fuzzing-backend. The fuzzing option controls whether the fuzzing
binaries are built. The fuzzing-backend option controls which backend to
use, and defaults to none. If the value none is used the binaries are
built, but no backend is used or guaranteed, which means that the
binaries might be non-functional.

8 months agonew: ci: Merge tag back to its base branch in tag pipeline
Andoni Duarte [Mon, 29 Sep 2025 12:02:10 +0000 (12:02 +0000)] 
new: ci: Merge tag back to its base branch in tag pipeline

Add a CI job to merge tags back to the respective base branch in tag pipelines.

Merge branch 'andoni/add-merge-tag-to-tag-pipeline' into 'main'

See merge request isc-projects/bind9!11001

8 months agoMerge tag back to its base branch in tag pipeline
Andoni Duarte Pintado [Tue, 23 Sep 2025 09:20:46 +0000 (11:20 +0200)] 
Merge tag back to its base branch in tag pipeline

Merging a tag to its base branch will now be a manual job in its tag
pipeline.

8 months agofix: dev: hookasyncctx renaming
Colin Vidal [Mon, 29 Sep 2025 08:15:38 +0000 (10:15 +0200)] 
fix: dev: hookasyncctx renaming

The field `ns_hookasync_t` was initially named `hook_actx` and wrongly
renamed `hook_aclctx` during a mass-renaming of various names for the
config acl context into a consistent `aclctx` name (see !11003). Of
course this is wrong as `ns_hookasync_t` has nothing to do with ACL but
about _async_ context. This commit fixes the mistake by renaming this
field `hookasyncctx`

Merge branch 'colin/fix-hookasyncctx-rename' into 'main'

See merge request isc-projects/bind9!11021

8 months agofix hookasyncctx renaming
Colin Vidal [Sun, 28 Sep 2025 20:37:33 +0000 (22:37 +0200)] 
fix hookasyncctx renaming

The field `ns_hookasync_t` was initially named `hook_actx` and wrongly
renamed `hook_aclctx` during a mass-renaming of various names for the
config acl context into a consistent `aclctx` name (see !11003). Of
course this is wrong as `ns_hookasync_t` has nothing to do with ACL but
about _async_ context. This commit fixes the mistake by renaming this
field `hookasyncctx`

8 months agofix: dev: apply_configuration: leave exclusive mode after viewlist cleanup
Colin Vidal [Fri, 26 Sep 2025 13:31:33 +0000 (15:31 +0200)] 
fix: dev: apply_configuration: leave exclusive mode after viewlist cleanup

When a re-configuration fails, `apply_configuration` flows jump to a
cleanup label and, at some point, leave the exclusive mode and cleanup
the viewlist. It looks fine as the viewlist is at this point only
locally known (if this is a configuration failure, this is the new view
list, if this is a success, this is the old list which has been swapped
out from the production list during the exclusive mode).

However, the view and zone initialization code enqueues job callbacks,
for instance from `dns_zone_setsigninginterval` (but there are others
cases) which will be called for the new views and zones after the
exclusive mode is over.

Depending where the configuration fails, those views and zones can be
half-configured, for instance a view might have an unfrozen resolver.
Hence, leaving the exclusive mode before cleaning up those views ans
zones will immediately called the previously enqueued callbacks and lead
to this reconfiguration-failure crash stack:

```
isc_assertion_failed
dns_resolver_createfetch
do_keyfetch
isc__async_cb
...
uv_run
loop_thread
thread_body
thread_run
start_thread
...
```

To avoid the problem, the views are now cleaned up before leaving the
exclusive mode (which also clean up the zones and enqueued callbacks).

As context, the bug was introduced by !10910 which moved the creation
(not configuration) of the view outsides of the exclusive mode. This is
a safe move (as at this point, the newly view are only known locally by
`apply_configuration`) but the re-order was wrong regarding the point
where the exclusive mode was ended (before the change, the exclusive
mode as always ended before the new view are detached).

Merge branch 'colin/leave-exclusive-mode-after-view-cleanup' into 'main'

See merge request isc-projects/bind9!11016

8 months agotest views are detached before leaving exclusive mode
Colin Vidal [Fri, 26 Sep 2025 12:54:42 +0000 (14:54 +0200)] 
test views are detached before leaving exclusive mode

Adds a log-based test ensuring that when a reconfiguration fails inside
the view configuration, the newly created view are always detached
before the exclusive mode is ended.

8 months agoapply_configuration: leave exclusive mode after viewlist cleanup
Colin Vidal [Fri, 26 Sep 2025 09:12:53 +0000 (11:12 +0200)] 
apply_configuration: leave exclusive mode after viewlist cleanup

When a re-configuration fails, `apply_configuration` flows jump to a
cleanup label and, at some point, leave the exclusive mode and cleanup
the viewlist. It looks fine as the viewlist is at this point only
locally known (if this is a configuration failure, this is the new view
list, if this is a success, this is the old list which has been swapped
out from the production list during the exclusive mode).

However, the view and zone initialization code enqueues job callbacks,
for instance from `dns_zone_setsigninginterval` (but there are others
cases) which will be called for the new views and zones after the
exclusive mode is over.

Depending where the configuration fails, those views and zones can be
half-configured, for instance a view might have an unfrozen resolver.
Hence, leaving the exclusive mode before cleaning up those views ans
zones will immediately called the previously enqueued callbacks and lead
to this reconfiguration-failure crash stack:

```
isc_assertion_failed
dns_resolver_createfetch
do_keyfetch
isc__async_cb
...
uv_run
loop_thread
thread_body
thread_run
start_thread
...
```

To avoid the problem, the views are now cleaned up before leaving the
exclusive mode (which also clean up the zones and enqueued callbacks).

As context, the bug was introduced by !10910 which moved the creation
(not configuration) of the view outsides of the exclusive mode. This is
a safe move (as at this point, the newly view are only known locally by
`apply_configuration`) but the re-order was wrong regarding the point
where the exclusive mode was ended (before the change, the exclusive
mode as always ended before the new view are detached).

8 months agofix: usr: rndc sign during ZSK rollover will now replace signatures
Matthijs Mekking [Fri, 26 Sep 2025 12:03:46 +0000 (12:03 +0000)] 
fix: usr: rndc sign during ZSK rollover will now replace signatures

When performing a ZSK rollover, if the new DNSKEY is omnipresent, the :option:`rndc sign` command now signs the zone completely with the successor key, replacing all zone signatures from the predecessor key with new ones.

Closes #5483

Merge branch '5483-smooth-operator-bug' into 'main'

See merge request isc-projects/bind9!10867

8 months agoUpdate the retire interval after full sign
Matthijs Mekking [Tue, 19 Aug 2025 13:16:39 +0000 (15:16 +0200)] 
Update the retire interval after full sign

After a full sign we no longer have to need to take the sign delay into
account. Update the timing checks in keymgr_transition_time to determine
the start of the interval: Either the last change, or if SigPublish/
SigDelete is set. The latter case indicates a full sign was done and
so we no longer have to take the sign delay into account.

8 months agoTest the next key event after full sign
Matthijs Mekking [Tue, 19 Aug 2025 13:10:59 +0000 (15:10 +0200)] 
Test the next key event after full sign

After a full sign we no longer have to need to take the sign delay into
account.

8 months agoForce full sign to generate new signatures
Matthijs Mekking [Tue, 19 Aug 2025 10:37:29 +0000 (12:37 +0200)] 
Force full sign to generate new signatures

When introducing the kasp logic, a full sign of the zone did not
generate new signatures for the new active keys during a ZSK rollover.

The introduced kasp logic ensured that the rollover is performed
smoothly, as in the signatures are only replaced if the old signature
is close to expiring (depending on the signatures-refresh option).

Fix by maintaining a fullsign boolean value in the signing structure,
that will ensure the RRsets are signed with the correct key, rather
than a similar good key.

In case of a fullsign, we can also remove signatures from inactive
keys.

Remove the unused dns_zone_signwithkey function.

8 months agoTest rndc sign updates the signatures
Matthijs Mekking [Tue, 19 Aug 2025 10:42:35 +0000 (12:42 +0200)] 
Test rndc sign updates the signatures

Add a check to the ZSK rollover test case that ensures the zone is
signed with the successor key only, after a 'rndc sign' is commanded.

8 months agofix: usr: Use signer name when disabling DNSSEC algorithms
Mark Andrews [Thu, 25 Sep 2025 14:13:38 +0000 (00:13 +1000)] 
fix: usr: Use signer name when disabling DNSSEC algorithms

``disable-algorithms`` could cause DNSSEC validation failures when the parent zone was
signed with the algorithms that were being disabled for the child zone.
This has been fixed; `disable-algorithms` now works
on a whole-of-zone basis.

If the zone's name is at or below the ``disable-algorithms`` name the algorithm
is disabled for that zone, using deepest match when there are multiple
``disable-algorithms`` clauses.

Closes #5165

Merge branch '5165-use-signer-name-when-disabling-dnssec-algorithms' into 'main'

See merge request isc-projects/bind9!10837

8 months agoCheck disable-algorithms with non-zone names
Matthijs Mekking [Tue, 23 Sep 2025 13:36:56 +0000 (15:36 +0200)] 
Check disable-algorithms with non-zone names

Test that if disable-algorithms is configured on a name that is below
the zonecut, it still validates (z.secure.example).

Test that if disable-algorithms is configured on a name that is above
the zonecut, it is treated as insecure (zonecut.ent.secure.example).

8 months agoMake it clearer that disable-algorithms applies to zone names
Mark Andrews [Tue, 9 Sep 2025 06:57:35 +0000 (16:57 +1000)] 
Make it clearer that disable-algorithms applies to zone names

8 months agoCheck that badalg.secure.example resolves
Mark Andrews [Thu, 7 Aug 2025 06:27:32 +0000 (16:27 +1000)] 
Check that badalg.secure.example resolves

Previously, badalg.secure.example would return SERVFAIL because the DS
records (from the parent) could not be validated.

8 months agoUse signer name when disabling DNSSEC algorithms
Mark Andrews [Thu, 7 Aug 2025 04:37:33 +0000 (14:37 +1000)] 
Use signer name when disabling DNSSEC algorithms

When disabling algorithms, use the signer name to determine if the
algorithm is disabled or not.  This allows for algorithms to be
cleanly disabled on a zone level basis.  Previously, just using the
records owner name, "disable-algorithms" could impact resolution of
names that where not disabled.  This does now mean that
"disable-algorithms" can not be used to disable part of a zone anymore.

8 months agochg: dev: rename cfg_aclconfctx_t variables to aclctx
Colin Vidal [Wed, 24 Sep 2025 18:57:38 +0000 (20:57 +0200)] 
chg: dev: rename cfg_aclconfctx_t variables to aclctx

ACL configuration context variables are inconsistently named as `actx`,
`ac`, or `aclconfctx`, which caused confusion during code reviews. This
commit renames all `cfg_aclconfctx_t` variables to `aclctx`, which is
short, consistent, and unambiguous.

Closes #5530

Merge branch '5530-rename-actx' into 'main'

See merge request isc-projects/bind9!11003

8 months agorename cfg_aclconfctx_t variables to aclctx
Colin Vidal [Wed, 24 Sep 2025 09:10:29 +0000 (11:10 +0200)] 
rename cfg_aclconfctx_t variables to aclctx

ACL configuration context variables are inconsistently named as `actx`,
`ac`, or `aclconfctx`, which caused confusion during code reviews. This
commit renames all `cfg_aclconfctx_t` variables to `aclctx`, which is
short, consistent, and unambiguous.

8 months agonew: usr: Add dnssec-policy keys configuration check to named-checkconf
Matthijs Mekking [Wed, 24 Sep 2025 15:44:08 +0000 (15:44 +0000)] 
new: usr: Add dnssec-policy keys configuration check to named-checkconf

A new option `-k` is added to `named-checkconf` that allows checking the `dnssec-policy` `keys` configuration against the configured key stores. If the found key files are not in sync with the given `dnssec-policy`, the check will fail.

This is useful to run before migrating to `dnssec-policy`.

Closes #5486

Merge branch '5486-named-checkconf-dnssec-policy-key-directory' into 'main'

See merge request isc-projects/bind9!10907