]> git.ipfire.org Git - thirdparty/bind9.git/log
thirdparty/bind9.git
10 months agochg: ci: Disable Kerberos in tumbleweed
Michal Nowak [Thu, 26 Jun 2025 10:56:08 +0000 (12:56 +0200)] 
chg: ci: Disable Kerberos in tumbleweed

In the tumbleweed image, we utilize LibreSSL. Several BIND 9 libraries
are linked against LibreSSL's libcrypto.so.55, and when Kerberos is
enabled, we link against libk5crypto.so.3, which in turn links against
OpenSSL's libcrypto.so.3. This might theoretically lead to a symbol
conflict.

Closes #5394

Merge branch '5394-disable-kerberos-in-tumbleweed' into 'main'

See merge request isc-projects/bind9!10643

10 months agoDisable Kerberos in tumbleweed
Michal Nowak [Wed, 25 Jun 2025 13:35:23 +0000 (15:35 +0200)] 
Disable Kerberos in tumbleweed

In the tumbleweed image, we utilize LibreSSL. Several BIND 9 libraries
are linked against LibreSSL's libcrypto.so.55, and when Kerberos is
enabled, we link against libk5crypto.so.3, which in turn links against
OpenSSL's libcrypto.so.3. This might theoretically lead to a symbol
conflict.

10 months agofix: nil: Fix version description in a startup log message
Michał Kępień [Thu, 26 Jun 2025 10:06:35 +0000 (12:06 +0200)] 
fix: nil: Fix version description in a startup log message

Commit 5cd6c173ff74309ae7fb73b3e4c754f1589eaddc changed the contents of
the PACKAGE_DESCRIPTION preprocessor macro from " (<description>)" to
just "<description>" and missed a spot while adjusting all uses of this
macro in the code base.  Fix formatting for that malformed log message,
emitted upon named startup.

See #5379

Merge branch '5379-fix-version-description-in-a-startup-log-message' into 'main'

See merge request isc-projects/bind9!10646

10 months agoFix version description in a startup log message
Michał Kępień [Thu, 26 Jun 2025 10:05:53 +0000 (12:05 +0200)] 
Fix version description in a startup log message

Commit 5cd6c173ff74309ae7fb73b3e4c754f1589eaddc changed the contents of
the PACKAGE_DESCRIPTION preprocessor macro from " (<description>)" to
just "<description>" and missed a spot while adjusting all uses of this
macro in the code base.  Fix formatting for that malformed log message,
emitted upon named startup.

10 months agofix: ci: Ensure that junit.xml is present and non-empty after each system/unit test job
Štěpán Balážik [Thu, 26 Jun 2025 10:04:02 +0000 (10:04 +0000)] 
fix: ci: Ensure that junit.xml is present and non-empty after each system/unit test job

Previously, JUnit files were not generated or were generated empty for various reasons for some system/unit test runs.

Now, the number of tests collected for a MR is up from about 4k to 5.8k in the "Tests" tab of a pipeline.

