Lines Matching defs:diff
1 /* $NetBSD: diff.c,v 1.10 2025/01/26 16:25:22 christos Exp $ */
32 #include <dns/diff.h>
129 dns_diff_init(isc_mem_t *mctx, dns_diff_t *diff) {
130 diff->mctx = mctx;
131 ISC_LIST_INIT(diff->tuples);
132 diff->magic = DNS_DIFF_MAGIC;
133 diff->size = 0;
137 dns_diff_clear(dns_diff_t *diff) {
139 REQUIRE(DNS_DIFF_VALID(diff));
140 while ((t = ISC_LIST_HEAD(diff->tuples)) != NULL) {
141 ISC_LIST_UNLINK(diff->tuples, t, link);
144 diff->size = 0;
145 ENSURE(ISC_LIST_EMPTY(diff->tuples));
149 dns_diff_append(dns_diff_t *diff, dns_difftuple_t **tuplep) {
150 REQUIRE(DNS_DIFF_VALID(diff));
151 ISC_LIST_APPEND(diff->tuples, *tuplep, link);
152 diff->size += 1;
157 dns_diff_is_boundary(const dns_diff_t *diff, dns_name_t *new_name) {
158 REQUIRE(DNS_DIFF_VALID(diff));
161 if (ISC_LIST_EMPTY(diff->tuples)) {
165 dns_difftuple_t *tail = ISC_LIST_TAIL(diff->tuples);
170 dns_diff_size(const dns_diff_t *diff) {
171 REQUIRE(DNS_DIFF_VALID(diff));
172 return diff->size;
178 dns_diff_appendminimal(dns_diff_t *diff, dns_difftuple_t **tuplep) {
181 REQUIRE(DNS_DIFF_VALID(diff));
196 for (ot = ISC_LIST_HEAD(diff->tuples); ot != NULL; ot = next_ot) {
202 ISC_LIST_UNLINK(diff->tuples, ot, link);
203 INSIST(diff->size > 0);
204 diff->size -= 1;
207 UNEXPECTED_ERROR("unexpected non-minimal diff");
217 ISC_LIST_APPEND(diff->tuples, *tuplep, link);
218 diff->size += 1;
290 diff_apply(const dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver,
299 REQUIRE(DNS_DIFF_VALID(diff));
302 t = ISC_LIST_HEAD(diff->tuples);
311 * This will cause an empty node to be created if the diff
341 * diff into "rdatalist". This uses the rdata link
342 * field, not the diff link field, so the structure
343 * of the diff itself is not affected.
528 dns_diff_apply(const dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver) {
529 return diff_apply(diff, db, ver, true);
533 dns_diff_applysilently(const dns_diff_t *diff, dns_db_t *db,
535 return diff_apply(diff, db, ver, false);
541 dns_diff_load(const dns_diff_t *diff, dns_rdatacallbacks_t *callbacks) {
545 REQUIRE(DNS_DIFF_VALID(diff));
551 t = ISC_LIST_HEAD(diff->tuples);
621 dns_diff_sort(dns_diff_t *diff, dns_diff_compare_func *compare) {
626 REQUIRE(DNS_DIFF_VALID(diff));
628 for (p = ISC_LIST_HEAD(diff->tuples); p != NULL;
636 v = isc_mem_cget(diff->mctx, length, sizeof(dns_difftuple_t *));
638 p = ISC_LIST_HEAD(diff->tuples);
640 ISC_LIST_UNLINK(diff->tuples, p, link);
642 INSIST(ISC_LIST_HEAD(diff->tuples) == NULL);
645 ISC_LIST_APPEND(diff->tuples, v[i], link);
647 isc_mem_cput(diff->mctx, v, length, sizeof(dns_difftuple_t *));
676 dns_diff_print(const dns_diff_t *diff, FILE *file) {
683 REQUIRE(DNS_DIFF_VALID(diff));
685 mem = isc_mem_get(diff->mctx, size);
687 for (t = ISC_LIST_HEAD(diff->tuples); t != NULL;
704 isc_mem_put(diff->mctx, mem, size);
706 mem = isc_mem_get(diff->mctx, size);
750 isc_mem_put(diff->mctx, mem, size);