#include <dns/view.h>
#include <dns/zone.h>
+#define DNS_CATZ_ZONE_MAGIC ISC_MAGIC('c', 'a', 't', 'z')
+#define DNS_CATZ_ZONES_MAGIC ISC_MAGIC('c', 'a', 't', 's')
+#define DNS_CATZ_ENTRY_MAGIC ISC_MAGIC('c', 'a', 't', 'e')
+
+#define DNS_CATZ_ZONE_VALID(catz) ISC_MAGIC_VALID(catz, DNS_CATZ_ZONE_MAGIC)
+#define DNS_CATZ_ZONES_VALID(catzs) ISC_MAGIC_VALID(catzs, DNS_CATZ_ZONES_MAGIC)
+#define DNS_CATZ_ENTRY_VALID(entry) ISC_MAGIC_VALID(entry, DNS_CATZ_ENTRY_MAGIC)
/*%
* Single member zone in a catalog
*/
struct dns_catz_entry {
+ unsigned int magic;
dns_name_t name;
dns_catz_options_t opts;
isc_refcount_t refs;
* Catalog zone
*/
struct dns_catz_zone {
+ unsigned int magic;
dns_name_t name;
dns_catz_zones_t *catzs;
dns_rdata_t soa;
dns_catz_options_t defoptions;
dns_catz_options_t zoneoptions;
isc_time_t lastupdated;
- bool updatepending;
+ bool updatepending;
uint32_t version;
dns_db_t *db;
isc_timer_t *updatetimer;
isc_event_t updateevent;
- bool active;
- bool db_registered;
+ bool active;
+ bool db_registered;
isc_refcount_t refs;
};
* Collection of catalog zones for a view
*/
struct dns_catz_zones {
+ unsigned int magic;
isc_ht_t *zones;
isc_mem_t *mctx;
isc_refcount_t refs;
void
dns_catz_options_init(dns_catz_options_t *options) {
+
+ REQUIRE(options != NULL);
+
dns_ipkeylist_init(&options->masters);
options->allow_query = NULL;
void
dns_catz_options_free(dns_catz_options_t *options, isc_mem_t *mctx) {
+
+ REQUIRE(options != NULL);
+ REQUIRE(mctx != NULL);
+
if (options->masters.count != 0)
dns_ipkeylist_clear(mctx, &options->masters);
if (options->zonedir != NULL) {
dns_catz_options_copy(isc_mem_t *mctx, const dns_catz_options_t *src,
dns_catz_options_t *dst)
{
+ REQUIRE(mctx != NULL);
REQUIRE(src != NULL);
REQUIRE(dst != NULL);
REQUIRE(dst->masters.count == 0);
dns_catz_options_setdefault(isc_mem_t *mctx, const dns_catz_options_t *defaults,
dns_catz_options_t *opts)
{
+ REQUIRE(mctx != NULL);
+ REQUIRE(defaults != NULL);
+ REQUIRE(opts != NULL);
+
if (opts->masters.count == 0 && defaults->masters.count != 0)
dns_ipkeylist_copy(mctx, &defaults->masters, &opts->masters);
dns_catz_entry_t *nentry;
isc_result_t result;
+ REQUIRE(mctx != NULL);
REQUIRE(nentryp != NULL && *nentryp == NULL);
nentry = isc_mem_get(mctx, sizeof(dns_catz_entry_t));
dns_catz_options_init(&nentry->opts);
isc_refcount_init(&nentry->refs, 1);
+ nentry->magic = DNS_CATZ_ENTRY_MAGIC;
*nentryp = nentry;
return (ISC_R_SUCCESS);
dns_name_t *
dns_catz_entry_getname(dns_catz_entry_t *entry) {
+ REQUIRE(DNS_CATZ_ENTRY_VALID(entry));
return (&entry->name);
}
isc_result_t result;
dns_catz_entry_t *nentry = NULL;
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
+ REQUIRE(DNS_CATZ_ENTRY_VALID(entry));
+ REQUIRE(nentryp != NULL && *nentryp == NULL);
+
result = dns_catz_entry_new(zone->catzs->mctx, &entry->name, &nentry);
if (result != ISC_R_SUCCESS)
return (result);
void
dns_catz_entry_attach(dns_catz_entry_t *entry, dns_catz_entry_t **entryp) {
+ REQUIRE(DNS_CATZ_ENTRY_VALID(entry));
REQUIRE(entryp != NULL && *entryp == NULL);
+
isc_refcount_increment(&entry->refs, NULL);
*entryp = entry;
}
isc_mem_t *mctx;
unsigned int refs;
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
REQUIRE(entryp != NULL && *entryp != NULL);
-
entry = *entryp;
+ REQUIRE(DNS_CATZ_ENTRY_VALID(entry));
+
*entryp = NULL;
mctx = zone->catzs->mctx;
bool
dns_catz_entry_validate(const dns_catz_entry_t *entry) {
+ REQUIRE(DNS_CATZ_ENTRY_VALID(entry));
UNUSED(entry);
return (true);
dns_catz_entry_cmp(const dns_catz_entry_t *ea, const dns_catz_entry_t *eb) {
isc_region_t ra, rb;
+ REQUIRE(DNS_CATZ_ENTRY_VALID(ea));
+ REQUIRE(DNS_CATZ_ENTRY_VALID(eb));
+
if (ea == eb)
return (true);
dns_name_t *
dns_catz_zone_getname(dns_catz_zone_t *zone) {
- REQUIRE(zone != NULL);
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
return (&zone->name);
}
dns_catz_options_t *
dns_catz_zone_getdefoptions(dns_catz_zone_t *zone) {
- REQUIRE(zone != NULL);
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
return (&zone->defoptions);
}
void
dns_catz_zone_resetdefoptions(dns_catz_zone_t *zone) {
- REQUIRE(zone != NULL);
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
dns_catz_options_free(&zone->defoptions, zone->catzs->mctx);
dns_catz_options_init(&zone->defoptions);
char zname[DNS_NAME_FORMATSIZE];
dns_catz_zoneop_fn_t addzone, modzone, delzone;
- REQUIRE(target != NULL);
- REQUIRE(newzone != NULL);
+ REQUIRE(DNS_CATZ_ZONE_VALID(newzone));
+ REQUIRE(DNS_CATZ_ZONE_VALID(target));
/* TODO verify the new zone first! */
result = delcur ? isc_ht_iter_delcurrent_next(iter1) :
isc_ht_iter_next(iter1))
{
- dns_catz_entry_t *nentry;
- dns_catz_entry_t *oentry;
- unsigned char * key;
+ dns_catz_entry_t *nentry = NULL;
+ dns_catz_entry_t *oentry = NULL;
+ unsigned char * key = NULL;
size_t keysize;
delcur = false;
result == ISC_R_SUCCESS;
result = isc_ht_iter_delcurrent_next(iter2))
{
- dns_catz_entry_t *entry;
+ dns_catz_entry_t *entry = NULL;
isc_ht_iter_current(iter2, (void **) &entry);
dns_name_format(&entry->name, zname, DNS_NAME_FORMATSIZE);
result == ISC_R_SUCCESS;
result = isc_ht_iter_delcurrent_next(iteradd))
{
- dns_catz_entry_t *entry;
+ dns_catz_entry_t *entry = NULL;
isc_ht_iter_current(iteradd, (void **) &entry);
dns_name_format(&entry->name, zname, DNS_NAME_FORMATSIZE);
result == ISC_R_SUCCESS;
result = isc_ht_iter_delcurrent_next(itermod))
{
- dns_catz_entry_t *entry;
+ dns_catz_entry_t *entry = NULL;
isc_ht_iter_current(itermod, (void **) &entry);
dns_name_format(&entry->name, zname, DNS_NAME_FORMATSIZE);
if (tomod != NULL)
isc_ht_destroy(&tomod);
return (result);
-
}
isc_result_t
result = isc_task_create(taskmgr, 0, &new_zones->updater);
if (result != ISC_R_SUCCESS)
goto cleanup_ht;
+ new_zones->magic = DNS_CATZ_ZONES_MAGIC;
*catzsp = new_zones;
return (ISC_R_SUCCESS);
void
dns_catz_catzs_set_view(dns_catz_zones_t *catzs, dns_view_t *view) {
- REQUIRE(catzs != NULL);
+ REQUIRE(DNS_CATZ_ZONES_VALID(catzs));
REQUIRE(view != NULL);
/* Either it's a new one or it's being reconfigured. */
REQUIRE(catzs->view == NULL || !strcmp(catzs->view->name, view->name));
isc_result_t result;
dns_catz_zone_t *new_zone;
+ REQUIRE(DNS_CATZ_ZONES_VALID(catzs));
REQUIRE(zonep != NULL && *zonep == NULL);
+ REQUIRE(ISC_MAGIC_VALID(name, DNS_NAME_MAGIC));
new_zone = isc_mem_get(catzs->mctx, sizeof(*new_zone));
if (new_zone == NULL)
new_zone->db_registered = false;
new_zone->version = (uint32_t)(-1);
isc_refcount_init(&new_zone->refs, 1);
+ new_zone->magic = DNS_CATZ_ZONE_MAGIC;
*zonep = new_zone;
isc_result_t result, tresult;
char zname[DNS_NAME_FORMATSIZE];
- REQUIRE(catzs != NULL);
- REQUIRE(name != NULL);
+ REQUIRE(DNS_CATZ_ZONES_VALID(catzs));
+ REQUIRE(ISC_MAGIC_VALID(name, DNS_NAME_MAGIC));
REQUIRE(zonep != NULL && *zonep == NULL);
+
dns_name_format(name, zname, DNS_NAME_FORMATSIZE);
isc_log_write(dns_lctx, DNS_LOGCATEGORY_GENERAL,
DNS_LOGMODULE_MASTER, ISC_LOG_DEBUG(3),
dns_catz_zone_t *
dns_catz_get_zone(dns_catz_zones_t *catzs, const dns_name_t *name) {
isc_result_t result;
- dns_catz_zone_t *found;
+ dns_catz_zone_t *found = NULL;
+
+ REQUIRE(DNS_CATZ_ZONES_VALID(catzs));
+ REQUIRE(ISC_MAGIC_VALID(name, DNS_NAME_MAGIC));
result = isc_ht_find(catzs->zones, name->ndata, name->length,
(void **) &found);
void
dns_catz_catzs_attach(dns_catz_zones_t *catzs, dns_catz_zones_t **catzsp) {
+ REQUIRE(DNS_CATZ_ZONES_VALID(catzs));
REQUIRE(catzsp != NULL && *catzsp == NULL);
isc_refcount_increment(&catzs->refs, NULL);
isc_result_t result;
dns_catz_zone_t *zone;
isc_ht_iter_t *iter = NULL;
- isc_mem_t *mctx;
unsigned int refs;
REQUIRE(zonep != NULL && *zonep != NULL);
*zonep = NULL;
isc_refcount_decrement(&zone->refs, &refs);
if (refs == 0) {
+ isc_mem_t *mctx = zone->catzs->mctx;
if (zone->entries != NULL) {
result = isc_ht_iter_create(zone->entries, &iter);
INSIST(result == ISC_R_SUCCESS);
result == ISC_R_SUCCESS;
result = isc_ht_iter_delcurrent_next(iter))
{
- dns_catz_entry_t *entry;
+ dns_catz_entry_t *entry = NULL;
isc_ht_iter_current(iter, (void **) &entry);
dns_catz_entry_detach(zone, &entry);
INSIST(isc_ht_count(zone->entries) == 0);
isc_ht_destroy(&zone->entries);
}
- mctx = zone->catzs->mctx;
+ zone->magic = 0;
isc_timer_detach(&zone->updatetimer);
isc_refcount_destroy(&zone->refs);
if (zone->db_registered == true) {
}
void
-dns_catz_catzs_detach(dns_catz_zones_t ** catzsp) {
+dns_catz_catzs_detach(dns_catz_zones_t **catzsp) {
dns_catz_zones_t *catzs;
isc_ht_iter_t *iter = NULL;
isc_result_t result;
unsigned int refs;
- dns_catz_zone_t *zone;
-
REQUIRE(catzsp != NULL);
catzs = *catzsp;
- REQUIRE(catzs != NULL);
+ REQUIRE(DNS_CATZ_ZONES_VALID(catzs));
*catzsp = NULL;
isc_refcount_decrement(&catzs->refs, &refs);
if (refs == 0) {
+ catzs->magic = 0;
DESTROYLOCK(&catzs->lock);
if (catzs->zones != NULL) {
result = isc_ht_iter_create(catzs->zones, &iter);
for (result = isc_ht_iter_first(iter);
result == ISC_R_SUCCESS;)
{
+ dns_catz_zone_t *zone = NULL;
isc_ht_iter_current(iter, (void **) &zone);
result = isc_ht_iter_delcurrent_next(iter);
dns_catz_zone_detach(&zone);
dns_label_t mhash;
dns_name_t opt;
- REQUIRE(zone != NULL);
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
REQUIRE(DNS_RDATASET_VALID(value));
- REQUIRE(name != NULL);
+ REQUIRE(ISC_MAGIC_VALID(name, DNS_NAME_MAGIC));
if (value->rdclass != dns_rdataclass_in)
return (ISC_R_FAILURE);
uint32_t tversion;
char t[16];
- REQUIRE(zone != NULL);
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
REQUIRE(DNS_RDATASET_VALID(value));
if (value->rdclass != dns_rdataclass_in ||
unsigned int rcount;
unsigned int i;
- REQUIRE(zone != NULL);
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
REQUIRE(ipkl != NULL);
REQUIRE(DNS_RDATASET_VALID(value));
REQUIRE(dns_rdataset_isassociated(value));
- REQUIRE(name != NULL);
+ REQUIRE(ISC_MAGIC_VALID(name, DNS_NAME_MAGIC));
mctx = zone->catzs->mctx;
memset(&rdata_a, 0, sizeof(rdata_a));
isc_buffer_t *aclb = NULL;
unsigned char buf[256]; /* larger than INET6_ADDRSTRLEN */
- REQUIRE(zone != NULL);
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
REQUIRE(aclbp != NULL);
REQUIRE(*aclbp == NULL);
REQUIRE(DNS_RDATASET_VALID(value));
dns_name_t prefix;
catz_opt_t opt;
- REQUIRE(zone != NULL);
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
REQUIRE(mhash != NULL);
REQUIRE(DNS_RDATASET_VALID(value));
+ REQUIRE(ISC_MAGIC_VALID(name, DNS_NAME_MAGIC));
if (name->labels == 0)
return (ISC_R_FAILURE);
dns_name_t prefix;
catz_opt_t opt;
- REQUIRE(zone != NULL);
- REQUIRE(name != NULL);
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
+ REQUIRE(ISC_MAGIC_VALID(name, DNS_NAME_MAGIC));
REQUIRE(DNS_RDATASET_VALID(rdataset));
dns_name_getlabel(name, name->labels - 1, &option);
dns_rdata_soa_t soa;
dns_name_t prefix;
- REQUIRE(catzs != NULL);
- REQUIRE(zone != NULL);
+ REQUIRE(DNS_CATZ_ZONES_VALID(catzs));
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
+ REQUIRE(ISC_MAGIC_VALID(src_name, DNS_NAME_MAGIC));
nrres = dns_name_fullcompare(src_name, &zone->name, &order, &nlabels);
if (nrres == dns_namereln_equal) {
isc_result_t result;
size_t rlen;
- REQUIRE(zone != NULL);
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
REQUIRE(entry != NULL);
REQUIRE(buffer != NULL && *buffer != NULL);
char pbuf[sizeof("65535")]; /* used both for port number and DSCP */
char zname[DNS_NAME_FORMATSIZE];
- REQUIRE(zone != NULL);
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
REQUIRE(entry != NULL);
REQUIRE(buf != NULL && *buf == NULL);
REQUIRE(event != NULL);
zone = event->ev_arg;
- REQUIRE(zone != NULL);
+ REQUIRE(DNS_CATZ_ZONE_VALID(zone));
LOCK(&zone->catzs->lock);
zone->updatepending = false;
uint32_t vers;
REQUIRE(DNS_DB_VALID(db));
- REQUIRE(catzs != NULL);
+ REQUIRE(DNS_CATZ_ZONES_VALID(catzs));
/*
* Create a new catz in the same context as current catz.
dns_catz_prereconfig(dns_catz_zones_t *catzs) {
isc_result_t result;
isc_ht_iter_t *iter = NULL;
- dns_catz_zone_t *zone;
- REQUIRE(catzs != NULL);
+ REQUIRE(DNS_CATZ_ZONES_VALID(catzs));
result = isc_ht_iter_create(catzs->zones, &iter);
INSIST(result == ISC_R_SUCCESS);
result == ISC_R_SUCCESS;
result = isc_ht_iter_next(iter))
{
+ dns_catz_zone_t *zone = NULL;
isc_ht_iter_current(iter, (void **) &zone);
zone->active = false;
}
isc_result_t result;
dns_catz_zone_t *newzone = NULL;
isc_ht_iter_t *iter = NULL;
- dns_catz_zone_t *zone;
+
+ REQUIRE(DNS_CATZ_ZONES_VALID(catzs));
LOCK(&catzs->lock);
result = isc_ht_iter_create(catzs->zones, &iter);
for (result = isc_ht_iter_first(iter);
result == ISC_R_SUCCESS;)
{
+ dns_catz_zone_t *zone = NULL;
+
isc_ht_iter_current(iter, (void **) &zone);
if (zone->active == false) {
char cname[DNS_NAME_FORMATSIZE];
isc_result_t
dns_catz_get_iterator(dns_catz_zone_t *catz, isc_ht_iter_t **itp) {
+ REQUIRE(DNS_CATZ_ZONE_VALID(catz));
return (isc_ht_iter_create(catz->entries, itp));
}
* Initialize 'options' to NULL values.
*
* Requires:
- * \li options to be non NULL
+ * \li 'options' to be non NULL.
*/
void
* Free 'options' contents into 'mctx'. ('options' itself is not freed.)
*
* Requires:
- * \li options to be non NULL
- * \li mctx to be a valid memory context
+ * \li 'options' to be non NULL.
+ * \li 'mctx' to be a valid memory context.
*/
isc_result_t
dns_catz_options_copy(isc_mem_t *mctx, const dns_catz_options_t *opts,
dns_catz_options_t *nopts);
/*%<
- * Duplicate 'opts' into 'nopts', allocating space from 'mctx'
+ * Duplicate 'opts' into 'nopts', allocating space from 'mctx'.
*
* Requires:
- * \li 'mctx' to be a valid memory context
- * \li 'options' to be non NULL and valid options
- * \li 'nopts' to be non NULL
+ * \li 'mctx' to be a valid memory context.
+ * \li 'options' to be non NULL and valid options.
+ * \li 'nopts' to be non NULL.
*/
isc_result_t
* Replace empty values in 'opts' with values from 'defaults'
*
* Requires:
- * \li mctx to be a valid memory context
- * \li defaults to be non NULL and valid options
- * \li opts to be non NULL
+ * \li 'mctx' to be a valid memory context.
+ * \li 'defaults' to be non NULL and valid options.
+ * \li 'opts' to be non NULL.
*/
dns_name_t *
* Get domain name for 'entry'
*
* Requires:
- * \li entry to be non NULL
+ * \li 'entry' to be non NULL.
*
* Returns:
- * \li domain name for entry
+ * \li domain name for entry.
*/
isc_result_t
* Allocate a new catz_entry on 'mctx', with the name 'domain'
*
* Requires:
- * \li mctx to be a valid memory context
- * \li domain to be valid dns_name or NULL
- * \li nentryp to be non NULL, *nentryp to be NULL
+ * \li 'mctx' to be a valid memory context.
+ * \li 'domain' to be valid dns_name or NULL.
+ * \li 'nentryp' to be non NULL, *nentryp to be NULL.
*
* Returns:
* \li ISC_R_SUCCESS on success
* Allocate a new catz_entry and deep copy 'entry' into 'nentryp'.
*
* Requires:
- * \li mctx to be a valid memory context
- * \li entry to be non NULL
- * \li nentryp to be non NULL, *nentryp to be NULL
+ * \li 'mctx' to be a valid memory context.
+ * \li 'entry' to be non NULL.
+ * \li 'nentryp' to be non NULL, *nentryp to be NULL.
*
* Returns:
* \li ISC_R_SUCCESS on success
* Attach an entry
*
* Requires:
- * \li entry is not NULL
- * \li entryp is not NULL, *entryp is NULL
+ * \li 'entry' is a valid dns_catz_entry_t.
+ * \li 'entryp' is not NULL and '*entryp' is NULL.
*/
void
* Detach an entry, free if no further references
*
* Requires:
- * \li zone is not NULL
- * \li entryp is not NULL, *entryp is not NULL
+ * \li 'zone' is a valid dns_catz_zone_t.
+ * \li 'entryp' is not NULL and '*entryp' is not NULL.
*/
bool
/*%<
* Validate whether entry is correct.
* (NOT YET IMPLEMENTED: always returns true)
+ *
+ * Requires:
+ *\li 'entry' is a valid dns_catz_entry_t.
*/
bool
* Deep compare two entries
*
* Requires:
- * \li ea is not NULL
- * \li eb is not NULL
+ * \li 'ea' is a valid dns_catz_entry_t.
+ * \li 'eb' is a valid dns_catz_entry_t.
*
* Returns:
- * \li true if entries are the same
- * \li false if the entries differ
+ * \li 'true' if entries are the same.
+ * \li 'false' if the entries differ.
*/
void
* Attach a catzone
*
* Requires:
- * \li zone is not NULL
- * \li zonep is not NULL, *zonep is NULL
+ * \li 'zone' is a valid dns_catz_zone_t.
+ * \li 'zonep' is not NULL and '*zonep' is NULL.
*/
void
* Detach a zone, free if no further references
*
* Requires:
- * \li zonep is not NULL, *zonep is not NULL
+ * \li 'zonep' is not NULL and '*zonep' is not NULL.
*/
isc_result_t
* Allocate a new catz zone on catzs mctx
*
* Requires:
- * \li catzs is not NULL
- * \li zonep is not NULL, *zonep is NULL
- * \li name is not NULL
+ * \li 'catzs' is a valid dns_catz_zones_t.
+ * \li 'zonep' is not NULL and '*zonep' is NULL.
+ * \li 'name' is a valid dns_name_t.
*
*/
* Get catalog zone name
*
* Requires:
- * \li zone is not NULL
+ * \li 'zone' is a valid dns_catz_zone_t.
*/
dns_catz_options_t *
* Get default member zone options for catalog zone 'zone'
*
* Requires:
- * \li zone is not NULL
+ * \li 'zone' is a valid dns_catz_zone_t.
*/
void
* the default values.
*
* Requires:
- * \li zone is not NULL
+ * \li 'zone' is a valid dns_catz_zone_t.
*/
isc_result_t
* (from zone->catzs->zmm) for appropriate member zones.
*
* Requires:
- * \li orig is not NULL
- * \li newzone is not NULL, *newzone is not NULL
+ * \li 'orig' is a valid dns_catz_zone_t.
+ * \li 'newzone' is not NULL and '*newzone' is not NULL.
*
*/
* record name.
*
* Requires:
- * \li catzs is not NULL
- * \li zone is not NULL
- * \li src_name is not NULL
- * \li rdataset is valid
+ * \li 'catzs' is a valid dns_catz_zones_t.
+ * \li 'zone' is a valid dns_catz_zone_t.
+ * \li 'src_name' is a valid dns_name_t.
+ * \li 'rdataset' is valid rdataset.
*/
isc_result_t
* __catz__unique_hash_generated_from_the_above.db
*
* Requires:
- * \li zone is not NULL
- * \li entry is not NULL
- * \li buffer is not NULL and *buffer is not NULL
+ * \li 'zone' is a valid dns_catz_zone_t.
+ * \li 'entry' is a valid dns_catz_entry_t.
+ * \li 'buffer' is not NULL and '*buffer' is not NULL.
*/
isc_result_t
* it into *buf. buf might be reallocated.
*
* Requires:
- * \li zone is not NULL
- * \li entry is not NULL
- * \li buf is not NULL
- * \li *buf is NULL
+ * \li 'zone' is a valid dns_catz_zone_t.
+ * \li 'entry' is a valid dns_catz_entry_t.
+ * \li 'buf' is not NULL and '*buf' is NULL.
*
*/
* for a view.
*
* Requires:
- * \li catzsp is not NULL, *catzsp is NULL
- * \li zmm is not NULL
+ * \li 'catzsp' is not NULL and '*catzsp' is NULL.
+ * \li 'zmm' is not NULL.
*
*/
* Allocate a new catz named 'name' and put it in 'catzs' collection.
*
* Requires:
- * \li catzs is not NULL
- * \li name is not NULL
- * \li zonep is not NULL, *zonep is NULL
+ * \li 'catzs' is a valid dns_catz_zones_t.
+ * \li 'name' is a valid dns_name_t.
+ * \li 'zonep' is not NULL and *zonep is NULL.
*
*/
* Returns a zone named 'name' from collection 'catzs'
*
* Requires:
- * \li catzs is not NULL
- * \li name is not NULL
+ * \li 'catzs' is a valid dns_catz_zones_t.
+ * \li 'name' is a valid dns_name_t.
*/
void
dns_catz_catzs_attach(dns_catz_zones_t *catzs, dns_catz_zones_t **catzsp);
/*%<
- * Attach 'catzs' to 'catzsp'
+ * Attach 'catzs' to 'catzsp'.
*
* Requires:
- * \li catzs is not NULL
- * \li catzsp is not NULL, *catzsp is NULL
+ * \li 'catzs' is a valid dns_catz_zones_t.
+ * \li 'catzsp' is not NULL and *catzsp is NULL.
*/
void
dns_catz_catzs_detach(dns_catz_zones_t **catzsp);
/*%<
- * Detach 'catzsp', free if no further references
+ * Detach 'catzsp', free if no further references.
*
* Requires:
- * \li catzsp is not NULL, *catzsp is not NULL
+ * \li 'catzsp' is not NULL and *catzsp is not NULL.
*/
void
dns_catz_catzs_set_view(dns_catz_zones_t *catzs, dns_view_t *view);
/*%<
- * Set a view for catzs
+ * Set a view for 'catzs'.
*
* Requires:
- * \li catzs is not NULL
- * \li catzs->view is NULL or catzs->view == view
+ * \li 'catzs' is a valid dns_catz_zones_t.
+ * \li 'catzs->view' is NULL or 'catzs->view' == 'view'.
*/
* If there is an update scheduled it replaces old db version with a new one.
*
* Requires:
- * \li db is a valid database
- * \li fn_arg is not NULL (casted to dns_catz_zones_t*)
+ * \li 'db' is a valid database.
+ * \li 'fn_arg' is not NULL (casted to dns_catz_zones_t*).
*/
void
dns_catz_update_taskaction(isc_task_t *task, isc_event_t *event);
/*%<
- * Task that launches dns_catz_update_from_db
+ * Task that launches dns_catz_update_from_db.
*
* Requires:
- * \li event is not NULL
+ * \li 'event' is not NULL.
*/
void
* then merges new catz into old catz.
*
* Requires:
- * \li db is a valid DB
- * \li catzs is not NULL
+ * \li 'db' is a valid DB.
+ * \li 'catzs' is a valid dns_catz_zones_t.
*
*/
* Called before reconfig, clears 'active' flag on all the zones in set
*
* Requires:
- * \li catzs is not NULL
+ * \li 'catzs' is a valid dns_catz_zones_t.
*
*/
* inactive and force reload of those with changed configuration.
*
* Requires:
- * \li catzs is not NULL
+ * \li 'catzs' is a valid dns_catz_zones_t.
*/
isc_result_t
/*%<
* Get the hashtable iterator on catalog zone members, point '*itp' to it.
*
+ * Requires:
+ * \li 'catzs' is a valid dns_catz_zones_t.
+ * \li 'itp' is not NULL and '*itp' is NULL.
+ *
* Returns:
* \li #ISC_R_SUCCESS -- success
* \li Any other value -- failure