Beispiel #1
0
static void
cache_node_deleter(void *data, void *deleter_arg)
{
	cache_node_t *node = (cache_node_t *)data;

	UNUSED(deleter_arg);
	REQUIRE(data != NULL);

	ldapdb_rdatalist_destroy(node->mctx, &node->rdatalist);
	MEM_PUT_AND_DETACH(node);
}
Beispiel #2
0
void
mldap_destroy(mldapdb_t **mldapp) {
	mldapdb_t *mldap;

	REQUIRE(mldapp != NULL);

	mldap = *mldapp;
	if (mldap == NULL)
		return;

	metadb_destroy(&mldap->mdb);
	MEM_PUT_AND_DETACH(mldap);

	*mldapp = NULL;
}
Beispiel #3
0
void
destroy_ldap_cache(ldap_cache_t **cachep)
{
	ldap_cache_t *cache;
	int is_locked = 0;

	REQUIRE(cachep != NULL && *cachep != NULL);

	cache = *cachep;

	if (cache->rbt) {
		CONTROLED_LOCK(&cache->mutex);
		dns_rbt_destroy(&cache->rbt);
		cache->rbt = NULL;
		CONTROLED_UNLOCK(&cache->mutex);
		DESTROYLOCK(&cache->mutex);
	}

	MEM_PUT_AND_DETACH(cache);

	*cachep = NULL;
}
Beispiel #4
0
isc_result_t
mldap_new(isc_mem_t *mctx, mldapdb_t **mldapp) {
	isc_result_t result;
	mldapdb_t *mldap = NULL;

	REQUIRE(mldapp != NULL && *mldapp == NULL);

	CHECKED_MEM_GET_PTR(mctx, mldap);
	ZERO_PTR(mldap);
	isc_mem_attach(mctx, &mldap->mctx);

	CHECK(isc_refcount_init(&mldap->generation, 0));
	CHECK(metadb_new(mctx, &mldap->mdb));

	*mldapp = mldap;
	return result;

cleanup:
	metadb_destroy(&mldap->mdb);
	MEM_PUT_AND_DETACH(mldap);
	return result;
}