mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 14:07:59 +00:00
rename 'rbtiterator' and similar names in qpcache
when the QP cache was adapted from the RBT database, some names weren't changed. this could be confusing, so let's change them now. also, we no longer need to include rbt.h.
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