2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-31 14:35:26 +00:00
Commit Graph

39533 Commits

Author SHA1 Message Date
Ondřej Surý
8ecae23d50 Merge branch 'each-split-rbtdb' into 'main'
Split up rbtdb.c

See merge request isc-projects/bind9!7873
2023-07-17 12:50:50 +00:00
Evan Hunt
5a85135c1e split out cache-specific functions
move cache-specific functions from rbtdb.c to rbt-cachedb.c.
2023-07-17 14:50:25 +02:00
Evan Hunt
9a1a1293c0 split out zone-specific functions
move zone-specific functions from rbtdb.c to rbt-zonedb.c.
2023-07-17 14:50:25 +02:00
Evan Hunt
445ef1d033 move slab rdataset implementation to rdataslab.c
ultimately we want the slab implementation of dns_rdataset to
be usable by more database implementaions than just rbtdb. this
commit moves rdataset_methods to rdataslab.c, renamed
dns_rdataslab_rdatasetmethods.

new database methods have been added: locknode, unlocknode,
addglue, expiredata, and deletedata, allowing external functions to
perform functions that previously required internal access to the
database implementation.

database and heap pointers are now stored in the dns_slabheader object
so that header is the only thing that needs to be passed to some
functions; this will simplify moving functions that process slabheaders
out of rbtdb.c so they can be used by other database implementations.
2023-07-17 14:50:25 +02:00
Evan Hunt
17f85f6c93 move prototypes for common functions to rbtdb_p.h
rename the existing rbtdb.h to rbtdb_p.h, and start putting
macros and declarations of dns__rbtdb functions into it.
2023-07-17 14:50:25 +02:00
Evan Hunt
4db150437e clean up unused dns_db methods
to reduce the amount of common code that will need to be shared
between the separated cache and zone database implementations,
clean up unused portions of dns_db.

the methods dns_db_dump(), dns_db_isdnssec(), dns_db_printnode(),
dns_db_resigned(), dns_db_expirenode() and dns_db_overmem() were
either never called or were only implemented as nonoperational stub
functions: they have now been removed.

dns_db_nodefullname() was only used in one place, which turned out
to be unnecessary, so it has also been removed.

dns_db_ispersistent() and dns_db_transfernode() are used, but only
the default implementation in db.c was ever actually called. since
they were never overridden by database methods, there's no need to
retain methods for them.

in rbtdb.c, beginload() and endload() methods are no longer defined for
the cache database, because that was never used (except in a few unit
tests which can easily be modified to use the zone implementation
instead).  issecure() is also no longer defined for the cache database,
as the cache is always insecure and the default implementation of
dns_db_issecure() returns false.

for similar reasons, hashsize() is no longer defined for zone databases.

implementation functions that are shared between zone and cache are now
prepended with 'dns__rbtdb_' so they can become nonstatic.

serve_stale_ttl is now a common member of dns_db.
2023-07-17 14:50:25 +02:00
Evan Hunt
1c21e50953 clean up rbtdb.c
in preparation for splitting up rbtdb.c, rename some types so they
can be defined in dns/types.h instead of only locally. these include:

- struct noqname, which is used to hold no-qname and closest-encloser
  proofs, and is now named dns_proof_t;
- rbtdb_rdatatype_t, which is used to hold a pair of rdatatypes and
  is now called dns_typepair_t and defined in rdatatype.h;
- rbtdb_serial_t, which is now just a uint32_t;
- rdatasetheader_t and rdatasetheaderlist_t, now called
  dns_slabheader_t and dns_slabheaderlist_t;
- rbtdb_version_t, now called dns_rbtdb_version_t.

the helper functions header_from_raw() and raw_from_header() are
renamed dns_slabheader_fromrdataset() and dns_slabheader_raw().

also made further style changes:
- fixing uninitialized pointer variables throughout rbtdb.c;
- switching some initializations to struct literals;
- renaming some functions and struct members more descriptively;
- replacing dns_db_secure_t with a simple bool since it no longer needs
  to be tri-valued.
2023-07-17 14:50:25 +02:00
Evan Hunt
d25d0af7f5 remove unused DNS_DBFIND options
the DNS_DBFIND_VALIDATEGLUE and DNS_DBFIND_FORCENSEC options
were never set, so the code implementing them (which in the case
of _VALIDATEGLUE appears to have been quite outdated anyway) was
never reached. they have now been removed.
2023-07-17 14:50:25 +02:00
Tony Finch
856a6e4afb Give the rdataset->privateN fields more helpful names
BIND's rdataset structure is a view of some DNS records. It is
polymorphic, so the details of how the records are stored can vary.
For instance, the records can be held in an rdatalist, or in an
rdataslab in the rbtdb.

