Lines Matching defs:ecdb

17 #include <dns/ecdb.h>
31 * The 'ephemeral' cache DB (ecdb) implementation. An ecdb just provides
52 dns_ecdb_t *ecdb;
137 return (dns_db_register("ecdb", dns_ecdb_create, NULL, mctx, dbimp));
153 dns_ecdb_t *ecdb = (dns_ecdb_t *)source;
155 REQUIRE(VALID_ECDB(ecdb));
158 LOCK(&ecdb->lock);
159 ecdb->references++;
160 UNLOCK(&ecdb->lock);
167 dns_ecdb_t *ecdb = *ecdbp;
168 isc_mem_t *mctx = ecdb->common.mctx;
170 if (dns_name_dynamic(&ecdb->common.origin))
171 dns_name_free(&ecdb->common.origin, mctx);
173 DESTROYLOCK(&ecdb->lock);
175 ecdb->common.impmagic = 0;
176 ecdb->common.magic = 0;
178 isc_mem_putanddetach(&mctx, ecdb, sizeof(*ecdb));
185 dns_ecdb_t *ecdb;
189 ecdb = (dns_ecdb_t *)*dbp;
190 REQUIRE(VALID_ECDB(ecdb));
192 LOCK(&ecdb->lock);
193 ecdb->references--;
194 if (ecdb->references == 0 && ISC_LIST_EMPTY(ecdb->nodes))
196 UNLOCK(&ecdb->lock);
199 destroy_ecdb(&ecdb);
206 dns_ecdb_t *ecdb = (dns_ecdb_t *)db;
209 REQUIRE(VALID_ECDB(ecdb));
225 dns_ecdb_t *ecdb = node->ecdb;
229 mctx = ecdb->common.mctx;
231 LOCK(&ecdb->lock);
232 ISC_LIST_UNLINK(ecdb->nodes, node, link);
233 if (ecdb->references == 0 && ISC_LIST_EMPTY(ecdb->nodes))
235 UNLOCK(&ecdb->lock);
255 destroy_ecdb(&ecdb);
260 dns_ecdb_t *ecdb = (dns_ecdb_t *)db;
264 REQUIRE(VALID_ECDB(ecdb));
269 UNUSED(ecdb); /* in case REQUIRE() is empty */
290 dns_ecdb_t *ecdb = (dns_ecdb_t *)db;
292 REQUIRE(VALID_ECDB(ecdb));
313 dns_ecdb_t *ecdb = (dns_ecdb_t *)db;
315 REQUIRE(VALID_ECDB(ecdb));
332 dns_ecdb_t *ecdb = (dns_ecdb_t *)db;
337 REQUIRE(VALID_ECDB(ecdb));
347 mctx = ecdb->common.mctx;
368 node->ecdb= ecdb;
374 LOCK(&ecdb->lock);
375 ISC_LIST_APPEND(ecdb->nodes, node, link);
376 UNLOCK(&ecdb->lock);
386 bind_rdataset(dns_ecdb_t *ecdb, dns_ecdbnode_t *node,
398 rdataset->rdclass = ecdb->common.rdclass;
408 rdataset->private1 = ecdb;
429 dns_ecdb_t *ecdb = (dns_ecdb_t *)db;
436 REQUIRE(VALID_ECDB(ecdb));
443 mctx = ecdb->common.mctx;
478 bind_rdataset(ecdb, ecdbnode, header, addedrdataset);
514 dns_ecdb_t *ecdb = (dns_ecdb_t *)db;
519 REQUIRE(VALID_ECDB(ecdb));
522 mctx = ecdb->common.mctx;
594 dns_ecdb_t *ecdb;
606 ecdb = isc_mem_get(mctx, sizeof(*ecdb));
607 if (ecdb == NULL)
610 ecdb->common.attributes = DNS_DBATTR_CACHE;
611 ecdb->common.rdclass = rdclass;
612 ecdb->common.methods = &ecdb_methods;
613 dns_name_init(&ecdb->common.origin, NULL);
614 result = dns_name_dupwithoffsets(origin, mctx, &ecdb->common.origin);
616 isc_mem_put(mctx, ecdb, sizeof(*ecdb));
620 result = isc_mutex_init(&ecdb->lock);
625 if (dns_name_dynamic(&ecdb->common.origin))
626 dns_name_free(&ecdb->common.origin, mctx);
627 isc_mem_put(mctx, ecdb, sizeof(*ecdb));
631 ecdb->references = 1;
632 ISC_LIST_INIT(ecdb->nodes);
634 ecdb->common.mctx = NULL;
635 isc_mem_attach(mctx, &ecdb->common.mctx);
636 ecdb->common.impmagic = ECDB_MAGIC;
637 ecdb->common.magic = DNS_DB_MAGIC;
639 *dbp = (dns_db_t *)ecdb;
824 dns_ecdb_t *ecdb;
826 ecdb = (dns_ecdb_t *)iterator->db;
827 REQUIRE(VALID_ECDB(ecdb));
829 bind_rdataset(ecdb, iterator->node, ecdbiterator->current, rdataset);