Example #1
0
isc_result_t dns_rdatasetiter_next (dns_rdatasetiter_t * iterator)
{
    /*
     * Move the rdataset cursor to the next rdataset at the node (if any).
     */

    REQUIRE (DNS_RDATASETITER_VALID (iterator));

    return (iterator->methods->next (iterator));
}
Example #2
0
static isc_result_t
rdatasetiter_next(dns_rdatasetiter_t *iterator) {
	ecdb_rdatasetiter_t *ecdbiterator = (ecdb_rdatasetiter_t *)iterator;

	REQUIRE(DNS_RDATASETITER_VALID(iterator));

	ecdbiterator->current = ISC_LIST_NEXT(ecdbiterator->current, link);
	if (ecdbiterator->current == NULL)
		return (ISC_R_NOMORE);
	else
		return (ISC_R_SUCCESS);
}
Example #3
0
static isc_result_t
rdatasetiter_first(dns_rdatasetiter_t *iterator) {
	ecdb_rdatasetiter_t *ecdbiterator = (ecdb_rdatasetiter_t *)iterator;
	dns_ecdbnode_t *ecdbnode = (dns_ecdbnode_t *)iterator->node;

	REQUIRE(DNS_RDATASETITER_VALID(iterator));

	if (ISC_LIST_EMPTY(ecdbnode->rdatasets))
		return (ISC_R_NOMORE);
	ecdbiterator->current = ISC_LIST_HEAD(ecdbnode->rdatasets);
	return (ISC_R_SUCCESS);
}
Example #4
0
void dns_rdatasetiter_current (dns_rdatasetiter_t * iterator, dns_rdataset_t * rdataset)
{
    /*
     * Return the current rdataset.
     */

    REQUIRE (DNS_RDATASETITER_VALID (iterator));
    REQUIRE (DNS_RDATASET_VALID (rdataset));
    REQUIRE (!dns_rdataset_isassociated (rdataset));

    iterator->methods->current (iterator, rdataset);
}
Example #5
0
void dns_rdatasetiter_destroy (dns_rdatasetiter_t ** iteratorp)
{
    /*
     * Destroy '*iteratorp'.
     */

    REQUIRE (iteratorp != NULL);
    REQUIRE (DNS_RDATASETITER_VALID (*iteratorp));

    (*iteratorp)->methods->destroy (iteratorp);

    ENSURE (*iteratorp == NULL);
}
Example #6
0
static void
rdatasetiter_destroy(dns_rdatasetiter_t **iteratorp) {
	isc_mem_t *mctx;
	union {
		dns_rdatasetiter_t *rdatasetiterator;
		ecdb_rdatasetiter_t *ecdbiterator;
	} u;

	REQUIRE(iteratorp != NULL);
	REQUIRE(DNS_RDATASETITER_VALID(*iteratorp));

	u.rdatasetiterator = *iteratorp;

	mctx = u.ecdbiterator->common.db->mctx;
	u.ecdbiterator->common.magic = 0;

	dns_db_detachnode(u.ecdbiterator->common.db,
			  &u.ecdbiterator->common.node);
	isc_mem_put(mctx, u.ecdbiterator,
		    sizeof(ecdb_rdatasetiter_t));

	*iteratorp = NULL;
}