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)); }
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); }
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); }
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); }
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); }
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; }