Home | History | Annotate | Line # | Download | only in dns
      1 /*	$NetBSD: rdatasetiter.c,v 1.6 2025/01/26 16:25:24 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 
     25 void
     26 dns__rdatasetiter_destroy(dns_rdatasetiter_t **iteratorp DNS__DB_FLARG) {
     27 	/*
     28 	 * Destroy '*iteratorp'.
     29 	 */
     30 
     31 	REQUIRE(iteratorp != NULL);
     32 	REQUIRE(DNS_RDATASETITER_VALID(*iteratorp));
     33 
     34 	(*iteratorp)->methods->destroy(iteratorp DNS__DB_FLARG_PASS);
     35 
     36 	ENSURE(*iteratorp == NULL);
     37 }
     38 
     39 isc_result_t
     40 dns__rdatasetiter_first(dns_rdatasetiter_t *iterator DNS__DB_FLARG) {
     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 DNS__DB_FLARG_PASS);
     48 }
     49 
     50 isc_result_t
     51 dns__rdatasetiter_next(dns_rdatasetiter_t *iterator DNS__DB_FLARG) {
     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 DNS__DB_FLARG_PASS);
     59 }
     60 
     61 void
     62 dns__rdatasetiter_current(dns_rdatasetiter_t *iterator,
     63 			  dns_rdataset_t *rdataset DNS__DB_FLARG) {
     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 DNS__DB_FLARG_PASS);
     73 }
     74