Additionally, there is a check that ensures that [a somewhat sane](https://gitlab.isc.org/isc-projects/bind9/-/commit/c5a271eb8beb9912501ec564de3bb669ba02507d) `junit.xml` file is generated after every system/unit test job and fails the job otherwise.

Closes #5316

Merge branch '5316-ensure-junit-xml' into 'main'

See merge request isc-projects/bind9!10556

10 months agoClean up the definitions and usages of `&unit_test_*` anchors
Štěpán Balážik [Wed, 4 Jun 2025 13:22:12 +0000 (15:22 +0200)] 
Clean up the definitions and usages of `&unit_test_*` anchors

Remove redundant indirections and overwrites.

10 months agoHoist the junit and artifact handling to the `&unit_test_common` anchor
Štěpán Balážik [Wed, 4 Jun 2025 13:18:29 +0000 (15:18 +0200)] 
Hoist the junit and artifact handling to the `&unit_test_common` anchor

In some cases the report wasn't generated, sometimes it wasn't kept
properly. This unifies the way artifacts are generated and kept.

10 months agoClean up the definitions and usages of `&system_test_*` anchors
Štěpán Balážik [Wed, 4 Jun 2025 13:13:23 +0000 (15:13 +0200)] 
Clean up the definitions and usages of `&system_test_*` anchors

Remove redundant indirections and overwrites.

10 months agoHoist the artifact handling to the `&system_test_common` anchor
Štěpán Balážik [Wed, 4 Jun 2025 13:06:09 +0000 (15:06 +0200)] 
Hoist the artifact handling to the `&system_test_common` anchor

In the past artifacts of different types of system test jobs were
treated differently but this is no longer the case.

10 months agoAdd a check for existence and sanity of the junit.xml file
Štěpán Balážik [Wed, 4 Jun 2025 12:41:35 +0000 (14:41 +0200)] 
Add a check for existence and sanity of the junit.xml file

And use if after system tests are run using pytest.

10 months agofix: nil: Be more explicit about CVE checklist milestones
Petr Špaček [Wed, 25 Jun 2025 15:00:32 +0000 (15:00 +0000)] 
fix: nil: Be more explicit about CVE checklist milestones

Merge branch 'pspacek/cve-checklist-more-explicit-milestones' into 'main'

See merge request isc-projects/bind9!10626

10 months agoBe more explicit about CVE checklist milestones
Petr Špaček [Tue, 24 Jun 2025 13:30:23 +0000 (13:30 +0000)] 
Be more explicit about CVE checklist milestones

10 months agochg: dev: Change QP and qpcache logging from DEBUG(1) to DEBUG(3)
Alessio Podda [Wed, 25 Jun 2025 13:22:59 +0000 (13:22 +0000)] 
chg: dev: Change QP and qpcache logging from DEBUG(1) to DEBUG(3)

Currently qp and qpcache logs are too verbose and enabled at a
level too low compared to how often the logging is useful.

This commit increases the logging level, while keeping it configurable
via a define.

Merge branch 'alessio/higher-level-qp-log' into 'main'

See merge request isc-projects/bind9!10604

10 months agoChange QP and qpcache logging from DEBUG(1) to DEBUG(3)
Alessio Podda [Thu, 19 Jun 2025 12:49:53 +0000 (14:49 +0200)] 
Change QP and qpcache logging from DEBUG(1) to DEBUG(3)

Per pspacek, currently qp and qpcache logs are too verbose and enabled at a
level too low compared to how often the logging is useful.

This commit increases the logging level, while keeping it configurable
via a define.

10 months agochg: doc: Make empty changelog fatal error
Michal Nowak [Wed, 25 Jun 2025 12:06:36 +0000 (14:06 +0200)] 
chg: doc: Make empty changelog fatal error

The prep_doc_mr.py script of the bind9-qa repo needs a way to know that
gitchangelog.py did not produce entries. In the case of release notes,
it dies with "No commits matching given revlist". For changelog entries
it used to warn about "Empty changelog", but did not return non-zero
exit code.

Merge branch 'mnowak/make-empty-changelog-fatal' into 'main'

See merge request isc-projects/bind9!10591

10 months agoMake empty changelog fatal error
Michal Nowak [Wed, 18 Jun 2025 07:52:37 +0000 (09:52 +0200)] 
Make empty changelog fatal error

The prep_doc_mr.py script of the bind9-qa repo needs a way to know that
gitchangelog.py did not produce entries. In the case of release notes,
it dies with "No commits matching given revlist". For changelog entries
it used to warn about "Empty changelog", but did not return non-zero
exit code.

10 months agofix: test: Do not rely on failure in default configuration
Petr Špaček [Wed, 25 Jun 2025 11:35:53 +0000 (11:35 +0000)] 
fix: test: Do not rely on failure in default configuration

Merge branch 'main-systemtest-cpu-hang' into 'main'

See merge request isc-projects/bind9!10631

10 months agoDo not expect fail in cpu test default configuration
Petr Menšík [Tue, 24 Jun 2025 15:12:35 +0000 (17:12 +0200)] 
Do not expect fail in cpu test default configuration

Previous CPU test relied on either missing default named.conf or the
missing permissions to write into its default directory. In short that
default configuration would be unusable with current user. It would hang
indefinitely at cpu test if the named user could write into directory
specified in default configuration.

Change it instead to explicitly try non-existent configuration file.
It will still fail immediately, but will not rely on running user or
presence of file at default configuration file path.

10 months agochg: ci: Add meson support to util/release-tarball-comparison.sh
Michal Nowak [Wed, 25 Jun 2025 10:53:25 +0000 (12:53 +0200)] 
chg: ci: Add meson support to util/release-tarball-comparison.sh

Related: #5379

Merge branch 'mnowak/fix-tarball-comparison-with-meson' into 'main'

See merge request isc-projects/bind9!10620

10 months agoAdd meson support to util/release-tarball-comparison.sh
Michal Nowak [Wed, 18 Jun 2025 12:03:49 +0000 (14:03 +0200)] 
Add meson support to util/release-tarball-comparison.sh

10 months agochg: dev: Use RCU for rad name
Alessio Podda [Wed, 25 Jun 2025 08:30:28 +0000 (08:30 +0000)] 
chg: dev: Use RCU for rad name

The RAD/agent domain is a functionality from RFC 9567 that provides
a suffix for reporting error messages. On every query context reset,
we need to check if a RAD is configured and, if so, copy it.

Since we allow the RAD to be changed by reconfiguring the zone,
this access is currently protected by a mutex, which causes contention.

This commit replaces the mutex with RCU to reduce contention. The
change results in a 3% performance improvement in the 1M delegation
test.

Merge branch 'alessio/rcu-rad' into 'main'

See merge request isc-projects/bind9!10616

10 months agoUse RCU for rad name
Alessio Podda [Mon, 23 Jun 2025 09:13:44 +0000 (11:13 +0200)] 
Use RCU for rad name

The RAD/agent domain is a functionality from RFC 9567 that provides
a suffix for reporting error messages. On every query context reset,
we need to check if a RAD is configured and, if so, copy it.

Since we allow the RAD to be changed by reconfiguring the zone,
this access is currently protected by a mutex, which causes contention.

This commit replaces the mutex with RCU to reduce contention. The
change results in a 3% performance improvement in the 1M delegation
test.

10 months agonew: ci: Update Clang to version 20
Mark Andrews [Wed, 25 Jun 2025 03:22:49 +0000 (13:22 +1000)] 
new: ci: Update Clang to version 20

Merge branch 'mnowak/llvm-20' into 'main'

See merge request isc-projects/bind9!10565

10 months agoIgnore reformat sources with up-to-date clang-format-20
Mark Andrews [Wed, 18 Jun 2025 23:41:30 +0000 (09:41 +1000)] 
Ignore reformat sources with up-to-date clang-format-20

10 months agoUse clang-format-20 to update formatting
Mark Andrews [Wed, 18 Jun 2025 02:39:17 +0000 (12:39 +1000)] 
Use clang-format-20 to update formatting

10 months agoPreserve brackets around string concatenation
Mark Andrews [Wed, 18 Jun 2025 02:49:04 +0000 (12:49 +1000)] 
Preserve brackets around string concatenation

We need disable clang-format here to preserve the brackets around
the string concatenation to prevent -Wstring-concatenation -Werror
breaking the build.

10 months agoPreserve brackets in DNS_SLABHEADER_GETATTR macro
Mark Andrews [Wed, 18 Jun 2025 02:01:31 +0000 (12:01 +1000)] 
Preserve brackets in DNS_SLABHEADER_GETATTR macro

We need to turn off clang-format to preserve the brackets as
'attribute' can be an expression and we need it to be evaluated
first.

Similarly we need the entire result to be evaluated independent of
the adjoining code.

10 months agoUpdate Clang to version 20
Michal Nowak [Mon, 9 Jun 2025 15:48:49 +0000 (17:48 +0200)] 
Update Clang to version 20

10 months agochg: ci: Add newline for changelog CI job
Nicki Křížek [Tue, 24 Jun 2025 15:30:12 +0000 (17:30 +0200)] 
chg: ci: Add newline for changelog CI job

In case the changelog file doesn't have an empty line at the end of the
file, the job may fail with the following error:

WARNING: Bullet list ends without a blank line; unexpected unindent.

This typically happens in MRs targeting the -S edition, as those
changelogs usually don't have an empty newline. This change ensures the
changelog job can pass and verify the title/desc contents even in those
cases.

Merge branch 'nicki/ci-changelog-add-missing-newline' into 'main'

See merge request isc-projects/bind9!10628

10 months agoAdd newline for changelog CI job
Nicki Křížek [Tue, 24 Jun 2025 14:35:56 +0000 (16:35 +0200)] 
Add newline for changelog CI job

In case the changelog file doesn't have an empty line at the end of the
file, the job may fail with the following error:

WARNING: Bullet list ends without a blank line; unexpected unindent.

This typically happens in MRs targeting the -S edition, as those
changelogs usually don't have an empty newline. This change ensures the
changelog job can pass and verify the title/desc contents even in those
cases.

10 months agofix: ci: Fix release CI job with meson
Michal Nowak [Tue, 24 Jun 2025 15:00:48 +0000 (17:00 +0200)] 
fix: ci: Fix release CI job with meson

Closes #5364

Merge branch '5364-fix-release-job-with-meson' into 'main'

See merge request isc-projects/bind9!10621

10 months agoFix release CI job with meson
Michal Nowak [Mon, 23 Jun 2025 19:08:44 +0000 (21:08 +0200)] 
Fix release CI job with meson

Fix documentation paths.

10 months agoCreate "srcid" file as part of release tarball
Michal Nowak [Mon, 23 Jun 2025 19:07:52 +0000 (21:07 +0200)] 
Create "srcid" file as part of release tarball

Change the name of the source ID file to what we used to deliver.

10 months agoBuild epub ARM as part of docs jobs
Michal Nowak [Mon, 23 Jun 2025 19:06:46 +0000 (21:06 +0200)] 
Build epub ARM as part of docs jobs

10 months agochg: test: Make extra_artifacts check optional
Nicki Křížek [Tue, 24 Jun 2025 14:57:27 +0000 (16:57 +0200)] 
chg: test: Make extra_artifacts check optional

There is an ongoing debate about the usefulness of the extra artifacts
check. While it might be useful to detect unexpected behaviour in some
tests, it feels extraneous in many cases. This change provides a middle
ground by making the artifact checking optional. This might be
especially useful for writing new tests, since the author gets to decide
whether the check is useful -- and can utilize it, or can skip it for
sake of brevity.

Merge branch 'nicki/make-extra-artifacts-check-optional' into 'main'

See merge request isc-projects/bind9!10622

10 months agoMake extra_artifacts check optional
Nicki Křížek [Tue, 24 Jun 2025 11:16:33 +0000 (13:16 +0200)] 
Make extra_artifacts check optional

There is an ongoing debate about the usefulness of the extra artifacts
check. While it might be useful to detect unexpected behaviour in some
tests, it feels extraneous in many cases. This change provides a middle
ground by making the artifact checking optional. This might be
especially useful for writing new tests, since the author gets to decide
whether the check is useful -- and can utilize it, or can skip it for
sake of brevity.

10 months agofix: nil: Do not include benchmark data in tarball
Petr Špaček [Tue, 24 Jun 2025 12:39:04 +0000 (12:39 +0000)] 
fix: nil: Do not include benchmark data in tarball

Related: #5379

Merge branch 'pspacek/do-not-distribute-benchmark-data' into 'main'

See merge request isc-projects/bind9!10619

10 months agoDrop empty directory bin/rndc/include/
Michal Nowak [Mon, 23 Jun 2025 15:38:17 +0000 (17:38 +0200)] 
Drop empty directory bin/rndc/include/

It should have been removed as part of
90880522259a389c7e4e29a240370e676b7d2b25.

10 months agoDo not include empty directories cocci and .reuse in tarball
Michal Nowak [Mon, 23 Jun 2025 15:36:40 +0000 (17:36 +0200)] 
Do not include empty directories cocci and .reuse in tarball

10 months agoDo not include cocci/ data in tarball
Michal Nowak [Mon, 23 Jun 2025 15:26:25 +0000 (17:26 +0200)] 
Do not include cocci/ data in tarball

10 months agoDo not include benchmark data in tarball
Petr Špaček [Mon, 23 Jun 2025 15:06:42 +0000 (17:06 +0200)] 
Do not include benchmark data in tarball

names.csv file triples (compressed) tarball size.
meson dist respects .gitattributes so we don't need to add special magic
to meson.build.

10 months agonew: ci: Add Alpine Linux 3.22
Michal Nowak [Tue, 24 Jun 2025 12:02:54 +0000 (14:02 +0200)] 
new: ci: Add Alpine Linux 3.22

Merge branch 'mnowak/alpine-3.22' into 'main'

See merge request isc-projects/bind9!10539

10 months agoAdd Alpine Linux 3.22
Michal Nowak [Mon, 2 Jun 2025 14:31:06 +0000 (16:31 +0200)] 
Add Alpine Linux 3.22

10 months agochg: dev: parse user configuration before exclusive mode
Colin Vidal [Tue, 24 Jun 2025 08:52:11 +0000 (10:52 +0200)] 
chg: dev: parse user configuration before exclusive mode

Previously, `named.conf` was parsed while the server was in exclusive (i.e., single-threaded) mode and unable to answer queries. This could cause an unnecessary delay in query processing when the file was large. We now delay entry into exclusive mode until after the configuration has been parsed, but before it is applied.

Merge branch 'colin/configparse-before-exclusive' into 'main'

See merge request isc-projects/bind9!10418

10 months agowait for reload completed in emptyzones system test
Colin Vidal [Mon, 23 Jun 2025 19:54:43 +0000 (21:54 +0200)] 
wait for reload completed in emptyzones system test

The emptyzones system test ran two consecutive "rndc reload" commands
without waiting for the first one to complete. It used to work because
the commands were serialized, but now an rndc reconfig/reload command is
ignored if another one is already running, so the emptyzones test is
more likely to fail.

Fix this problem by waiting for the log message indicating that all the
zones are loaded before attempting the next reload.

10 months agolog-based test for load/apply config
Colin Vidal [Thu, 5 Jun 2025 16:28:22 +0000 (18:28 +0200)] 
log-based test for load/apply config

Add a new system test which checks named output when starting,
reconfiguring and reloading the server. It checks that the steps where
configuration is loaded, when named enters exclusive mode, and when the
configuration is applied are all logged, and that they occur in the
correct order. This adds a guard/warning to keep the parsing of the
named.conf outside of the exclusive mode.

10 months agoignore reload request if in a reload process
Colin Vidal [Tue, 22 Apr 2025 13:41:39 +0000 (15:41 +0200)] 
ignore reload request if in a reload process

Ignore an 'rndc reload' or 'rndc reconfig' command if received by named
while the server is currently reloading itself.

10 months agoparse user configuration before exclusive mode
Colin Vidal [Tue, 22 Apr 2025 11:46:47 +0000 (13:46 +0200)] 
parse user configuration before exclusive mode

The configuration file was parsed when named was in exclusive
(i.e. single-threaded) mode and unable to answer queries. Because
the parsing is a self-contained operation, it is now done before
named enters exclusive mode.

This reduces the amount of time named can't answer queries when
reloading the configuration when the configuration file is large.
Note that exclusive mode is still used for applying the
configuration changes to the server.

Also, simplify the configuration logic by parsing the built-in
configuration only once at server start time.

10 months agorenamed named_g_config/defaults
Colin Vidal [Tue, 22 Apr 2025 11:46:47 +0000 (13:46 +0200)] 
renamed named_g_config/defaults

For better clarity, the global variables named_g_config and
named_g_defaults have been changed to named_g_defaultconfig
and named_g_defaultoptions.

10 months agofix: ci: Mark ForEachMacros as iterator names
Michal Nowak [Mon, 23 Jun 2025 17:05:09 +0000 (19:05 +0200)] 
fix: ci: Mark ForEachMacros as iterator names

After f10f5572ac7e0520eed4516be52df625ad56c860 spatch started reporting
the following warnings:

    Impossible: How can diff be null and have not Correct in compare_c? Tag1 ("diff token: ( VS (\nFile \"./lib/dns/include/dns/rdatasetiter.h\", line 109, column 32, charpos = 3103\n  around = '(',\n  whole content = #define DNS_RDATASETITER_FOREACH(rds)               \\\nFile \"/tmp/cocci-output-110376-c54da3-rdatasetiter.h\", line 109, column 32, charpos = 3103\n  around = '(',\n  whole content = #define DNS_RDATASETITER_FOREACH(rds)               \\\n")
    Impossible: How can diff be null and have not Correct in compare_c? Tag1 ("diff token: ( VS (\nFile \"./lib/dns/include/dns/dbiterator.h\", line 114, column 30, charpos = 3413\n  around = '(',\n  whole content = #define DNS_DBITERATOR_FOREACH(rds)               \\\nFile \"/tmp/cocci-output-110387-883f2f-dbiterator.h\", line 114, column 30, charpos = 3413\n  around = '(',\n  whole content = #define DNS_DBITERATOR_FOREACH(rds)               \\\n")

See https://github.com/coccinelle/coccinelle/issues/398.

Merge branch 'mnowak/coccinelle-fix-impossible-warning' into 'main'

See merge request isc-projects/bind9!10557

10 months agoMark ForEachMacros as iterator names
Michal Nowak [Wed, 4 Jun 2025 13:03:32 +0000 (15:03 +0200)] 
Mark ForEachMacros as iterator names

After f10f5572ac7e0520eed4516be52df625ad56c860 spatch started reporting
the following warnings:

    Impossible: How can diff be null and have not Correct in compare_c? Tag1 ("diff token: ( VS (\nFile \"./lib/dns/include/dns/rdatasetiter.h\", line 109, column 32, charpos = 3103\n  around = '(',\n  whole content = #define DNS_RDATASETITER_FOREACH(rds)               \\\nFile \"/tmp/cocci-output-110376-c54da3-rdatasetiter.h\", line 109, column 32, charpos = 3103\n  around = '(',\n  whole content = #define DNS_RDATASETITER_FOREACH(rds)               \\\n")
    Impossible: How can diff be null and have not Correct in compare_c? Tag1 ("diff token: ( VS (\nFile \"./lib/dns/include/dns/dbiterator.h\", line 114, column 30, charpos = 3413\n  around = '(',\n  whole content = #define DNS_DBITERATOR_FOREACH(rds)               \\\nFile \"/tmp/cocci-output-110387-883f2f-dbiterator.h\", line 114, column 30, charpos = 3413\n  around = '(',\n  whole content = #define DNS_DBITERATOR_FOREACH(rds)               \\\n")

See https://github.com/coccinelle/coccinelle/issues/398.

10 months agofix: nil: Restore DNSSEC validation by default
Petr Špaček [Mon, 23 Jun 2025 14:02:06 +0000 (14:02 +0000)] 
fix: nil: Restore DNSSEC validation by default

Closes #5380

Merge branch '5380-reenable-dnssec-validation' into 'main'

See merge request isc-projects/bind9!10617

10 months agoRestore DNSSEC validation by default
Petr Špaček [Mon, 23 Jun 2025 11:22:52 +0000 (13:22 +0200)] 
Restore DNSSEC validation by default

Meson generated 'dnssec-validation yes' into the built-in config, but
this config without an explicit trust anchor does not enable validation.
Change default to 'dnssec-validation auto' to use built-in key, as in
the autotools days.

10 months agofix: dev: Fix RTD builds and minor documentation issues
Aydın Mercan [Mon, 23 Jun 2025 11:23:53 +0000 (14:23 +0300)] 
fix: dev: Fix RTD builds and minor documentation issues

Fix some leftover artifacts and information while transitioning BIND to Meson.
Add CI job to verify that pre-generated config grammar files are up-to-date with code.

Merge branch 'aydin/meson-doc-fix' into 'main'

See merge request isc-projects/bind9!10584

10 months agoRemove the configblock sphinx extension
Aydın Mercan [Tue, 17 Jun 2025 08:22:50 +0000 (11:22 +0300)] 
Remove the configblock sphinx extension

The `configblock` extension doesn't work with RHEL 8. However, this
extension isn't needed anymore after the RTD fix and can be safely
removed.

10 months agoSwitch autoconf references to meson in readme
Aydın Mercan [Mon, 16 Jun 2025 08:15:40 +0000 (11:15 +0300)] 
Switch autoconf references to meson in readme

10 months agoRemove build requirements from building arm
Aydın Mercan [Fri, 13 Jun 2025 15:30:34 +0000 (18:30 +0300)] 
Remove build requirements from building arm

The meson build switched to generating the file grammars and using meson
to build the manpages/ARM. This is because meson doesn't work well when
writing files outside the build directory.

However, this has been suboptimal when someone only wants to build the
documentation (like RTD). Sphinx can now be used outside meson like it
was with autoconf.

Grammars are now updated by the developer with CI checking if one is
needed or not, like clang-format.

10 months agoFix build instructions
Aydın Mercan [Fri, 13 Jun 2025 15:30:04 +0000 (18:30 +0300)] 
Fix build instructions

There were leftover artifacts and instructions from the transition.

10 months agofix: nil: Use links() for checking if -latomic is necessary
Michał Kępień [Mon, 23 Jun 2025 08:28:26 +0000 (10:28 +0200)] 
fix: nil: Use links() for checking if -latomic is necessary

Use the links() method instead of compiles() for checking whether
-latomic needs to be added to linker invocations as compiles() does not
perform the linking step and is therefore not appropriate for carrying
out this kind of checks.

See #5379

Merge branch '5379-use-links-for-checking-if-latomic-is-necessary' into 'main'

See merge request isc-projects/bind9!10592

10 months agoRetain Meson >= 0.61 version requirement
Michał Kępień [Mon, 23 Jun 2025 08:23:17 +0000 (10:23 +0200)] 
Retain Meson >= 0.61 version requirement

The add_project_dependencies() method was only added in Meson 0.63.
Replace its only use in meson.build with a corresponding call to the
add_project_link_arguments() method to avoid bumping the minimum
required Meson version beyond the one available in stock Ubuntu 22.04
LTS repositories.

10 months agoUse links() for checking if -latomic is necessary
Michał Kępień [Mon, 23 Jun 2025 08:23:17 +0000 (10:23 +0200)] 
Use links() for checking if -latomic is necessary

Use the links() method instead of compiles() for checking whether
-latomic needs to be added to linker invocations as compiles() does not
perform the linking step and is therefore not appropriate for carrying
out this kind of checks.

10 months agochg: ci: move "stress" test generation script to QA repo
Michał Kępień [Sat, 21 Jun 2025 04:47:19 +0000 (04:47 +0000)] 
chg: ci: move "stress" test generation script to QA repo

Move the util/generate-stress-test-configs.py script from the BIND 9
source repository to the BIND 9 QA repository.  This simplifies the
maintenance of that script by eliminating the need to backport every
change applied to it to multiple branches.

Merge branch 'michal/move-stress-test-generation-script-to-qa-repo' into 'main'

See merge request isc-projects/bind9!10585

10 months agoMove "stress" test generation script to QA repo
Michał Kępień [Sat, 21 Jun 2025 04:43:36 +0000 (06:43 +0200)] 
Move "stress" test generation script to QA repo

Move the util/generate-stress-test-configs.py script from the BIND 9
source repository to the BIND 9 QA repository.  This simplifies the
maintenance of that script by eliminating the need to backport every
change applied to it to multiple branches.

10 months agofix: nil: Install named-compilezone
Michał Kępień [Sat, 21 Jun 2025 04:06:45 +0000 (04:06 +0000)] 
fix: nil: Install named-compilezone

named-compilezone is an alias for named-checkzone: the two tools are
built from the same set of source files, but they behave differently
depending on which executable gets invoked.  With Automake,
named-compilezone was installed as a hard link to named-checkzone using
a custom installation hook; try to keep things simple with Meson by
using the install_symlink() method, which makes named-compilezone a
symbolic link to named-checkzone and is the same thing that is already
used for ddns-confgen/tsig-keygen.

See #5379

Merge branch '5379-install-named-compilezone' into 'main'

See merge request isc-projects/bind9!10595

10 months agoInstall named-compilezone
Michał Kępień [Sat, 21 Jun 2025 03:59:51 +0000 (05:59 +0200)] 
Install named-compilezone

named-compilezone is an alias for named-checkzone: the two tools are
built from the same set of source files, but they behave differently
depending on which executable gets invoked.  With Automake,
named-compilezone was installed as a hard link to named-checkzone using
a custom installation hook; try to keep things simple with Meson by
using the install_symlink() method, which makes named-compilezone a
symbolic link to named-checkzone and is the same thing that is already
used for ddns-confgen/tsig-keygen.

10 months agofix: test: verify-axfr.db gets updated too fast in mirror test
Mark Andrews [Thu, 19 Jun 2025 16:27:13 +0000 (16:27 +0000)] 
fix: test: verify-axfr.db gets updated too fast in mirror test

Add a 1 second wait before updating verify-axfr.db so that the
modification time of the file changes.

Closes #5376

Merge branch '5376-verify-axfr-db-gets-updated-too-fast-in-mirror-test' into 'main'

See merge request isc-projects/bind9!10586

10 months agoverify-axfr.db gets updated too fast in mirror test
Mark Andrews [Tue, 17 Jun 2025 03:01:38 +0000 (13:01 +1000)] 
verify-axfr.db gets updated too fast in mirror test

Add a 1 second wait before updating verify-axfr.db so that the
modification time of the file changes.

10 months agofix: test: Ignore softhsm2 errors when deleting token in keyfromlabel test
Nicki Křížek [Thu, 19 Jun 2025 13:49:52 +0000 (13:49 +0000)] 
fix: test: Ignore softhsm2 errors when deleting token in keyfromlabel test

In some rare cases, the softhsm2 utility reports failure to delete the
token directory, despite the token being found. Subsequent attempts to
delete the token again indicate that the token was deleted.

Ignore this cleanup error, as it doesn't prevent our tests from working
properly. There is also an attempt to delete the token before the test
starts which ensures a clean state before the test is executed, in case
there's actually a leftover token.

Closes #5244

Merge branch '5244-ignore-softhsm2util-delete-token-error' into 'main'

See merge request isc-projects/bind9!10607

10 months agoIgnore softhsm2 errors when deleting token in keyfromlabel test
Nicki Křížek [Thu, 19 Jun 2025 13:09:39 +0000 (15:09 +0200)] 
Ignore softhsm2 errors when deleting token in keyfromlabel test

In some rare cases, the softhsm2 utility reports failure to delete the
token directory, despite the token being found. Subsequent attempts to
delete the token again indicate that the token was deleted.

Ignore this cleanup error, as it doesn't prevent our tests from working
properly. There is also an attempt to delete the token before the test
starts which ensures a clean state before the test is executed, in case
there's actually a leftover token.

10 months agochg: doc: Update Sphinx to 8.2.3
Michal Nowak [Thu, 19 Jun 2025 13:30:37 +0000 (13:30 +0000)] 
chg: doc: Update Sphinx to 8.2.3

Update Sphinx to its current version pulled in by "pip install
sphinx-rtd-theme" run in a fresh Debian "bookworm" container.

Merge branch 'mnowak/update-sphinx-to-8.2.3' into 'main'

See merge request isc-projects/bind9!10603

10 months agoUpdate Sphinx to 8.2.3
Michal Nowak [Thu, 19 Jun 2025 11:25:06 +0000 (13:25 +0200)] 
Update Sphinx to 8.2.3

Update Sphinx to its current version pulled in by "pip install
sphinx-rtd-theme" run in a fresh Debian "bookworm" container.

10 months agochg: test: Improve logging from isctest.run.retry_with_timeout
Nicki Křížek [Thu, 19 Jun 2025 13:05:56 +0000 (13:05 +0000)] 
chg: test: Improve logging from isctest.run.retry_with_timeout

Allow use of exception (and by extension, assert statements) in the
called function in order to extract essential debug information about
the type of failure that was encountered.

In case the called function fails to succeed on the last retry and
raised an exception, log it as error and set it as the assert message to
propagate it through the pytest framework.

Closes #5324

Merge branch '5324-pytest-isctest-run-logging' into 'main'

See merge request isc-projects/bind9!10580

10 months agoUse time.monotonic() for time measumeremts in pytest
Nicki Křížek [Thu, 19 Jun 2025 12:09:57 +0000 (14:09 +0200)] 
Use time.monotonic() for time measumeremts in pytest

For duration measurements, i.e. deadlines and timeouts, it's more
suitable to use monotonic time as it's guaranteed to only go forward,
unlike time.time() which can be affected by local clock settings.

10 months agoMove param to isctest.util
Nicki Křížek [Fri, 6 Jun 2025 08:46:42 +0000 (10:46 +0200)] 
Move param to isctest.util

10 months agoImprove logging from isctest.run.retry_with_timeout
Nicki Křížek [Fri, 6 Jun 2025 13:11:44 +0000 (15:11 +0200)] 
Improve logging from isctest.run.retry_with_timeout

Allow use of exception (and by extension, assert statements) in the
called function in order to extract essential debug information about
the type of failure that was encountered.

In case the called function fails to succeed on the last retry and
raised an exception, log it as error and set it as the assert message to
propagate it through the pytest framework.

10 months agoMerge tag 'v9.21.9'
Michal Nowak [Thu, 19 Jun 2025 10:26:58 +0000 (12:26 +0200)] 
Merge tag 'v9.21.9'

BIND 9.21.9

10 months agofix: usr: Fix purge-keys bug when using views
Matthijs Mekking [Thu, 19 Jun 2025 06:52:05 +0000 (06:52 +0000)] 
fix: usr: Fix purge-keys bug when using views

Previously, when a DNSSEC key was purged by one zone view, other zone views would return an error about missing key files. This has been fixed.

Closes #5315

Merge branch '5315-fix-spurious-some-key-files-are-missing' into 'main'

See merge request isc-projects/bind9!10550

10 months agoFix spurious missing key files log messages
Matthijs Mekking [Thu, 22 May 2025 09:23:48 +0000 (11:23 +0200)] 
Fix spurious missing key files log messages

This happens because old key is purged by one zone view, then the other
is freaking out about it.

Keys that are unused or being purged should not be taken into account
when verifying key files are available.

The keyring is maintained per zone. So in one zone, a key in the
keyring is being purged. The corresponding key file is removed.

The key maintenance is done for the other zone view. The key in that
keyring is not yet set to purge, but its corresponding key file is
removed. This leads to "some keys are missing" log errors.

We should not check the purge variable at this point, but the
current time and purge-keys duration.

This commit fixes this erroneous logic.

10 months agoTest purge-keys with views
Matthijs Mekking [Tue, 3 Jun 2025 12:38:28 +0000 (14:38 +0200)] 
Test purge-keys with views

Create a test scenario where a signed zone is in multiple views and
then a key may be purged. This is a bug case where the key files are
removed by one view and then the other view starts complaining.

10 months agonew: usr: "Add code paths to fully support PRIVATEDNS and PRIVATEOID keys"
Mark Andrews [Thu, 19 Jun 2025 01:01:12 +0000 (01:01 +0000)] 
new: usr: "Add code paths to fully support PRIVATEDNS and PRIVATEOID keys"

Added support for PRIVATEDNS and PRIVATEOID key usage. Added PRIVATEOID
test algorithms using the assigned OIDs for RSASHA256 and RSASHA512.

Added code to support proposed DS digest types that encode the PRIVATEDNS
and PRIVATEOID identifiers at the start of the digest field of the DS record.
This code is disabled by default.

Closes #3240

Merge branch '3240-add-privatedns-and-privateoid-support' into 'main'

See merge request isc-projects/bind9!10341

10 months agoTest extended DS digest type support
Mark Andrews [Wed, 28 May 2025 10:02:48 +0000 (20:02 +1000)] 
Test extended DS digest type support

Add a zone using DS records that embed the private algorithm
identifier in the digest field.  There are 2 DS record for an
unsupported DNSSEC algorithm one of which that doesn't have a
matching DNSKEY.  This zone should validate as insecure as the
validator can establish that both DS records are for unsupported
DNSSEC algorithms.

10 months agoAdd tests using PRIVATEOID algorithms
Mark Andrews [Fri, 16 May 2025 05:50:53 +0000 (15:50 +1000)] 
Add tests using PRIVATEOID algorithms

There are 4 tests:

1) a zone using a known private OID.  Validations should succeed
and return AD=1.

