Coverage Report

Created: 2026-01-10 06:28

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/bind9/lib/dns/dbiterator.c
Line
Count
Source
1
/*
2
 * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
3
 *
4
 * SPDX-License-Identifier: MPL-2.0
5
 *
6
 * This Source Code Form is subject to the terms of the Mozilla Public
7
 * License, v. 2.0. If a copy of the MPL was not distributed with this
8
 * file, you can obtain one at https://mozilla.org/MPL/2.0/.
9
 *
10
 * See the COPYRIGHT file distributed with this work for additional
11
 * information regarding copyright ownership.
12
 */
13
14
/*! \file */
15
16
#include <stdbool.h>
17
18
#include <isc/util.h>
19
20
#include <dns/dbiterator.h>
21
#include <dns/name.h>
22
23
void
24
0
dns__dbiterator_destroy(dns_dbiterator_t **iteratorp DNS__DB_FLARG) {
25
0
  REQUIRE(iteratorp != NULL);
26
0
  REQUIRE(DNS_DBITERATOR_VALID(*iteratorp));
27
28
0
  (*iteratorp)->methods->destroy(iteratorp DNS__DB_FLARG_PASS);
29
30
0
  ENSURE(*iteratorp == NULL);
31
0
}
32
33
isc_result_t
34
0
dns__dbiterator_first(dns_dbiterator_t *iterator DNS__DB_FLARG) {
35
0
  REQUIRE(DNS_DBITERATOR_VALID(iterator));
36
37
0
  isc_result_t result =
38
0
    iterator->methods->first(iterator DNS__DB_FLARG_PASS);
39
0
  ENSURE(result == ISC_R_SUCCESS || result == ISC_R_NOMORE);
40
0
  return result;
41
0
}
42
43
isc_result_t
44
0
dns__dbiterator_last(dns_dbiterator_t *iterator DNS__DB_FLARG) {
45
0
  REQUIRE(DNS_DBITERATOR_VALID(iterator));
46
47
0
  isc_result_t result =
48
0
    iterator->methods->last(iterator DNS__DB_FLARG_PASS);
49
0
  ENSURE(result == ISC_R_SUCCESS || result == ISC_R_NOMORE);
50
0
  return result;
51
0
}
52
53
isc_result_t
54
dns__dbiterator_seek(dns_dbiterator_t *iterator,
55
0
         const dns_name_t *name DNS__DB_FLARG) {
56
0
  REQUIRE(DNS_DBITERATOR_VALID(iterator));
57
58
0
  return iterator->methods->seek(iterator, name DNS__DB_FLARG_PASS);
59
0
}
60
61
isc_result_t
62
dns__dbiterator_seek3(dns_dbiterator_t *iterator,
63
0
          const dns_name_t *name DNS__DB_FLARG) {
64
0
  REQUIRE(DNS_DBITERATOR_VALID(iterator));
65
66
0
  return iterator->methods->seek3(iterator, name DNS__DB_FLARG_PASS);
67
0
}
68
69
isc_result_t
70
0
dns__dbiterator_prev(dns_dbiterator_t *iterator DNS__DB_FLARG) {
71
0
  REQUIRE(DNS_DBITERATOR_VALID(iterator));
72
73
0
  isc_result_t result =
74
0
    iterator->methods->prev(iterator DNS__DB_FLARG_PASS);
75
0
  ENSURE(result == ISC_R_SUCCESS || result == ISC_R_NOMORE);
76
0
  return result;
77
0
}
78
79
isc_result_t
80
0
dns__dbiterator_next(dns_dbiterator_t *iterator DNS__DB_FLARG) {
81
0
  REQUIRE(DNS_DBITERATOR_VALID(iterator));
82
83
0
  isc_result_t result =
84
0
    iterator->methods->next(iterator DNS__DB_FLARG_PASS);
85
0
  ENSURE(result == ISC_R_SUCCESS || result == ISC_R_NOMORE);
86
0
  return result;
87
0
}
88
89
isc_result_t
90
dns__dbiterator_current(dns_dbiterator_t *iterator, dns_dbnode_t **nodep,
91
0
      dns_name_t *name DNS__DB_FLARG) {
92
0
  REQUIRE(DNS_DBITERATOR_VALID(iterator));
93
0
  REQUIRE(nodep != NULL && *nodep == NULL);
94
0
  REQUIRE(name == NULL || dns_name_hasbuffer(name));
95
96
0
  return iterator->methods->current(iterator, nodep,
97
0
            name DNS__DB_FLARG_PASS);
98
0
}
99
100
isc_result_t
101
0
dns_dbiterator_pause(dns_dbiterator_t *iterator) {
102
0
  REQUIRE(DNS_DBITERATOR_VALID(iterator));
103
104
0
  return iterator->methods->pause(iterator);
105
0
}
106
107
isc_result_t
108
0
dns_dbiterator_origin(dns_dbiterator_t *iterator, dns_name_t *name) {
109
0
  REQUIRE(DNS_DBITERATOR_VALID(iterator));
110
0
  REQUIRE(iterator->relative_names);
111
0
  REQUIRE(dns_name_hasbuffer(name));
112
113
0
  return iterator->methods->origin(iterator, name);
114
0
}