PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB` REDROOM
PHP 5.6.40
Preview: dbiterator.h Size: 7.25 KB
//usr/include/bind9/dns/dbiterator.h

/*
 * Copyright (C) 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 https://mozilla.org/MPL/2.0/.
 *
 * See the COPYRIGHT file distributed with this work for additional
 * information regarding copyright ownership.
 */


#ifndef DNS_DBITERATOR_H
#define DNS_DBITERATOR_H 1

/*****
 ***** Module Info
 *****/

/*! \file dns/dbiterator.h
 * \brief
 * The DNS DB Iterator interface allows iteration of all of the nodes in a
 * database.
 *
 * The dns_dbiterator_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_db_detachnode() on all
 * nodes returned.
 *
 * XXX &lt;more&gt; 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 <stdbool.h>

#include <isc/lang.h>
#include <isc/magic.h>

#include <dns/types.h>

ISC_LANG_BEGINDECLS

/*****
 ***** Types
 *****/

typedef struct dns_dbiteratormethods {
	void		(*destroy)(dns_dbiterator_t **iteratorp);
	isc_result_t	(*first)(dns_dbiterator_t *iterator);
	isc_result_t	(*last)(dns_dbiterator_t *iterator);
	isc_result_t	(*seek)(dns_dbiterator_t *iterator, dns_name_t *name);
	isc_result_t	(*prev)(dns_dbiterator_t *iterator);
	isc_result_t	(*next)(dns_dbiterator_t *iterator);
	isc_result_t	(*current)(dns_dbiterator_t *iterator,
				   dns_dbnode_t **nodep, dns_name_t *name);
	isc_result_t	(*pause)(dns_dbiterator_t *iterator);
	isc_result_t	(*origin)(dns_dbiterator_t *iterator,
				  dns_name_t *name);
} dns_dbiteratormethods_t;

#define DNS_DBITERATOR_MAGIC	     ISC_MAGIC('D','N','S','I')
#define DNS_DBITERATOR_VALID(dbi)    ISC_MAGIC_VALID(dbi, DNS_DBITERATOR_MAGIC)
/*%
 * This structure is actually just the common prefix of a DNS db
 * implementation's version of a dns_dbiterator_t.
 *
 * Clients may use the 'db' field of this structure.  Except for that field,
 * direct use of this structure by clients is forbidden.  DB implementations
 * may change the structure.  'magic' must be DNS_DBITERATOR_MAGIC for any of
 * the dns_dbiterator routines to work.  DB iterator implementations must
 * maintain all DB iterator invariants.
 */
struct dns_dbiterator {
	/* Unlocked. */
	unsigned int			magic;
	dns_dbiteratormethods_t *	methods;
	dns_db_t *			db;
	bool			relative_names;
	bool			cleaning;
};

void
dns_dbiterator_destroy(dns_dbiterator_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_dbiterator_first(dns_dbiterator_t *iterator);
/*%<
 * Move the node cursor to the first node in the database (if any).
 *
 * Requires:
 *\li	'iterator' is a valid iterator.
 *
 * Returns:
 *\li	#ISC_R_SUCCESS
 *\li	#ISC_R_NOMORE			There are no nodes in the database.
 *
 *\li	Other results are possible, depending on the DB implementation.
 */

isc_result_t
dns_dbiterator_last(dns_dbiterator_t *iterator);
/*%<
 * Move the node cursor to the last node in the database (if any).
 *
 * Requires:
 *\li	'iterator' is a valid iterator.
 *
 * Returns:
 *\li	#ISC_R_SUCCESS
 *\li	#ISC_R_NOMORE			There are no nodes in the database.
 *
 *\li	Other results are possible, depending on the DB implementation.
 */

isc_result_t
dns_dbiterator_seek(dns_dbiterator_t *iterator, dns_name_t *name);
/*%<
 * Move the node cursor to the node with name 'name'.
 *
 * Requires:
 *\li	'iterator' is a valid iterator.
 *
 *\li	'name' is a valid name.
 *
 * Returns:
 *\li	#ISC_R_SUCCESS
 *\li	#ISC_R_NOTFOUND
 *\li	#DNS_R_PARTIALMATCH
 *	(node is at name above requested named when name has children)
 *
 *\li	Other results are possible, depending on the DB implementation.
 */

isc_result_t
dns_dbiterator_prev(dns_dbiterator_t *iterator);
/*%<
 * Move the node cursor to the previous node in the database (if any).
 *
 * Requires:
 *\li	'iterator' is a valid iterator.
 *
 * Returns:
 *\li	#ISC_R_SUCCESS
 *\li	#ISC_R_NOMORE			There are no more nodes in the
 *					database.
 *
 *\li	Other results are possible, depending on the DB implementation.
 */

isc_result_t
dns_dbiterator_next(dns_dbiterator_t *iterator);
/*%<
 * Move the node cursor to the next node in the database (if any).
 *
 * Requires:
 *\li	'iterator' is a valid iterator.
 *
 * Returns:
 *\li	#ISC_R_SUCCESS
 *\li	#ISC_R_NOMORE			There are no more nodes in the
 *					database.
 *
 *\li	Other results are possible, depending on the DB implementation.
 */

isc_result_t
dns_dbiterator_current(dns_dbiterator_t *iterator, dns_dbnode_t **nodep,
		       dns_name_t *name);
/*%<
 * Return the current node.
 *
 * Notes:
 *\li	If 'name' is not NULL, it will be set to the name of the node.
 *
 * Requires:
 *\li	'iterator' is a valid iterator.
 *
 *\li	nodep != NULL && *nodep == NULL
 *
 *\li	The node cursor of 'iterator' is at a valid location (i.e. the
 *	result of last call to a cursor movement command was ISC_R_SUCCESS).
 *
 *\li	'name' is NULL, or is a valid name with a dedicated buffer.
 *
 * Returns:
 *
 *\li	#ISC_R_SUCCESS
 *\li	#DNS_R_NEWORIGIN			If this iterator was created with
 *					'relative_names' set to true,
 *					then #DNS_R_NEWORIGIN will be returned
 *					when the origin the names are
 *					relative to changes.  This result
 *					can occur only when 'name' is not
 *					NULL.  This is also a successful
 *					result.
 *
 *\li	Other results are possible, depending on the DB implementation.
 */

isc_result_t
dns_dbiterator_pause(dns_dbiterator_t *iterator);
/*%<
 * Pause iteration.
 *
 * Calling a cursor movement method or dns_dbiterator_current() may cause
 * database locks to be acquired.  Rather than reacquire these locks every
 * time one of these routines is called, the locks may simply be held.
 * Calling dns_dbiterator_pause() releases any such locks.  Iterator clients
 * should call this routine any time they are not going to execute another
 * iterator method in the immediate future.
 *
 * Requires:
 *\li	'iterator' is a valid iterator.
 *
 * Ensures:
 *\li	Any database locks being held for efficiency of iterator access are
 *	released.
 *
 * Returns:
 *\li	#ISC_R_SUCCESS
 *
 *\li	Other results are possible, depending on the DB implementation.
 */

isc_result_t
dns_dbiterator_origin(dns_dbiterator_t *iterator, dns_name_t *name);
/*%<
 * Return the origin to which returned node names are relative.
 *
 * Requires:
 *
 *\li	'iterator' is a valid relative_names iterator.
 *
 *\li	'name' is a valid name with a dedicated buffer.
 *
 * Returns:
 *
 *\li	#ISC_R_SUCCESS
 *\li	#ISC_R_NOSPACE
 *
 *\li	Other results are possible, depending on the DB implementation.
 */

void
dns_dbiterator_setcleanmode(dns_dbiterator_t *iterator, bool mode);
/*%<
 * Indicate that the given iterator is/is not cleaning the DB.
 *
 * Notes:
 *\li	When 'mode' is true,
 *
 * Requires:
 *\li	'iterator' is a valid iterator.
 */

ISC_LANG_ENDDECLS

#endif /* DNS_DBITERATOR_H */

Directory Contents

Dirs: 0 × Files: 97

Name Size Perms Modified Actions
13.90 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
7.07 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
22.07 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
3.29 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
807 B lrw-r--r-- 2025-11-06 07:45:36
Edit Download
3.91 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
8.44 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
2.22 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
11.56 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.43 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
21.53 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.96 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
6.49 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
45.96 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
7.25 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
3.09 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
6.82 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
16.04 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
10.37 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
4.57 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
5.50 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
11.83 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
9.14 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.20 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.68 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
4.72 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
809 B lrw-r--r-- 2025-11-06 07:45:36
Edit Download
722 B lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.19 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
8.11 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
3.96 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.62 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
3.37 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
2.73 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
2.13 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.58 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
8.03 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.03 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.25 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
9.24 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
4.06 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.16 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
3.87 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
2.86 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
11.02 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
12.35 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
38.11 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
36.25 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
4.81 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
2.86 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
7.84 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
4.44 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1007 B lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.95 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
5.83 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
2.05 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.89 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
39.67 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
2.42 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
21.11 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
2.20 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
2.51 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
21.03 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
3.83 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
4.40 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
60.14 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
2.24 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
10.89 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
19.75 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
9.07 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
892 B lrw-r--r-- 2025-11-06 07:45:36
Edit Download
10.09 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
4.13 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
6.48 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
7.05 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
13.88 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.67 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.52 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
2.13 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
8.11 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
13.14 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
3.07 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.66 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.03 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
7.45 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
2.88 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
8.19 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.90 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
13.83 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
1.61 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
6.99 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
868 B lrw-r--r-- 2025-11-06 07:45:36
Edit Download
34.45 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
2.86 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
59.44 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download
777 B lrw-r--r-- 2025-11-06 07:45:36
Edit Download
5.43 KB lrw-r--r-- 2025-11-06 07:45:36
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).
© 2026 REDROOM — Secure File Manager. All rights reserved. Built with ❤️ & Red Dark UI