2) a zone using an unknown private OID.  Validation should succeed
and return AD=0 as the DS to DNSKEY has provably unsupported
algorithm.

3) a zone using a known private OID and an extra DS record. Validation
should succeed as there is DS to DNSKEY with a known algorithm
linkage.

4) a zone using an unknown private OID and an extra DS record.
Validation should fail as only one of the DS records can be matched
to a provable unknown algorithm.  The algorithm of the second DS
is indeterminate.

10 months agoAdd example PRIVATEDNS algorithm identifiers to DS
Mark Andrews [Wed, 14 May 2025 22:47:39 +0000 (08:47 +1000)] 
Add example PRIVATEDNS algorithm identifiers to DS

10 months agoAdd PRIVATEOIDs for RSASHA256 and RSASHA512
Mark Andrews [Mon, 31 Mar 2025 13:12:52 +0000 (00:12 +1100)] 
Add PRIVATEOIDs for RSASHA256 and RSASHA512

Use the existing RSASHA256 and RSASHA512 implementation to provide
working PRIVATEOID example implementations.  We are using the OID
values normally associated with RSASHA256 (1.2.840.113549.1.1.11)
and RSASHA512 (1.2.840.113549.1.1.13).

10 months agoFuture: DS private algorithm support
Mark Andrews [Wed, 21 May 2025 00:13:04 +0000 (10:13 +1000)] 
Future: DS private algorithm support

