]> git.ipfire.org Git - thirdparty/bind9.git/commit
make the qpzone database loadable
authorEvan Hunt <each@isc.org>
Sat, 4 Nov 2023 14:40:49 +0000 (15:40 +0100)
committerEvan Hunt <each@isc.org>
Fri, 8 Mar 2024 23:36:49 +0000 (15:36 -0800)
commit628fa8a3d6efe8cdd355bd90411a48894cc3f248
tree410a6b3012a4b359af519a8ae6552da9206b0081
parentd8292991fe85f922822800c3e02f07ad237d47c5
make the qpzone database loadable

add database API methods needed for loading rdatasets into memory
(currentversion, beginload, endload), plus the methods used by
zone_postload() for zone consistency checks (getoriginnode, find,
findnode, findrdataset, attachnode, detachnode, deletedata).

the QP trie doesn't support the find callback mechanism available
in dns_rbt_findnode() which allows examination of intermediate nodes
while searching, so the detection of wildcard and delegation nodes
is now done by scanning QP chains after calling dns_qp_lookup().

Note that the lookup in previous_closest_nsec() cannot return
ISC_R_NOTFOUND. In RBTDB, we checked for this return value and
ovewrote the result with ISC_R_NOMORE if it occurred. In the
qpzone implementation, we insist that this return value cannot happen.
dns_qp_lookup() would only return ISC_R_NOTFOUND if we asked for a
name outside the zone's authoritative domain, and we never do that
when looking up a predecessor NSEC record.

named-checkzone is now able to load a zone and check it for errors,
but cannot dump it.
bin/tests/system/checkzone/zones/ns-address-below-dname.db
lib/dns/qpzone.c
lib/dns/rbt-cachedb.c