return dns_db_nodecount(sampledb->db, tree);
}
-static void
-setloop(dns_db_t *db, isc_loop_t *loop) {
- sampledb_t *sampledb = (sampledb_t *)db;
-
- REQUIRE(VALID_SAMPLEDB(sampledb));
-
- dns_db_setloop(sampledb->db, loop);
-}
-
static isc_result_t
getoriginnode(dns_db_t *db, dns_dbnode_t **nodep DNS__DB_FLARG) {
sampledb_t *sampledb = (sampledb_t *)db;
.deleterdataset = deleterdataset,
.issecure = issecure,
.nodecount = nodecount,
- .setloop = setloop,
.getoriginnode = getoriginnode,
.getnsec3parameters = getnsec3parameters,
.findnsec3node = findnsec3node,
dns_db_setmaxrrperset(db, cache->maxrrperset);
dns_db_setmaxtypepername(db, cache->maxtypepername);
- /*
- * XXX this is only used by the RBT cache, and can
- * be removed when it is.
- */
- dns_db_setloop(db, isc_loop_main());
-
*dbp = db;
*hmctxp = hmctx;
*tmctxp = tmctx;
return (db->methods->hashsize)(db);
}
-void
-dns_db_setloop(dns_db_t *db, isc_loop_t *loop) {
- REQUIRE(DNS_DB_VALID(db));
-
- if (db->methods->setloop != NULL) {
- (db->methods->setloop)(db, loop);
- }
-}
-
isc_result_t
dns_db_register(const char *name, dns_dbcreatefunc_t create, void *driverarg,
isc_mem_t *mctx, dns_dbimplementation_t **dbimp) {
dns_rdatatype_t covers DNS__DB_FLARG);
bool (*issecure)(dns_db_t *db);
unsigned int (*nodecount)(dns_db_t *db, dns_dbtree_t);
- void (*setloop)(dns_db_t *db, isc_loop_t *);
isc_result_t (*getoriginnode)(dns_db_t *db,
dns_dbnode_t **nodep DNS__DB_FLARG);
isc_result_t (*getnsec3parameters)(dns_db_t *db,
* 0 if not implemented.
*/
-void
-dns_db_setloop(dns_db_t *db, isc_loop_t *loop);
-/*%<
- * If loop is set then the final detach may be performed asynchronously.
- *
- * Requires:
- * \li 'db' is a valid database.
- * \li 'loop' to be valid or NULL.
- */
-
bool
dns_db_ispersistent(dns_db_t *db);
/*%<
#include <isc/heap.h>
#include <isc/hex.h>
#include <isc/log.h>
-#include <isc/loop.h>
#include <isc/mem.h>
#include <isc/mutex.h>
#include <isc/os.h>
qpz_version_t *current_version;
qpz_version_t *future_version;
qpz_versionlist_t open_versions;
- isc_loop_t *loop;
struct rcu_head rcu_head;
qpz_heap_t *heap; /* Resigning heap */
isc_stats_detach(&qpdb->gluecachestats);
}
- if (qpdb->loop != NULL) {
- isc_loop_detach(&qpdb->loop);
- }
-
isc_rwlock_destroy(&qpdb->lock);
isc_refcount_destroy(&qpdb->common.references);
return mu.leaves;
}
-static void
-setloop(dns_db_t *db, isc_loop_t *loop) {
- qpzonedb_t *qpdb = NULL;
-
- qpdb = (qpzonedb_t *)db;
-
- REQUIRE(VALID_QPZONE(qpdb));
-
- RWLOCK(&qpdb->lock, isc_rwlocktype_write);
- if (qpdb->loop != NULL) {
- isc_loop_detach(&qpdb->loop);
- }
- if (loop != NULL) {
- isc_loop_attach(loop, &qpdb->loop);
- }
- RWUNLOCK(&qpdb->lock, isc_rwlocktype_write);
-}
-
static isc_result_t
getoriginnode(dns_db_t *db, dns_dbnode_t **nodep DNS__DB_FLARG) {
qpzonedb_t *qpdb = (qpzonedb_t *)db;
.deleterdataset = qpzone_deleterdataset,
.issecure = issecure,
.nodecount = nodecount,
- .setloop = setloop,
.getoriginnode = getoriginnode,
.getnsec3parameters = getnsec3parameters,
.findnsec3node = qpzone_findnsec3node,
return 0;
}
-static void
-setloop(dns_db_t *db, isc_loop_t *loop) {
- UNUSED(db);
- UNUSED(loop);
-}
-
/*
* getoriginnode() is used by the update code to find the
* dns_rdatatype_dnskey record for a zone
.deleterdataset = deleterdataset,
.issecure = issecure,
.nodecount = nodecount,
- .setloop = setloop,
.getoriginnode = getoriginnode,
.findnodeext = findnodeext,
.findext = findext,
isc_result_totext(result));
goto cleanup;
}
- dns_db_setloop(stub->db, zone->loop);
dns_db_setmaxrrperset(stub->db, zone->maxrrperset);
dns_db_setmaxtypepername(stub->db,
zone->maxtypepername);
zone_detachdb(zone);
}
zone_attachdb(zone, db);
- dns_db_setloop(zone->db, zone->loop);
dns_db_setmaxrrperset(zone->db, zone->maxrrperset);
dns_db_setmaxtypepername(zone->db, zone->maxtypepername);
DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_LOADED | DNS_ZONEFLG_NEEDNOTIFY);
break;
}
- dns_db_setloop(db, zone->loop);
dns_db_setmaxrrperset(db, zone->maxrrperset);
dns_db_setmaxtypepername(db, zone->maxtypepername);