Add support for proposed DS digest types that encode the private
algorithm identifier at the start of the DS digest as is done for
DNSKEY and RRSIG.  This allows a DS record to identify the specific
DNSSEC algorithm, rather than a set of algorithms, when the algorithm
field is set to PRIVATEDNS or PRIVATEOID.

10 months agoSupport PRIVATEOID/PRIVATEDNS in zone.c
Mark Andrews [Tue, 8 Apr 2025 18:26:55 +0000 (13:26 -0500)] 
Support PRIVATEOID/PRIVATEDNS in zone.c

- dns_zone_cdscheck() has been extended to extract the key algorithms
  from DNSKEY data when the CDS algorithm is PRIVATEOID or PRIVATEDNS.

- dns_zone_signwithkey() has been extended to support signing with
  PRIVATEDNS and PRIVATEOID algorithms.  The signing record (type 65534)
  added at the zone apex to indicate the current state of automatic zone
  signing can now contain an additional two-byte field for the DST
  algorithm value, when the DNS secalg value isn't enough information.

10 months agoSupport PRIVATEOID/PRIVATEDNS in the validator
Mark Andrews [Fri, 28 Mar 2025 03:08:06 +0000 (14:08 +1100)] 
Support PRIVATEOID/PRIVATEDNS in the validator

