2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-31 22:45:39 +00:00

API cleanups

This commit is contained in:
Bob Halley
1999-02-11 04:56:07 +00:00
parent 62837b832f
commit 6107e9b485

View File

@@ -68,7 +68,6 @@ typedef struct {
node_lock * node_locks; node_lock * node_locks;
/* Locked by lock */ /* Locked by lock */
unsigned int references; unsigned int references;
isc_boolean_t shutting_down;
/* Locked by tree_lock */ /* Locked by tree_lock */
dns_rbt_t * tree; dns_rbt_t * tree;
} dns_rbtdb_t; } dns_rbtdb_t;
@@ -108,7 +107,7 @@ free_rbtdb(dns_rbtdb_t *rbtdb) {
unsigned int i; unsigned int i;
isc_region_t r; isc_region_t r;
dns_name_toregion(&rbtdb->common.base, &r); dns_name_toregion(&rbtdb->common.origin, &r);
if (r.base != NULL) if (r.base != NULL)
isc_mem_put(rbtdb->common.mctx, r.base, r.length); isc_mem_put(rbtdb->common.mctx, r.base, r.length);
if (rbtdb->tree != NULL) if (rbtdb->tree != NULL)
@@ -163,18 +162,7 @@ detach(dns_db_t **dbp) {
if (maybe_free) if (maybe_free)
maybe_free_rbtdb(rbtdb); maybe_free_rbtdb(rbtdb);
dbp = NULL; *dbp = NULL;
}
static void
shutdown(dns_db_t *db) {
dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db;
REQUIRE(VALID_RBTDB(rbtdb));
LOCK(&rbtdb->lock);
rbtdb->shutting_down = ISC_TRUE;
UNLOCK(&rbtdb->lock);
} }
static void static void
@@ -182,7 +170,6 @@ currentversion(dns_db_t *db, dns_dbversion_t **versionp) {
dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db; dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db;
REQUIRE(VALID_RBTDB(rbtdb)); REQUIRE(VALID_RBTDB(rbtdb));
REQUIRE(versionp != NULL && *versionp == NULL);
*versionp = NULL; *versionp = NULL;
} }
@@ -191,18 +178,20 @@ static dns_result_t
newversion(dns_db_t *db, dns_dbversion_t **versionp) { newversion(dns_db_t *db, dns_dbversion_t **versionp) {
dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db; dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db;
(void)versionp;
REQUIRE(VALID_RBTDB(rbtdb)); REQUIRE(VALID_RBTDB(rbtdb));
REQUIRE(versionp != NULL && *versionp == NULL);
return (DNS_R_NOTIMPLEMENTED); return (DNS_R_NOTIMPLEMENTED);
} }
static void static void
closeversion(dns_db_t *db, dns_dbversion_t **versionp) { closeversion(dns_db_t *db, dns_dbversion_t **versionp, isc_boolean_t commit) {
dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db; dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db;
(void)commit;
REQUIRE(VALID_RBTDB(rbtdb)); REQUIRE(VALID_RBTDB(rbtdb));
REQUIRE(versionp != NULL && *versionp != NULL);
*versionp = NULL; *versionp = NULL;
} }
@@ -218,7 +207,6 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create,
isc_rwlocktype_t locktype = isc_rwlocktype_read; isc_rwlocktype_t locktype = isc_rwlocktype_read;
REQUIRE(VALID_RBTDB(rbtdb)); REQUIRE(VALID_RBTDB(rbtdb));
REQUIRE(dns_name_issubdomain(name, &rbtdb->common.base));
dns_name_init(&foundname, NULL); dns_name_init(&foundname, NULL);
RWLOCK(&rbtdb->tree_lock, locktype); RWLOCK(&rbtdb->tree_lock, locktype);
@@ -309,8 +297,6 @@ findrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
(void)version; (void)version;
REQUIRE(VALID_RBTDB(rbtdb)); REQUIRE(VALID_RBTDB(rbtdb));
REQUIRE(DNS_RDATASET_VALID(rdataset));
REQUIRE(rdataset->methods == NULL);
LOCK(&rbtdb->node_locks[rbtnode->locknum].lock); LOCK(&rbtdb->node_locks[rbtnode->locknum].lock);
for (header = rbtnode->data; header != NULL; header = header->next) { for (header = rbtnode->data; header != NULL; header = header->next) {
@@ -357,7 +343,7 @@ findrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
static dns_result_t static dns_result_t
addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
dns_rdataset_t *rdataset, dns_addmode_t mode) dns_rdataset_t *rdataset)
{ {
dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db; dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db;
dns_rbtnode_t *rbtnode = (dns_rbtnode_t *)node; dns_rbtnode_t *rbtnode = (dns_rbtnode_t *)node;
@@ -366,7 +352,6 @@ addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
dns_result_t result; dns_result_t result;
(void)version; (void)version;
(void)mode;
REQUIRE(VALID_RBTDB(rbtdb)); REQUIRE(VALID_RBTDB(rbtdb));
@@ -399,6 +384,7 @@ deleterdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
node = NULL; node = NULL;
version = NULL; version = NULL;
type = 0; type = 0;
return (DNS_R_NOTIMPLEMENTED); return (DNS_R_NOTIMPLEMENTED);
} }
@@ -424,6 +410,9 @@ add_rdataset_callback(dns_rdatacallbacks_t *callbacks, dns_name_t *name,
/* /*
* The following is basically addrdataset(), with no locking. * The following is basically addrdataset(), with no locking.
*
* XXX We should look for an rdataset of this type and merge if
* we find it.
*/ */
result = dns_rdataslab_fromrdataset(rdataset, rbtdb->common.mctx, result = dns_rdataslab_fromrdataset(rdataset, rbtdb->common.mctx,
@@ -470,8 +459,8 @@ load(dns_db_t *db, char *filename) {
callbacks.commit = add_rdataset_callback; callbacks.commit = add_rdataset_callback;
callbacks.commit_private = rbtdb; callbacks.commit_private = rbtdb;
return (dns_master_load(filename, &rbtdb->common.base, return (dns_master_load(filename, &rbtdb->common.origin,
&rbtdb->common.base, rbtdb->common.class, &rbtdb->common.origin, rbtdb->common.class,
&soacount, &nscount, &callbacks, &soacount, &nscount, &callbacks,
rbtdb->common.mctx)); rbtdb->common.mctx));
} }
@@ -493,7 +482,6 @@ delete_callback(void *data, void *arg) {
static dns_dbmethods_t methods = { static dns_dbmethods_t methods = {
attach, attach,
detach, detach,
shutdown,
load, load,
currentversion, currentversion,
newversion, newversion,
@@ -507,7 +495,7 @@ static dns_dbmethods_t methods = {
}; };
dns_result_t dns_result_t
dns_rbtdb_create(isc_mem_t *mctx, dns_name_t *base, isc_boolean_t cache, dns_rbtdb_create(isc_mem_t *mctx, dns_name_t *origin, isc_boolean_t cache,
dns_rdataclass_t class, unsigned int argc, char *argv[], dns_rdataclass_t class, unsigned int argc, char *argv[],
dns_db_t **dbp) dns_db_t **dbp)
{ {
@@ -517,6 +505,7 @@ dns_rbtdb_create(isc_mem_t *mctx, dns_name_t *base, isc_boolean_t cache,
int i; int i;
isc_region_t r1, r2; isc_region_t r1, r2;
/* Keep the compiler happy. */
(void)argc; (void)argc;
(void)argv; (void)argv;
@@ -525,7 +514,9 @@ dns_rbtdb_create(isc_mem_t *mctx, dns_name_t *base, isc_boolean_t cache,
return (DNS_R_NOMEMORY); return (DNS_R_NOMEMORY);
memset(rbtdb, '\0', sizeof *rbtdb); memset(rbtdb, '\0', sizeof *rbtdb);
rbtdb->common.methods = &methods; rbtdb->common.methods = &methods;
rbtdb->common.cache = cache; rbtdb->common.attributes = 0;
if (cache)
rbtdb->common.attributes |= DNS_DBATTR_CACHE;
rbtdb->common.class = class; rbtdb->common.class = class;
rbtdb->common.mctx = mctx; rbtdb->common.mctx = mctx;
@@ -577,10 +568,10 @@ dns_rbtdb_create(isc_mem_t *mctx, dns_name_t *base, isc_boolean_t cache,
} }
/* /*
* Make a copy of the base name. * Make a copy of the origin name.
*/ */
dns_name_init(&rbtdb->common.base, NULL); dns_name_init(&rbtdb->common.origin, NULL);
dns_name_toregion(base, &r1); dns_name_toregion(origin, &r1);
r2.base = isc_mem_get(mctx, r1.length); r2.base = isc_mem_get(mctx, r1.length);
if (r2.base == NULL) { if (r2.base == NULL) {
free_rbtdb(rbtdb); free_rbtdb(rbtdb);
@@ -588,7 +579,7 @@ dns_rbtdb_create(isc_mem_t *mctx, dns_name_t *base, isc_boolean_t cache,
} }
r2.length = r1.length; r2.length = r1.length;
memcpy(r2.base, r1.base, r1.length); memcpy(r2.base, r1.base, r1.length);
dns_name_fromregion(&rbtdb->common.base, &r2); dns_name_fromregion(&rbtdb->common.origin, &r2);
/* /*
* Make the Red-Black Tree. * Make the Red-Black Tree.
@@ -599,7 +590,6 @@ dns_rbtdb_create(isc_mem_t *mctx, dns_name_t *base, isc_boolean_t cache,
return (dresult); return (dresult);
} }
rbtdb->shutting_down = ISC_FALSE;
rbtdb->references = 1; rbtdb->references = 1;
/* XXX Version init here */ /* XXX Version init here */