GRAYBYTE WORDPRESS FILE MANAGER3595

Server IP : 198.54.121.189 / Your IP : 216.73.216.140
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /usr/include/bind9/dns/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /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 <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 <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 */

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
February 21 2025 08:48:18
root / root
0755
acache.h
13.898 KB
February 20 2025 09:05:25
root / root
0644
acl.h
7.072 KB
February 20 2025 09:05:25
root / root
0644
adb.h
22.065 KB
February 20 2025 09:05:25
root / root
0644
badcache.h
3.29 KB
February 20 2025 09:05:25
root / root
0644
bit.h
0.788 KB
February 20 2025 09:05:25
root / root
0644
byaddr.h
3.908 KB
February 20 2025 09:05:25
root / root
0644
cache.h
8.44 KB
February 20 2025 09:05:25
root / root
0644
callbacks.h
2.218 KB
February 20 2025 09:05:25
root / root
0644
catz.h
11.556 KB
February 20 2025 09:05:25
root / root
0644
cert.h
1.432 KB
February 20 2025 09:05:25
root / root
0644
client.h
21.525 KB
February 20 2025 09:05:25
root / root
0644
clientinfo.h
1.959 KB
February 20 2025 09:05:25
root / root
0644
compress.h
6.49 KB
February 20 2025 09:05:25
root / root
0644
db.h
45.476 KB
February 20 2025 09:05:25
root / root
0644
dbiterator.h
7.248 KB
February 20 2025 09:05:25
root / root
0644
dbtable.h
3.091 KB
February 20 2025 09:05:25
root / root
0644
diff.h
6.816 KB
February 20 2025 09:05:25
root / root
0644
dispatch.h
16.042 KB
February 20 2025 09:05:25
root / root
0644
dlz.h
10.369 KB
February 20 2025 09:05:25
root / root
0644
dlz_dlopen.h
4.567 KB
February 20 2025 09:05:25
root / root
0644
dns64.h
5.503 KB
February 20 2025 09:05:25
root / root
0644
dnssec.h
11.831 KB
February 20 2025 09:05:25
root / root
0644
dnstap.h
9.145 KB
February 20 2025 09:05:25
root / root
0644
ds.h
1.196 KB
February 20 2025 09:05:25
root / root
0644
dsdigest.h
1.682 KB
February 20 2025 09:05:25
root / root
0644
dyndb.h
4.722 KB
February 20 2025 09:05:25
root / root
0644
ecdb.h
0.79 KB
February 20 2025 09:05:25
root / root
0644
edns.h
0.705 KB
February 20 2025 09:05:25
root / root
0644
enumclass.h
1.191 KB
February 20 2025 09:05:25
root / root
0644
enumtype.h
8.105 KB
February 20 2025 09:05:25
root / root
0644
events.h
3.964 KB
February 20 2025 09:05:25
root / root
0644
fixedname.h
1.624 KB
February 20 2025 09:05:25
root / root
0644
forward.h
3.371 KB
February 20 2025 09:05:25
root / root
0644
geoip.h
2.727 KB
February 20 2025 09:05:25
root / root
0644
ipkeylist.h
2.135 KB
February 20 2025 09:05:25
root / root
0644
iptable.h
1.583 KB
February 20 2025 09:05:25
root / root
0644
journal.h
8.034 KB
February 20 2025 09:05:25
root / root
0644
keydata.h
1.034 KB
February 20 2025 09:05:25
root / root
0644
keyflags.h
1.248 KB
February 20 2025 09:05:25
root / root
0644
keytable.h
9.24 KB
February 20 2025 09:05:25
root / root
0644
keyvalues.h
4.062 KB
February 20 2025 09:05:25
root / root
0644
lib.h
1.164 KB
February 20 2025 09:05:25
root / root
0644
log.h
3.871 KB
February 20 2025 09:05:25
root / root
0644
lookup.h
2.855 KB
February 20 2025 09:05:25
root / root
0644
master.h
11.024 KB
February 20 2025 09:05:25
root / root
0644
masterdump.h
12.351 KB
February 20 2025 09:05:25
root / root
0644
message.h
37.922 KB
February 20 2025 09:05:25
root / root
0644
name.h
36.245 KB
February 20 2025 09:05:25
root / root
0644
ncache.h
4.813 KB
February 20 2025 09:05:25
root / root
0644
nsec.h
2.859 KB
February 20 2025 09:05:25
root / root
0644
nsec3.h
7.844 KB
February 20 2025 09:05:25
root / root
0644
nta.h
4.441 KB
February 20 2025 09:05:25
root / root
0644
opcode.h
0.983 KB
February 20 2025 09:05:25
root / root
0644
order.h
1.952 KB
February 20 2025 09:05:25
root / root
0644
peer.h
5.826 KB
February 20 2025 09:05:25
root / root
0644
portlist.h
2.052 KB
February 20 2025 09:05:25
root / root
0644
private.h
1.89 KB
February 20 2025 09:05:25
root / root
0644
rbt.h
39.666 KB
February 20 2025 09:05:25
root / root
0644
rcode.h
2.423 KB
February 20 2025 09:05:25
root / root
0644
rdata.h
21.106 KB
February 20 2025 09:05:25
root / root
0644
rdataclass.h
2.204 KB
February 20 2025 09:05:25
root / root
0644
rdatalist.h
2.509 KB
February 20 2025 09:05:25
root / root
0644
rdataset.h
21.031 KB
February 20 2025 09:05:25
root / root
0644
rdatasetiter.h
3.834 KB
February 20 2025 09:05:25
root / root
0644
rdataslab.h
4.281 KB
February 20 2025 09:05:25
root / root
0644
rdatastruct.h
60.141 KB
February 20 2025 09:05:25
root / root
0644
rdatatype.h
2.244 KB
February 20 2025 09:05:25
root / root
0644
request.h
10.895 KB
February 20 2025 09:05:25
root / root
0644
resolver.h
19.753 KB
February 20 2025 09:05:25
root / root
0644
result.h
9.066 KB
February 20 2025 09:05:25
root / root
0644
rootns.h
0.871 KB
February 20 2025 09:05:25
root / root
0644
rpz.h
10.093 KB
February 20 2025 09:05:25
root / root
0644
rriterator.h
4.131 KB
February 20 2025 09:05:25
root / root
0644
rrl.h
6.484 KB
February 20 2025 09:05:25
root / root
0644
sdb.h
7.055 KB
February 20 2025 09:05:25
root / root
0644
sdlz.h
13.881 KB
February 20 2025 09:05:25
root / root
0644
secalg.h
1.666 KB
February 20 2025 09:05:25
root / root
0644
secproto.h
1.521 KB
February 20 2025 09:05:25
root / root
0644
soa.h
2.135 KB
February 20 2025 09:05:25
root / root
0644
ssu.h
8.113 KB
February 20 2025 09:05:25
root / root
0644
stats.h
13.136 KB
February 20 2025 09:05:25
root / root
0644
tcpmsg.h
3.071 KB
February 20 2025 09:05:25
root / root
0644
time.h
1.655 KB
February 20 2025 09:05:25
root / root
0644
timer.h
1.026 KB
February 20 2025 09:05:25
root / root
0644
tkey.h
7.452 KB
February 20 2025 09:05:25
root / root
0644
tsec.h
2.88 KB
February 20 2025 09:05:25
root / root
0644
tsig.h
8.188 KB
February 20 2025 09:05:25
root / root
0644
ttl.h
1.899 KB
February 20 2025 09:05:25
root / root
0644
types.h
13.826 KB
February 20 2025 09:05:25
root / root
0644
update.h
1.614 KB
February 20 2025 09:05:25
root / root
0644
validator.h
6.993 KB
February 20 2025 09:05:25
root / root
0644
version.h
0.848 KB
February 20 2025 09:05:25
root / root
0644
view.h
34.447 KB
February 20 2025 09:05:25
root / root
0644
xfrin.h
2.855 KB
February 20 2025 09:05:25
root / root
0644
zone.h
59.438 KB
February 20 2025 09:05:25
root / root
0644
zonekey.h
0.759 KB
February 20 2025 09:05:25
root / root
0644
zt.h
5.432 KB
February 20 2025 09:05:25
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF