a134177ed9f82189504191d90f3ed9e97c2b47cbTinderbox User * Copyright (C) 2009, 2011, 2012, 2015, 2016 Internet Systems Consortium, Inc. ("ISC")
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * file, You can obtain one at http://mozilla.org/MPL/2.0/.
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews *** RRiterator methods
2047977ce2dfcfe3a0fa2d638c3242841310fad3Mark Andrewsdns_rriterator_init(dns_rriterator_t *it, dns_db_t *db, dns_dbversion_t *ver,
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews result = dns_db_createiterator(it->db, 0, &it->dbit);
0da29be670f6fa5b2a6320d9d843bc8b802c153aMark Andrews INSIST(! dns_rdataset_isassociated(&it->rdataset));
058e44186b74531402c1f99088eb9dbe4926f8daMark Andrews /* Reset state */
37dee1ff94960a61243f611c0f87f8c316815c53Mark Andrews * The top node may be empty when out of zone glue exists.
394f4aec2189750d7f861d00f97fe28ffcd9f659Mark Andrews * Walk the tree to find the first node with data.
37dee1ff94960a61243f611c0f87f8c316815c53Mark Andrews it->result = dns_dbiterator_current(it->dbit, &it->node,
aaaf8d4f4873d21e55c3ffb4f656203d08339865Mark Andrews it->result = dns_db_allrdatasets(it->db, it->node, it->ver,
37dee1ff94960a61243f611c0f87f8c316815c53Mark Andrews it->result = dns_rdatasetiter_first(it->rdatasetit);
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews * This node is empty. Try next node.
3dd63ba00f91f4d54ba45ba1831375950758c0a7Mark Andrews dns_rdatasetiter_current(it->rdatasetit, &it->rdataset);
3dd63ba00f91f4d54ba45ba1831375950758c0a7Mark Andrews it->rdataset.attributes |= DNS_RDATASETATTR_LOADORDER;
3dd63ba00f91f4d54ba45ba1831375950758c0a7Mark Andrews it->result = dns_rdataset_first(&it->rdataset);
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrewsdns_rriterator_nextrrset(dns_rriterator_t *it) {
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews it->result = dns_rdatasetiter_next(it->rdatasetit);
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews * The while loop body is executed more than once
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews * only when an empty dbnode needs to be skipped.
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews /* We are at the end of the entire database. */
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews it->result = dns_dbiterator_current(it->dbit, &it->node,
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews it->result = dns_db_allrdatasets(it->db, it->node, it->ver,
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews it->result = dns_rdatasetiter_first(it->rdatasetit);
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews dns_rdatasetiter_current(it->rdatasetit, &it->rdataset);
75ae74f8fd0847817bce2db7c868b179db67f019Mark Andrews it->rdataset.attributes |= DNS_RDATASETATTR_LOADORDER;
75ae74f8fd0847817bce2db7c868b179db67f019Mark Andrews it->result = dns_rdataset_first(&it->rdataset);
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews RUNTIME_CHECK(dns_dbiterator_pause(it->dbit) == ISC_R_SUCCESS);
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Huntdns_rriterator_current(dns_rriterator_t *it, dns_name_t **name,
0b09763c354ec91fb352b6b4cea383bd0195b2d8Mark Andrews REQUIRE(rdataset == NULL || *rdataset == NULL);