chg: minor cleanup in qpcache
when the QP cache was adapted from the RBTDB, some variable names weren't changed, and still incorrectly reference the RBT. Merge branch 'each-qpcache-nits' into 'main' See merge request isc-projects/bind9!9515
This commit is contained in:
@@ -48,7 +48,6 @@
|
|||||||
#include <dns/masterdump.h>
|
#include <dns/masterdump.h>
|
||||||
#include <dns/nsec.h>
|
#include <dns/nsec.h>
|
||||||
#include <dns/qp.h>
|
#include <dns/qp.h>
|
||||||
#include <dns/rbt.h>
|
|
||||||
#include <dns/rdata.h>
|
#include <dns/rdata.h>
|
||||||
#include <dns/rdataset.h>
|
#include <dns/rdataset.h>
|
||||||
#include <dns/rdatasetiter.h>
|
#include <dns/rdatasetiter.h>
|
||||||
@@ -112,11 +111,10 @@
|
|||||||
#define ACTIVE(header, now) \
|
#define ACTIVE(header, now) \
|
||||||
(((header)->ttl > (now)) || ((header)->ttl == (now) && ZEROTTL(header)))
|
(((header)->ttl > (now)) || ((header)->ttl == (now) && ZEROTTL(header)))
|
||||||
|
|
||||||
#define EXPIREDOK(rbtiterator) \
|
#define EXPIREDOK(iterator) \
|
||||||
(((rbtiterator)->common.options & DNS_DB_EXPIREDOK) != 0)
|
(((iterator)->common.options & DNS_DB_EXPIREDOK) != 0)
|
||||||
|
|
||||||
#define STALEOK(rbtiterator) \
|
#define STALEOK(iterator) (((iterator)->common.options & DNS_DB_STALEOK) != 0)
|
||||||
(((rbtiterator)->common.options & DNS_DB_STALEOK) != 0)
|
|
||||||
|
|
||||||
#define KEEPSTALE(qpdb) ((qpdb)->common.serve_stale_ttl > 0)
|
#define KEEPSTALE(qpdb) ((qpdb)->common.serve_stale_ttl > 0)
|
||||||
|
|
||||||
@@ -159,8 +157,7 @@
|
|||||||
#define DNS_QPDB_EXPIRE_TTL_COUNT 10
|
#define DNS_QPDB_EXPIRE_TTL_COUNT 10
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
* This is the structure that is used for each node in the qp trie of
|
* This is the structure that is used for each node in the qp trie of trees.
|
||||||
* trees. For now it is a copy of the dns_rbtnode structure.
|
|
||||||
*/
|
*/
|
||||||
typedef struct qpcnode qpcnode_t;
|
typedef struct qpcnode qpcnode_t;
|
||||||
struct qpcnode {
|
struct qpcnode {
|
||||||
@@ -3766,20 +3763,19 @@ dns__qpcache_create(isc_mem_t *mctx, const dns_name_t *origin,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
rdatasetiter_destroy(dns_rdatasetiter_t **iteratorp DNS__DB_FLARG) {
|
rdatasetiter_destroy(dns_rdatasetiter_t **iteratorp DNS__DB_FLARG) {
|
||||||
qpc_rditer_t *rbtiterator = NULL;
|
qpc_rditer_t *iterator = NULL;
|
||||||
|
|
||||||
rbtiterator = (qpc_rditer_t *)(*iteratorp);
|
iterator = (qpc_rditer_t *)(*iteratorp);
|
||||||
|
|
||||||
dns__db_detachnode(rbtiterator->common.db,
|
dns__db_detachnode(iterator->common.db,
|
||||||
&rbtiterator->common.node DNS__DB_FLARG_PASS);
|
&iterator->common.node DNS__DB_FLARG_PASS);
|
||||||
isc_mem_put(rbtiterator->common.db->mctx, rbtiterator,
|
isc_mem_put(iterator->common.db->mctx, iterator, sizeof(*iterator));
|
||||||
sizeof(*rbtiterator));
|
|
||||||
|
|
||||||
*iteratorp = NULL;
|
*iteratorp = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
iterator_active(qpcache_t *qpdb, qpc_rditer_t *rbtiterator,
|
iterator_active(qpcache_t *qpdb, qpc_rditer_t *iterator,
|
||||||
dns_slabheader_t *header) {
|
dns_slabheader_t *header) {
|
||||||
dns_ttl_t stale_ttl = header->ttl + STALE_TTL(header, qpdb);
|
dns_ttl_t stale_ttl = header->ttl + STALE_TTL(header, qpdb);
|
||||||
|
|
||||||
@@ -3793,7 +3789,7 @@ iterator_active(qpcache_t *qpdb, qpc_rditer_t *rbtiterator,
|
|||||||
/*
|
/*
|
||||||
* If this header is still active then return it.
|
* If this header is still active then return it.
|
||||||
*/
|
*/
|
||||||
if (ACTIVE(header, rbtiterator->common.now)) {
|
if (ACTIVE(header, iterator->common.now)) {
|
||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3801,17 +3797,17 @@ iterator_active(qpcache_t *qpdb, qpc_rditer_t *rbtiterator,
|
|||||||
* If we are not returning stale records or the rdataset is
|
* If we are not returning stale records or the rdataset is
|
||||||
* too old don't return it.
|
* too old don't return it.
|
||||||
*/
|
*/
|
||||||
if (!STALEOK(rbtiterator) || (rbtiterator->common.now > stale_ttl)) {
|
if (!STALEOK(iterator) || (iterator->common.now > stale_ttl)) {
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
rdatasetiter_first(dns_rdatasetiter_t *iterator DNS__DB_FLARG) {
|
rdatasetiter_first(dns_rdatasetiter_t *it DNS__DB_FLARG) {
|
||||||
qpc_rditer_t *rbtiterator = (qpc_rditer_t *)iterator;
|
qpc_rditer_t *iterator = (qpc_rditer_t *)it;
|
||||||
qpcache_t *qpdb = (qpcache_t *)(rbtiterator->common.db);
|
qpcache_t *qpdb = (qpcache_t *)(iterator->common.db);
|
||||||
qpcnode_t *qpnode = rbtiterator->common.node;
|
qpcnode_t *qpnode = iterator->common.node;
|
||||||
dns_slabheader_t *header = NULL, *top_next = NULL;
|
dns_slabheader_t *header = NULL, *top_next = NULL;
|
||||||
isc_rwlocktype_t nlocktype = isc_rwlocktype_none;
|
isc_rwlocktype_t nlocktype = isc_rwlocktype_none;
|
||||||
|
|
||||||
@@ -3820,14 +3816,13 @@ rdatasetiter_first(dns_rdatasetiter_t *iterator DNS__DB_FLARG) {
|
|||||||
for (header = qpnode->data; header != NULL; header = top_next) {
|
for (header = qpnode->data; header != NULL; header = top_next) {
|
||||||
top_next = header->next;
|
top_next = header->next;
|
||||||
do {
|
do {
|
||||||
if (EXPIREDOK(rbtiterator)) {
|
if (EXPIREDOK(iterator)) {
|
||||||
if (!NONEXISTENT(header)) {
|
if (!NONEXISTENT(header)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
header = header->down;
|
header = header->down;
|
||||||
} else if (!IGNORE(header)) {
|
} else if (!IGNORE(header)) {
|
||||||
if (!iterator_active(qpdb, rbtiterator, header))
|
if (!iterator_active(qpdb, iterator, header)) {
|
||||||
{
|
|
||||||
header = NULL;
|
header = NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -3842,7 +3837,7 @@ rdatasetiter_first(dns_rdatasetiter_t *iterator DNS__DB_FLARG) {
|
|||||||
|
|
||||||
NODE_UNLOCK(&qpdb->node_locks[qpnode->locknum].lock, &nlocktype);
|
NODE_UNLOCK(&qpdb->node_locks[qpnode->locknum].lock, &nlocktype);
|
||||||
|
|
||||||
rbtiterator->current = header;
|
iterator->current = header;
|
||||||
|
|
||||||
if (header == NULL) {
|
if (header == NULL) {
|
||||||
return (ISC_R_NOMORE);
|
return (ISC_R_NOMORE);
|
||||||
@@ -3852,17 +3847,17 @@ rdatasetiter_first(dns_rdatasetiter_t *iterator DNS__DB_FLARG) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static isc_result_t
|
static isc_result_t
|
||||||
rdatasetiter_next(dns_rdatasetiter_t *iterator DNS__DB_FLARG) {
|
rdatasetiter_next(dns_rdatasetiter_t *it DNS__DB_FLARG) {
|
||||||
qpc_rditer_t *rbtiterator = (qpc_rditer_t *)iterator;
|
qpc_rditer_t *iterator = (qpc_rditer_t *)it;
|
||||||
qpcache_t *qpdb = (qpcache_t *)(rbtiterator->common.db);
|
qpcache_t *qpdb = (qpcache_t *)(iterator->common.db);
|
||||||
qpcnode_t *qpnode = rbtiterator->common.node;
|
qpcnode_t *qpnode = iterator->common.node;
|
||||||
dns_slabheader_t *header = NULL, *top_next = NULL;
|
dns_slabheader_t *header = NULL, *top_next = NULL;
|
||||||
dns_typepair_t type, negtype;
|
dns_typepair_t type, negtype;
|
||||||
dns_rdatatype_t rdtype, covers;
|
dns_rdatatype_t rdtype, covers;
|
||||||
isc_rwlocktype_t nlocktype = isc_rwlocktype_none;
|
isc_rwlocktype_t nlocktype = isc_rwlocktype_none;
|
||||||
bool expiredok = EXPIREDOK(rbtiterator);
|
bool expiredok = EXPIREDOK(iterator);
|
||||||
|
|
||||||
header = rbtiterator->current;
|
header = iterator->current;
|
||||||
if (header == NULL) {
|
if (header == NULL) {
|
||||||
return (ISC_R_NOMORE);
|
return (ISC_R_NOMORE);
|
||||||
}
|
}
|
||||||
@@ -3906,8 +3901,7 @@ rdatasetiter_next(dns_rdatasetiter_t *iterator DNS__DB_FLARG) {
|
|||||||
}
|
}
|
||||||
header = header->down;
|
header = header->down;
|
||||||
} else if (!IGNORE(header)) {
|
} else if (!IGNORE(header)) {
|
||||||
if (!iterator_active(qpdb, rbtiterator, header))
|
if (!iterator_active(qpdb, iterator, header)) {
|
||||||
{
|
|
||||||
header = NULL;
|
header = NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -3931,7 +3925,7 @@ rdatasetiter_next(dns_rdatasetiter_t *iterator DNS__DB_FLARG) {
|
|||||||
|
|
||||||
NODE_UNLOCK(&qpdb->node_locks[qpnode->locknum].lock, &nlocktype);
|
NODE_UNLOCK(&qpdb->node_locks[qpnode->locknum].lock, &nlocktype);
|
||||||
|
|
||||||
rbtiterator->current = header;
|
iterator->current = header;
|
||||||
|
|
||||||
if (header == NULL) {
|
if (header == NULL) {
|
||||||
return (ISC_R_NOMORE);
|
return (ISC_R_NOMORE);
|
||||||
@@ -3941,20 +3935,20 @@ rdatasetiter_next(dns_rdatasetiter_t *iterator DNS__DB_FLARG) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
rdatasetiter_current(dns_rdatasetiter_t *iterator,
|
rdatasetiter_current(dns_rdatasetiter_t *it,
|
||||||
dns_rdataset_t *rdataset DNS__DB_FLARG) {
|
dns_rdataset_t *rdataset DNS__DB_FLARG) {
|
||||||
qpc_rditer_t *rbtiterator = (qpc_rditer_t *)iterator;
|
qpc_rditer_t *iterator = (qpc_rditer_t *)it;
|
||||||
qpcache_t *qpdb = (qpcache_t *)(rbtiterator->common.db);
|
qpcache_t *qpdb = (qpcache_t *)(iterator->common.db);
|
||||||
qpcnode_t *qpnode = rbtiterator->common.node;
|
qpcnode_t *qpnode = iterator->common.node;
|
||||||
dns_slabheader_t *header = NULL;
|
dns_slabheader_t *header = NULL;
|
||||||
isc_rwlocktype_t nlocktype = isc_rwlocktype_none;
|
isc_rwlocktype_t nlocktype = isc_rwlocktype_none;
|
||||||
|
|
||||||
header = rbtiterator->current;
|
header = iterator->current;
|
||||||
REQUIRE(header != NULL);
|
REQUIRE(header != NULL);
|
||||||
|
|
||||||
NODE_RDLOCK(&qpdb->node_locks[qpnode->locknum].lock, &nlocktype);
|
NODE_RDLOCK(&qpdb->node_locks[qpnode->locknum].lock, &nlocktype);
|
||||||
|
|
||||||
bindrdataset(qpdb, qpnode, header, rbtiterator->common.now, nlocktype,
|
bindrdataset(qpdb, qpnode, header, iterator->common.now, nlocktype,
|
||||||
isc_rwlocktype_none, rdataset DNS__DB_FLARG_PASS);
|
isc_rwlocktype_none, rdataset DNS__DB_FLARG_PASS);
|
||||||
|
|
||||||
NODE_UNLOCK(&qpdb->node_locks[qpnode->locknum].lock, &nlocktype);
|
NODE_UNLOCK(&qpdb->node_locks[qpnode->locknum].lock, &nlocktype);
|
||||||
|
|||||||
Reference in New Issue
Block a user