DS records need to checked against the DNSKEY RRset to find
the private algorithm they correspond to.

10 months agoSupport PRIVATEOID/PRIVATEDNS in the resolver
Mark Andrews [Wed, 16 Apr 2025 01:31:41 +0000 (11:31 +1000)] 
Support PRIVATEOID/PRIVATEDNS in the resolver

dns_resolver_algorithm_supported() has been extended so in addition to
an algorithm number, it can also take a pointer to an RRSIG signature
field in which key information is encoded.

10 months agoExtend the trust anchor supported algorithm checks
Mark Andrews [Fri, 16 May 2025 04:46:22 +0000 (14:46 +1000)] 
Extend the trust anchor supported algorithm checks

When a DNSKEY based trust anchor is used extract the algorithm from
the key's data to determine if the private algorithm is supported.

10 months agoUse DST algorithm values instead of dns_secalg where needed
Mark Andrews [Mon, 31 Mar 2025 13:12:52 +0000 (00:12 +1100)] 
Use DST algorithm values instead of dns_secalg where needed

DST algorithm and DNSSEC algorithm values are not necessarily the same
anymore: if the DNSSEC algorithm value is PRIVATEOID or PRIVATEDNS, then
the DST algorithm will be mapped to something else. The conversion is
now done correctly where necessary.

