Lines Matching refs:it

43 dns_rriterator_init(dns_rriterator_t *it, dns_db_t *db, dns_dbversion_t *ver,
47 it->magic = RRITERATOR_MAGIC;
48 it->db = db;
49 it->dbit = NULL;
50 it->ver = ver;
51 it->now = now;
52 it->node = NULL;
53 result = dns_db_createiterator(it->db, 0, &it->dbit);
56 it->rdatasetit = NULL;
57 dns_rdata_init(&it->rdata);
58 dns_rdataset_init(&it->rdataset);
59 dns_fixedname_init(&it->fixedname);
60 INSIST(! dns_rdataset_isassociated(&it->rdataset));
61 it->result = ISC_R_SUCCESS;
62 return (it->result);
66 dns_rriterator_first(dns_rriterator_t *it) {
67 REQUIRE(VALID_RRITERATOR(it));
69 if (dns_rdataset_isassociated(&it->rdataset))
70 dns_rdataset_disassociate(&it->rdataset);
71 if (it->rdatasetit != NULL)
72 dns_rdatasetiter_destroy(&it->rdatasetit);
73 if (it->node != NULL)
74 dns_db_detachnode(it->db, &it->node);
75 it->result = dns_dbiterator_first(it->dbit);
81 while (it->result == ISC_R_SUCCESS) {
82 it->result = dns_dbiterator_current(it->dbit, &it->node,
83 dns_fixedname_name(&it->fixedname));
84 if (it->result != ISC_R_SUCCESS)
85 return (it->result);
87 it->result = dns_db_allrdatasets(it->db, it->node, it->ver,
88 it->now, &it->rdatasetit);
89 if (it->result != ISC_R_SUCCESS)
90 return (it->result);
92 it->result = dns_rdatasetiter_first(it->rdatasetit);
93 if (it->result != ISC_R_SUCCESS) {
97 dns_rdatasetiter_destroy(&it->rdatasetit);
98 dns_db_detachnode(it->db, &it->node);
99 it->result = dns_dbiterator_next(it->dbit);
102 dns_rdatasetiter_current(it->rdatasetit, &it->rdataset);
103 it->rdataset.attributes |= DNS_RDATASETATTR_LOADORDER;
104 it->result = dns_rdataset_first(&it->rdataset);
105 return (it->result);
107 return (it->result);
111 dns_rriterator_nextrrset(dns_rriterator_t *it) {
112 REQUIRE(VALID_RRITERATOR(it));
113 if (dns_rdataset_isassociated(&it->rdataset))
114 dns_rdataset_disassociate(&it->rdataset);
115 it->result = dns_rdatasetiter_next(it->rdatasetit);
120 while (it->result == ISC_R_NOMORE) {
121 dns_rdatasetiter_destroy(&it->rdatasetit);
122 dns_db_detachnode(it->db, &it->node);
123 it->result = dns_dbiterator_next(it->dbit);
124 if (it->result == ISC_R_NOMORE) {
126 return (it->result);
128 if (it->result != ISC_R_SUCCESS)
129 return (it->result);
130 it->result = dns_dbiterator_current(it->dbit, &it->node,
131 dns_fixedname_name(&it->fixedname));
132 if (it->result != ISC_R_SUCCESS)
133 return (it->result);
134 it->result = dns_db_allrdatasets(it->db, it->node, it->ver,
135 it->now, &it->rdatasetit);
136 if (it->result != ISC_R_SUCCESS)
137 return (it->result);
138 it->result = dns_rdatasetiter_first(it->rdatasetit);
140 if (it->result != ISC_R_SUCCESS)
141 return (it->result);
142 dns_rdatasetiter_current(it->rdatasetit, &it->rdataset);
143 it->rdataset.attributes |= DNS_RDATASETATTR_LOADORDER;
144 it->result = dns_rdataset_first(&it->rdataset);
145 return (it->result);
149 dns_rriterator_next(dns_rriterator_t *it) {
150 REQUIRE(VALID_RRITERATOR(it));
151 if (it->result != ISC_R_SUCCESS)
152 return (it->result);
154 INSIST(it->dbit != NULL);
155 INSIST(it->node != NULL);
156 INSIST(it->rdatasetit != NULL);
158 it->result = dns_rdataset_next(&it->rdataset);
159 if (it->result == ISC_R_NOMORE)
160 return (dns_rriterator_nextrrset(it));
161 return (it->result);
165 dns_rriterator_pause(dns_rriterator_t *it) {
166 REQUIRE(VALID_RRITERATOR(it));
167 RUNTIME_CHECK(dns_dbiterator_pause(it->dbit) == ISC_R_SUCCESS);
171 dns_rriterator_destroy(dns_rriterator_t *it) {
172 REQUIRE(VALID_RRITERATOR(it));
173 if (dns_rdataset_isassociated(&it->rdataset))
174 dns_rdataset_disassociate(&it->rdataset);
175 if (it->rdatasetit != NULL)
176 dns_rdatasetiter_destroy(&it->rdatasetit);
177 if (it->node != NULL)
178 dns_db_detachnode(it->db, &it->node);
179 dns_dbiterator_destroy(&it->dbit);
183 dns_rriterator_current(dns_rriterator_t *it, dns_name_t **name,
188 REQUIRE(VALID_RRITERATOR(it));
189 REQUIRE(it->result == ISC_R_SUCCESS);
193 *name = dns_fixedname_name(&it->fixedname);
194 *ttl = it->rdataset.ttl;
196 dns_rdata_reset(&it->rdata);
197 dns_rdataset_current(&it->rdataset, &it->rdata);
200 *rdataset = &it->rdataset;
203 *rdata = &it->rdata;