The dns_rdataset structure previously had a number of fields called
`private1` up to `private7`, which were used by the various rdataset
implementations. It was not at all clear what these fields were for,
without reading the code and working it out from context.

This change makes the rdataset inheritance hierarchy more clear. The
polymorphic part of a `struct dns_rdataset` is now a union of structs,
each of which is named for the class of implementation using it. The
fields of these structs replace the old `privateN` fields. (Note: the
term "inheritance hierarchy" refers to the fact that the builtin and
SDLZ implementations are based on and inherit from the rdatalist
implementation, which in turn inherits from the generic rdataset.

Most of this change is mechanical, but there are a few extras.

In keynode.c there were a number of REQUIRE()ments that were not
necessary: they had already been checked by the rdataset method
dispatch code. On the other hand, In ncache.c there was a public
function which needed to REQUIRE() that an rdataset was valid.

I have removed lots of "reset iterator state" comments, because it
should now be clear from `target->iter = NULL` where before
`target->private5 = NULL` could have been doing anything.

Initialization is a bit neater in a few places, using C structure
literals where appropriate.

The pointer arithmetic for translating between an rdataslab header and
its raw contents is now fractionally safer.
2023-07-17 14:50:25 +02:00
Evan Hunt
9330fada3a refactor the slab rdataset implementation
- use externally accessible functions for attachnode/detachnode
  so these functions can be moved outside rbtdb.c
- simplify and tidy up some other functions
- use struct initializers when appropriate
- remove the flag RDATASET_ATTR_RETAIN; it was never being set
- renamed the rdataset attributes to
- remove the 'slab_methods' rdataset implementation. this was
  a reduced set of slab rdataset methods, omitting 'setownercase()'
  and 'getownercase()'. we can get the identical result by using
  an DNS_RDATASETATTR_KEEPCASE attribute in rdatasets that
  shouldn't have their case modified, and then we only need one
  set of rdataset methods.
2023-07-17 14:50:25 +02:00
Tom Krizek
83a33c3555 Merge branch 'tkrizek/tkey-cleanup' into 'main'
Remove tkey test remnants

See merge request isc-projects/bind9!8102
2023-07-17 09:07:28 +00:00
Tom Krizek
87e95b2348 Remove tkey test remnants
The tkey test was removed in bd4576b3ce
and the prereq.sh bit was accidentally added in
175d0c6d85
2023-07-17 10:40:07 +02:00
Tom Krizek
02b3cb671a Merge branch 'tkrizek/run-tests-with-set-e' into 'main'
Run system tests with set -e

See merge request isc-projects/bind9!8052
2023-07-17 08:19:01 +00:00
Tom Krizek
e5f2addcaa Check return codes from commands in inline test
To improve the compatibility of the inline test with the `set -e`
option, ensure all commands which are expected to pass are explicitly
checked for return code and non-zero return codes are handled.
2023-07-14 17:10:58 +02:00
Tom Krizek
ccc9b87f59 Ignore test cleanup commits in git blame 2023-07-14 15:51:07 +02:00
Tom Krizek
05baf7206b Use $(...) notation for subshells in system tests
The changes were mostly done with sed:

find . -name '*.sh' | xargs sed -i 's/`\([^`]*\)`/$(\1)/g'

There have been a few manual changes where the regex wasn't sufficient
(e.g. backslashes inside the `...`) or wrong (`...` referring to docs or
in comments).
2023-07-14 15:49:18 +02:00
Tom Krizek
d203681a75 Handle non-zero return codes in rootkeysentinel tests 2023-07-14 15:49:18 +02:00
Tom Krizek
2b8e5e1155 Handle non-zero return codes in resolver test 2023-07-14 15:49:17 +02:00
Tom Krizek
cde02fdb6a Handle non-zero return codes in statschannel test 2023-07-14 15:49:17 +02:00
Tom Krizek
4a87b44196 Handle non-zero return codes in checkconf test 2023-07-14 15:49:17 +02:00
Tom Krizek
9d383dce40 Handle non-zero return codes in dnstap test 2023-07-14 15:49:17 +02:00
Tom Krizek
ede8ea889b Handle non-zero return codes in kasp test 2023-07-14 15:49:17 +02:00
Tom Krizek
4e8802a22d Handle non-zero return codes in serve-stale test 2023-07-14 15:49:17 +02:00
Tom Krizek
fae6808b9c Handle non-zero return codes in doth test 2023-07-14 15:49:17 +02:00
Tom Krizek
1e64749ed3 Handle non-zero return codes in acl test 2023-07-14 15:49:17 +02:00
Tom Krizek
3a36ff506d Handle non-zero return codes in statistics test 2023-07-14 15:49:16 +02:00
Tom Krizek
9fdf537f52 Handle non-zero return codes in rrsetorder test 2023-07-14 15:49:16 +02:00
Tom Krizek
45fc4cc465 Handle non-zero return codes in redirect test 2023-07-14 15:49:16 +02:00
Tom Krizek
c50a9e158d Handle non-zero return codes in rndc test 2023-07-14 15:49:16 +02:00
Tom Krizek
36d74bd2e3 Handle non-zero return codes in inline test 2023-07-14 15:49:16 +02:00
Tom Krizek
f3310e1731 Handle non-zero return codes unknown test 2023-07-14 15:49:16 +02:00
Tom Krizek
86765ad1d3 Handle non-zero return codes in nsupdate test 2023-07-14 15:49:16 +02:00
Tom Krizek
e5933f65d6 Handle non-zero return codes in zonechecks test 2023-07-14 15:49:16 +02:00
Tom Krizek
e8c61f8da4 Handle non-zero return codes in wildcard test 2023-07-14 15:49:16 +02:00
Tom Krizek
69e8876966 Handle non-zero return codes in zero test 2023-07-14 15:49:15 +02:00
Tom Krizek
3ce200ead8 Handle non-zero return codes in legacy test 2023-07-14 15:49:15 +02:00
Tom Krizek
2823d0b469 Handle non-zero return codes in forward test 2023-07-14 15:49:15 +02:00
Tom Krizek
855f5b143a Handle non-zero return codes in upforwd test 2023-07-14 15:49:15 +02:00
Tom Krizek
146cb978c5 Handle non-zero return codes in addzone test 2023-07-14 15:49:15 +02:00
Tom Krizek
247b608f62 Handle non-zero return codes in rpzrecurse test 2023-07-14 15:49:15 +02:00
Tom Krizek
1d5caafa9e Handle non-zero return codes in rpz test 2023-07-14 15:49:15 +02:00
Tom Krizek
837c190d9e Make $? compatible with set -e in system tests
Ensure handling of return code from previous command doesn't cause the
script to halt if that code is non-zero when running with `set -e`.
2023-07-14 15:49:15 +02:00
Tom Krizek
1436025e20 Use arithmetic expansion in system tests (followup)
These are manual edits in addition of the automated changes from the
previous commit.
2023-07-14 15:49:15 +02:00
Tom Krizek
4d42bdc245 Use arithmetic expansion in system tests
Change the way arithmetic operations are performed in system test shell
scripts from using `expr` to `$(())`. This ensures that updating the
variable won't end up with a non-zero exit code, which would case the
script to exit prematurely when `set -e` is in effect.

The following replacements were performed using sed in all text files
(git grep -Il '' | xargs sed -i):

s/status=`expr $status + $ret`/status=$((status + ret))/g
s/n=`expr $n + 1`/n=$((n + 1))/g
s/t=`expr $t + 1`/t=$((t + 1))/g
s/status=`expr $status + 1`/status=$((status + 1))/g
s/try=`expr $try + 1`/try=$((try + 1))/g
2023-07-14 15:49:13 +02:00
Tom Krizek
01bc805f89 Run system tests with set -e
Ensure all shell system tests are executed with the errexit option set.
This prevents unchecked return codes from commands in the test from
interfering with the tests, since any failures need to be handled
explicitly.
2023-07-14 15:07:25 +02:00
Michal Nowak
723cb07d58 Merge branch 'mnowak/detect-core-dumps-after-server-failed-to-stop' into 'main'
Detect core dumps after BIND failed to stop cleanly

See merge request isc-projects/bind9!8096
2023-07-13 13:12:37 +00:00
Michal Nowak
89c77daddb Detect core dumps after BIND failed to stop cleanly
With the pytest runner, when BIND crashed during test runtime, the
get_core_dumps.sh script hasn't been run, and core dumps were not
detected.
2023-07-13 15:09:55 +02:00
Mark Andrews
dd3c7e4ecb Merge branch '4194-extend-dns-cookie-support' into 'main'
Resolve "Extend DNS COOKIE support"

Closes #4194

See merge request isc-projects/bind9!8086
2023-07-13 02:31:02 +00:00
Mark Andrews
cf923e4ad3 Add release note for [GL #4194] 2023-07-13 01:58:53 +00:00
Mark Andrews
c2dcc2602d Add CHANGES note for [GL #4194] 2023-07-13 01:58:53 +00:00