10 months agoSupport for DST_ALG_PRIVATEDNS and DST_ALG_PRIVATEOID
Mark Andrews [Wed, 16 Apr 2025 01:31:41 +0000 (11:31 +1000)] 
Support for DST_ALG_PRIVATEDNS and DST_ALG_PRIVATEOID

The algorithm values PRIVATEDNS and PRIVATEOID are placeholders,
signifying that the actual algorithm identifier is encoded into the
key data. Keys using this mechanism are now supported.

- The algorithm values PRIVATEDNS and PRIVATEOID cannot be used to
  build a key file name; dst_key_buildfilename() will assert if
  they are used.

- The DST key values for private algorithms are higher than 255.
  Since DST_ALG_MAXALG now exceeds 256, algorithm arrays that were
  previously hardcoded to size 256 have been resized.

- New mnemonic/text conversion functions have been added.
  dst_algorithm_{fromtext,totext,format} can handle algorithm
  identifiers encoded in PRIVATEDNS and PRIVATEOID keys, as well
  as the traditional algorithm identifiers. (Note: The existing
  dns_secalg_{fromtext,totext,format} functions are similar, but
  do *not* support PRIVATEDNS and PRIVATEOID. In most cases, the
  new functions have taken the place of the old ones, but in a few
  cases the old version is still appropriate.)

