mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 22:15:20 +00:00
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.
This commit is contained in:
@@ -18,5 +18,5 @@ example.com. SOA marka.isc.org. a.root.servers.nil. (
|
||||
600 ; minimum
|
||||
)
|
||||
example.com. DNAME example.net.
|
||||
example.com. NS ns.example.com
|
||||
example.com. NS ns.example.com.
|
||||
ns.example.com. A 192.168.0.2
|
||||
|
2932
lib/dns/qpzone.c
2932
lib/dns/qpzone.c
File diff suppressed because it is too large
Load Diff
@@ -1546,7 +1546,7 @@ expiredata(dns_db_t *db, dns_dbnode_t *node, void *data) {
|
||||
|
||||
NODE_WRLOCK(&rbtdb->node_locks[rbtnode->locknum].lock, &nlocktype);
|
||||
dns__cacherbt_expireheader(header, &tlocktype,
|
||||
dns_expire_flush DNS__DB_FLARG_PASS);
|
||||
dns_expire_flush DNS__DB_FILELINE);
|
||||
NODE_UNLOCK(&rbtdb->node_locks[rbtnode->locknum].lock, &nlocktype);
|
||||
INSIST(tlocktype == isc_rwlocktype_none);
|
||||
}
|
||||
|
Reference in New Issue
Block a user