/usr/include/dns/rdatasetiter.h is in libbind-dev 1:9.11.3+dfsg-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | /*
* Copyright (C) 1999-2001, 2004-2007, 2016 Internet Systems Consortium, Inc. ("ISC")
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
/* $Id: rdatasetiter.h,v 1.21 2007/06/19 23:47:17 tbox Exp $ */
#ifndef DNS_RDATASETITER_H
#define DNS_RDATASETITER_H 1
/*****
***** Module Info
*****/
/*! \file dns/rdatasetiter.h
* \brief
* The DNS Rdataset Iterator interface allows iteration of all of the
* rdatasets at a node.
*
* The dns_rdatasetiter_t type is like a "virtual class". To actually use
* it, an implementation of the class is required. This implementation is
* supplied by the database.
*
* It is the client's responsibility to call dns_rdataset_disassociate()
* on all rdatasets returned.
*
* XXX more XXX
*
* MP:
*\li The iterator itself is not locked. The caller must ensure
* synchronization.
*
*\li The iterator methods ensure appropriate database locking.
*
* Reliability:
*\li No anticipated impact.
*
* Resources:
*\li TBS
*
* Security:
*\li No anticipated impact.
*
* Standards:
*\li None.
*/
/*****
***** Imports
*****/
#include <isc/lang.h>
#include <isc/magic.h>
#include <isc/stdtime.h>
#include <dns/types.h>
ISC_LANG_BEGINDECLS
/*****
***** Types
*****/
typedef struct dns_rdatasetitermethods {
void (*destroy)(dns_rdatasetiter_t **iteratorp);
isc_result_t (*first)(dns_rdatasetiter_t *iterator);
isc_result_t (*next)(dns_rdatasetiter_t *iterator);
void (*current)(dns_rdatasetiter_t *iterator,
dns_rdataset_t *rdataset);
} dns_rdatasetitermethods_t;
#define DNS_RDATASETITER_MAGIC ISC_MAGIC('D','N','S','i')
#define DNS_RDATASETITER_VALID(i) ISC_MAGIC_VALID(i, DNS_RDATASETITER_MAGIC)
/*%
* This structure is actually just the common prefix of a DNS db
* implementation's version of a dns_rdatasetiter_t.
* \brief
* Direct use of this structure by clients is forbidden. DB implementations
* may change the structure. 'magic' must be #DNS_RDATASETITER_MAGIC for
* any of the dns_rdatasetiter routines to work. DB implementations must
* maintain all DB rdataset iterator invariants.
*/
struct dns_rdatasetiter {
/* Unlocked. */
unsigned int magic;
dns_rdatasetitermethods_t * methods;
dns_db_t * db;
dns_dbnode_t * node;
dns_dbversion_t * version;
isc_stdtime_t now;
};
void
dns_rdatasetiter_destroy(dns_rdatasetiter_t **iteratorp);
/*%<
* Destroy '*iteratorp'.
*
* Requires:
*
*\li '*iteratorp' is a valid iterator.
*
* Ensures:
*
*\li All resources used by the iterator are freed.
*
*\li *iteratorp == NULL.
*/
isc_result_t
dns_rdatasetiter_first(dns_rdatasetiter_t *iterator);
/*%<
* Move the rdataset cursor to the first rdataset at the node (if any).
*
* Requires:
*\li 'iterator' is a valid iterator.
*
* Returns:
*\li ISC_R_SUCCESS
*\li ISC_R_NOMORE There are no rdatasets at the node.
*
*\li Other results are possible, depending on the DB implementation.
*/
isc_result_t
dns_rdatasetiter_next(dns_rdatasetiter_t *iterator);
/*%<
* Move the rdataset cursor to the next rdataset at the node (if any).
*
* Requires:
*\li 'iterator' is a valid iterator.
*
* Returns:
*\li ISC_R_SUCCESS
*\li ISC_R_NOMORE There are no more rdatasets at the
* node.
*
*\li Other results are possible, depending on the DB implementation.
*/
void
dns_rdatasetiter_current(dns_rdatasetiter_t *iterator,
dns_rdataset_t *rdataset);
/*%<
* Return the current rdataset.
*
* Requires:
*\li 'iterator' is a valid iterator.
*
*\li 'rdataset' is a valid, disassociated rdataset.
*
*\li The rdataset cursor of 'iterator' is at a valid location (i.e. the
* result of last call to a cursor movement command was #ISC_R_SUCCESS).
*/
ISC_LANG_ENDDECLS
#endif /* DNS_RDATASETITER_H */
|