- dns_private{oid,dns}_{fromtext,totext,format} converts between
  DST algorithm values and the mnemonic strings for algorithms
  implemented using PRIVATEDNS or PRIVATEOID. (E.g., "RSASHA256OID").

- dst_algorithm_tosecalg() returns the DNSSEC algorithm identifier
  that applies for a given DST algorithm.  For PRIVATEDNS- or
  PRIVATEOID- based algorithms, the result will be PRIVATEDNS or
  PRIVATEOID, respectively.

- dst_algorithm_fromprivatedns() and dst_algorithm_fromprivateoid()
  return the DST algorithm identifier for an encoded algorithm in
  wire format, represented as in DNS name or an object identifier,
  respectively.

- dst_algorithm_fromdata() is a front-end for the above; it extracts
  the private algorithm identifier encoded at the begining of a
  block of key or signature data, and returns the matching DST
  algorithm number.

- dst_key_fromdns() and dst_key_frombuffer() now work with keys
  that have PRIVATEDNS and PRIVATEOID algorithm identifiers at the
  beginning.

10 months agoMake system test changes needed for PRIVATEOID/PRIVATEDNS
Mark Andrews [Wed, 23 Apr 2025 04:52:23 +0000 (14:52 +1000)] 
Make system test changes needed for PRIVATEOID/PRIVATEDNS

