1/* $NetBSD: rdatasetiter.c,v 1.1 2024/02/18 20:57:33 christos Exp $ */ 2 3/* 4 * Copyright (C) Internet Systems Consortium, Inc. ("ISC") 5 * 6 * SPDX-License-Identifier: MPL-2.0 7 * 8 * This Source Code Form is subject to the terms of the Mozilla Public 9 * License, v. 2.0. If a copy of the MPL was not distributed with this 10 * file, you can obtain one at https://mozilla.org/MPL/2.0/. 11 * 12 * See the COPYRIGHT file distributed with this work for additional 13 * information regarding copyright ownership. 14 */ 15 16/*! \file */ 17 18#include <stddef.h> 19 20#include <isc/util.h> 21 22#include <dns/rdataset.h> 23#include <dns/rdatasetiter.h> 24 25void 26dns_rdatasetiter_destroy(dns_rdatasetiter_t **iteratorp) { 27 /* 28 * Destroy '*iteratorp'. 29 */ 30 31 REQUIRE(iteratorp != NULL); 32 REQUIRE(DNS_RDATASETITER_VALID(*iteratorp)); 33 34 (*iteratorp)->methods->destroy(iteratorp); 35 36 ENSURE(*iteratorp == NULL); 37} 38 39isc_result_t 40dns_rdatasetiter_first(dns_rdatasetiter_t *iterator) { 41 /* 42 * Move the rdataset cursor to the first rdataset at the node (if any). 43 */ 44 45 REQUIRE(DNS_RDATASETITER_VALID(iterator)); 46 47 return (iterator->methods->first(iterator)); 48} 49 50isc_result_t 51dns_rdatasetiter_next(dns_rdatasetiter_t *iterator) { 52 /* 53 * Move the rdataset cursor to the next rdataset at the node (if any). 54 */ 55 56 REQUIRE(DNS_RDATASETITER_VALID(iterator)); 57 58 return (iterator->methods->next(iterator)); 59} 60 61void 62dns_rdatasetiter_current(dns_rdatasetiter_t *iterator, 63 dns_rdataset_t *rdataset) { 64 /* 65 * Return the current rdataset. 66 */ 67 68 REQUIRE(DNS_RDATASETITER_VALID(iterator)); 69 REQUIRE(DNS_RDATASET_VALID(rdataset)); 70 REQUIRE(!dns_rdataset_isassociated(rdataset)); 71 72 iterator->methods->current(iterator, rdataset); 73} 74