- When the algorithm value for a DNSSEC key is set to PRIVATEOID
  or PRIVATEDNS, that's a placeholder value indicating that the
  real algorithm identifier is encoded into the key or signature
  data.  That means the DNSKEY algorithm value and the DST algorithm
  value may not be identical, so we must now add environment variables
  DEFAULT_ALGORITHM_DST_NUMBER, ALTERNATIVE_ALGORITHM_DST_NUMBER
  and DISABLED_ALGORITHM_DST_NUMBER to the test suite, with support
  for mapping from DST algorithm value to PRIVATEDNS or PRIVATEOID.

- Some test cases use RRSIGs that have been modified to force
  validation to fail. When making those modifications, we now
  preserve the first part of the signature, so that PRIVATEDNS and
  PRIVATEOID algorithm identifier values will still work.  (This
  assumes that the identifiers are short and fit into the first
  base64 block.)

10 months agoCheck the DS trust anchor algorithm is supported
Mark Andrews [Fri, 16 May 2025 06:14:14 +0000 (16:14 +1000)] 
Check the DS trust anchor algorithm is supported

This make DS based trust anchors consistent with DNSKEY based
trust anchors.

10 months agoAdd DS digest type code points SM3 and GOST-2012
Mark Andrews [Wed, 28 May 2025 01:06:41 +0000 (11:06 +1000)] 
Add DS digest type code points SM3 and GOST-2012

Provide mapping between mnemonic and value.

10 months agoCheck that the specified DS digest is supported
Mark Andrews [Wed, 28 May 2025 03:59:04 +0000 (13:59 +1000)] 
Check that the specified DS digest is supported

dnssec-dsfromkey and dnssec-cds failed to properly check if the
specified DS digest type is supported or not.

10 months agochg: test: Rewrite kasp system test to pytest (6)
Matthijs Mekking [Wed, 18 Jun 2025 12:20:05 +0000 (12:20 +0000)] 
chg: test: Rewrite kasp system test to pytest (6)

These test cases involve a reconfig, dnssec policy changes.

Merge branch 'matthijs-pytest-rewrite-kasp-system-test-6' into 'main'

See merge request isc-projects/bind9!10295

10 months agoRemove kasp shell script remainders
Matthijs Mekking [Wed, 19 Mar 2025 15:32:12 +0000 (16:32 +0100)] 
Remove kasp shell script remainders

Now that all tests have been converted, we can remove 'kasp/tests.sh'
and 'kasp/tests_sh_kasp.py'.

10 months agoConvert algorithm rollover tests to pytest
Matthijs Mekking [Wed, 19 Mar 2025 15:28:33 +0000 (16:28 +0100)] 
Convert algorithm rollover tests to pytest

Roll the algorithm rollover test cases over to the rollover directory
and rewrite using pytest.

10 months agoConvert going insecure kasp test to pytest
Matthijs Mekking [Wed, 19 Mar 2025 13:37:28 +0000 (14:37 +0100)] 
Convert going insecure kasp test to pytest

When going insecure, we publish CDS and CDNSKEY DELETE records. Update
the check_apex function to test this.

Also, skip some tests in the 'check_rollover_step()' function. If
we change the DNSSEC Policy, keys that no longer match the policy will
be retired. When this exactly happens is hard to determine, as it
happens on the reconfigure. So for these tests, we skip the key timing
metadata checks.

Also, the zone becomes unsigned, so don't call 'check_zone_is_signed'
in those cases.

10 months agoConvert policy changes tests to pytest
Matthijs Mekking [Wed, 19 Mar 2025 10:35:18 +0000 (11:35 +0100)] 
Convert policy changes tests to pytest

These test cases involve a reconfiguration. The first one is a zone
that changes from dynamic to inline-signing. The others are tests that
key lifetimes are updated correctly after changing them.