GRAYBYTE WORDPRESS FILE MANAGER8675

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//catz.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_CATZ_H
#define DNS_CATZ_H 1

#include <inttypes.h>
#include <stdbool.h>

#include <isc/ht.h>
#include <isc/lang.h>
#include <isc/rwlock.h>
#include <isc/time.h>
#include <isc/timer.h>

#include <dns/db.h>
#include <dns/fixedname.h>
#include <dns/ipkeylist.h>
#include <dns/rdata.h>
#include <dns/types.h>

ISC_LANG_BEGINDECLS

#define DNS_CATZ_ERROR_LEVEL	ISC_LOG_WARNING
#define DNS_CATZ_INFO_LEVEL	ISC_LOG_INFO
#define DNS_CATZ_DEBUG_LEVEL1	ISC_LOG_DEBUG(1)
#define DNS_CATZ_DEBUG_LEVEL2	ISC_LOG_DEBUG(2)
#define DNS_CATZ_DEBUG_LEVEL3	ISC_LOG_DEBUG(3)
#define DNS_CATZ_DEBUG_QUIET	(DNS_CATZ_DEBUG_LEVEL3+1)

/*
 * Catalog Zones functions and structures.
 */

/*
 * Options for a member zone in a catalog
 */
struct dns_catz_entry_options {
	/*
	 * Options that can be overridden in catalog zone
	 */
	/* default-masters definition */
	dns_ipkeylist_t masters;

	/* both as text in config format, NULL if none */
	isc_buffer_t *allow_query;
	isc_buffer_t *allow_transfer;

	/*
	 * Options that are only set in named.conf
	 */
	/* zone-directory definition */
	char *zonedir;

	/* zone should not be stored on disk (no 'file' statement in def */
	bool in_memory;
	/*
	 * Minimal interval between catalog zone updates, if a new version
	 * of catalog zone is received before this time the update will be
	 * postponed. This is a global option for the whole catalog zone.
	 */
	uint32_t min_update_interval;
};

void
dns_catz_options_init(dns_catz_options_t *options);
/*%<
 * Initialize 'options' to NULL values.
 *
 * Requires:
 * \li	'options' to be non NULL.
 */

void
dns_catz_options_free(dns_catz_options_t *options, isc_mem_t *mctx);
/*%<
 * Free 'options' contents into 'mctx'. ('options' itself is not freed.)
 *
 * Requires:
 * \li	'options' to be non NULL.
 * \li	'mctx' to be a valid memory context.
 */

isc_result_t
dns_catz_options_copy(isc_mem_t *mctx, const dns_catz_options_t *opts,
		      dns_catz_options_t *nopts);
/*%<
 * Duplicate 'opts' into 'nopts', allocating space from 'mctx'.
 *
 * Requires:
 * \li	'mctx' to be a valid memory context.
 * \li	'options' to be non NULL and valid options.
 * \li	'nopts' to be non NULL.
 */

isc_result_t
dns_catz_options_setdefault(isc_mem_t *mctx, const dns_catz_options_t *defaults,
			    dns_catz_options_t *opts);
/*%<
 * Replace empty values in 'opts' with values from 'defaults'
 *
 * Requires:
 * \li	'mctx' to be a valid memory context.
 * \li	'defaults' to be non NULL and valid options.
 * \li	'opts' to be non NULL.
 */

dns_name_t *
dns_catz_entry_getname(dns_catz_entry_t *entry);
/*%<
 * Get domain name for 'entry'
 *
 * Requires:
 * \li	'entry' to be non NULL.
 *
 * Returns:
 * \li	domain name for entry.
 */

isc_result_t
dns_catz_entry_new(isc_mem_t *mctx, const dns_name_t *domain,
		   dns_catz_entry_t **nentryp);
/*%<
 * Allocate a new catz_entry on 'mctx', with the name 'domain'
 *
 * Requires:
 * \li	'mctx' to be a valid memory context.
 * \li	'domain' to be valid dns_name or NULL.
 * \li	'nentryp' to be non NULL, *nentryp to be NULL.
 *
 * Returns:
 * \li	ISC_R_SUCCESS on success
 * \li	ISC_R_NOMEMORY on allocation failure
 */

isc_result_t
dns_catz_entry_copy(dns_catz_zone_t *zone, const dns_catz_entry_t *entry,
		    dns_catz_entry_t **nentryp);
/*%<
 * Allocate a new catz_entry and deep copy 'entry' into 'nentryp'.
 *
 * Requires:
 * \li	'mctx' to be a valid memory context.
 * \li	'entry' to be non NULL.
 * \li	'nentryp' to be non NULL, *nentryp to be NULL.
 *
 * Returns:
 * \li	ISC_R_SUCCESS on success
 * \li	ISC_R_NOMEMORY on allocation failure
 */

void
dns_catz_entry_attach(dns_catz_entry_t *entry, dns_catz_entry_t **entryp);
/*%<
 * Attach an entry
 *
 * Requires:
 * \li	'entry' is a valid dns_catz_entry_t.
 * \li	'entryp' is not NULL and '*entryp' is NULL.
 */

void
dns_catz_entry_detach(dns_catz_zone_t *zone, dns_catz_entry_t **entryp);
/*%<
 * Detach an entry, free if no further references
 *
 * Requires:
 * \li	'zone' is a valid dns_catz_zone_t.
 * \li	'entryp' is not NULL and '*entryp' is not NULL.
 */

bool
dns_catz_entry_validate(const dns_catz_entry_t *entry);
/*%<
 * Validate whether entry is correct.
 * (NOT YET IMPLEMENTED: always returns true)
 *
 * Requires:
 *\li	'entry' is a valid dns_catz_entry_t.
 */

bool
dns_catz_entry_cmp(const dns_catz_entry_t *ea, const dns_catz_entry_t *eb);
/*%<
 * Deep compare two entries
 *
 * Requires:
 * \li	'ea' is a valid dns_catz_entry_t.
 * \li	'eb' is a valid dns_catz_entry_t.
 *
 * Returns:
 * \li 'true' if entries are the same.
 * \li 'false' if the entries differ.
 */

void
dns_catz_zone_attach(dns_catz_zone_t *zone, dns_catz_zone_t **zonep);
/*%<
 * Attach a catzone
 *
 * Requires:
 * \li	'zone' is a valid dns_catz_zone_t.
 * \li	'zonep' is not NULL and '*zonep' is NULL.
 */

void
dns_catz_zone_detach(dns_catz_zone_t** zonep);
/*%<
 * Detach a zone, free if no further references
 *
 * Requires:
 * \li	'zonep' is not NULL and '*zonep' is not NULL.
 */

isc_result_t
dns_catz_new_zone(dns_catz_zones_t *catzs, dns_catz_zone_t **zonep,
		const dns_name_t *name);
/*%<
 * Allocate a new catz zone on catzs mctx
 *
 * Requires:
 * \li	'catzs' is a valid dns_catz_zones_t.
 * \li	'zonep' is not NULL and '*zonep' is NULL.
 * \li	'name' is a valid dns_name_t.
 *
 */

dns_name_t *
dns_catz_zone_getname(dns_catz_zone_t *zone);
/*%<
 * Get catalog zone name
 *
 * Requires:
 * \li	'zone' is a valid dns_catz_zone_t.
 */

dns_catz_options_t *
dns_catz_zone_getdefoptions(dns_catz_zone_t *zone);
/*%<
 * Get default member zone options for catalog zone 'zone'
 *
 * Requires:
 * \li	'zone' is a valid dns_catz_zone_t.
 */

void
dns_catz_zone_resetdefoptions(dns_catz_zone_t *zone);
/*%<
 * Reset the default member zone options for catalog zone 'zone' to
 * the default values.
 *
 * Requires:
 * \li	'zone' is a valid dns_catz_zone_t.
 */

isc_result_t
dns_catz_zones_merge(dns_catz_zone_t *target, dns_catz_zone_t *newzone);
/*%<
 * Merge 'newzone' into 'target', calling addzone/delzone/modzone
 * (from zone->catzs->zmm) for appropriate member zones.
 *
 * Requires:
 * \li	'orig' is a valid dns_catz_zone_t.
 * \li	'newzone' is not NULL and '*newzone' is not NULL.
 *
 */

isc_result_t
dns_catz_update_process(dns_catz_zones_t *catzs, dns_catz_zone_t *zone,
			 dns_name_t *src_name, dns_rdataset_t *rdataset);
/*%<
 * Process a single rdataset from a catalog zone 'zone' update, src_name is the
 * record name.
 *
 * Requires:
 * \li	'catzs' is a valid dns_catz_zones_t.
 * \li	'zone' is a valid dns_catz_zone_t.
 * \li	'src_name' is a valid dns_name_t.
 * \li	'rdataset' is valid rdataset.
 */

isc_result_t
dns_catz_generate_masterfilename(dns_catz_zone_t *zone, dns_catz_entry_t *entry,
				 isc_buffer_t **buffer);
/*%<
 * Generate master file name and put it into *buffer (might be reallocated).
 * The general format of the file name is:
 * __catz__catalog.zone.name__member_zone_name.db
 * But if it's too long it's shortened to:
 * __catz__unique_hash_generated_from_the_above.db
 *
 * Requires:
 * \li	'zone' is a valid dns_catz_zone_t.
 * \li	'entry' is a valid dns_catz_entry_t.
 * \li	'buffer' is not NULL and '*buffer' is not NULL.
 */

isc_result_t
dns_catz_generate_zonecfg(dns_catz_zone_t *zone, dns_catz_entry_t *entry,
			  isc_buffer_t **buf);
/*%<
 * Generate a zone config entry (in text form) from dns_catz_entry and puts
 * it into *buf. buf might be reallocated.
 *
 * Requires:
 * \li	'zone' is a valid dns_catz_zone_t.
 * \li	'entry' is a valid dns_catz_entry_t.
 * \li	'buf' is not NULL and '*buf' is NULL.
 *
 */


/* Methods provided by named to dynamically modify the member zones */
/* xxxwpk TODO config! */
typedef isc_result_t (*dns_catz_zoneop_fn_t)(dns_catz_entry_t *entry,
					     dns_catz_zone_t *origin,
					     dns_view_t *view,
					     isc_taskmgr_t *taskmgr,
					     void *udata);
struct dns_catz_zonemodmethods {
	dns_catz_zoneop_fn_t addzone;
	dns_catz_zoneop_fn_t modzone;
	dns_catz_zoneop_fn_t delzone;
	void *udata;
};


isc_result_t
dns_catz_new_zones(dns_catz_zones_t **catzsp, dns_catz_zonemodmethods_t *zmm,
		   isc_mem_t *mctx, isc_taskmgr_t *taskmgr,
		   isc_timermgr_t *timermgr);
/*%<
 * Allocate a new catz_zones object, a collection storing all catalog zones
 * for a view.
 *
 * Requires:
 * \li 'catzsp' is not NULL and '*catzsp' is NULL.
 * \li 'zmm' is not NULL.
 *
 */

isc_result_t
dns_catz_add_zone(dns_catz_zones_t *catzs, const dns_name_t *name,
		  dns_catz_zone_t **catzp);
/*%<
 * Allocate a new catz named 'name' and put it in 'catzs' collection.
 *
 * Requires:
 * \li	'catzs' is a valid dns_catz_zones_t.
 * \li	'name' is a valid dns_name_t.
 * \li	'zonep' is not NULL and *zonep is NULL.
 *
 */

dns_catz_zone_t *
dns_catz_get_zone(dns_catz_zones_t *catzs, const dns_name_t *name);
/*%<
 * Returns a zone named 'name' from collection 'catzs'
 *
 * Requires:
 * \li	'catzs' is a valid dns_catz_zones_t.
 * \li	'name' is a valid dns_name_t.
 */

void
dns_catz_catzs_attach(dns_catz_zones_t *catzs, dns_catz_zones_t **catzsp);
/*%<
 * Attach 'catzs' to 'catzsp'.
 *
 * Requires:
 * \li	'catzs' is a valid dns_catz_zones_t.
 * \li	'catzsp' is not NULL and *catzsp is NULL.
 */

void
dns_catz_catzs_detach(dns_catz_zones_t **catzsp);
/*%<
 * Detach 'catzsp', free if no further references.
 *
 * Requires:
 * \li	'catzsp' is not NULL and *catzsp is not NULL.
 */

void
dns_catz_catzs_set_view(dns_catz_zones_t *catzs, dns_view_t *view);
/*%<
 * Set a view for 'catzs'.
 *
 * Requires:
 * \li	'catzs' is a valid dns_catz_zones_t.
 * \li	'catzs->view' is NULL or 'catzs->view' == 'view'.
 */


isc_result_t
dns_catz_dbupdate_callback(dns_db_t *db, void *fn_arg);
/*%<
 * Callback for update of catalog zone database.
 * If there was no catalog zone update recently it launches an
 * update_taskaction immediately.
 * If there was an update recently it schedules update_taskaction for some time
 * in the future.
 * If there is an update scheduled it replaces old db version with a new one.
 *
 * Requires:
 * \li	'db' is a valid database.
 * \li	'fn_arg' is not NULL (casted to dns_catz_zones_t*).
 */

void
dns_catz_update_taskaction(isc_task_t *task, isc_event_t *event);
/*%<
 * Task that launches dns_catz_update_from_db.
 *
 * Requires:
 * \li	'event' is not NULL.
 */

void
dns_catz_update_from_db(dns_db_t *db, dns_catz_zones_t *catzs);
/*%<
 * Process an updated database for a catalog zone.
 * It creates a new catz, iterates over database to fill it with content, and
 * then merges new catz into old catz.
 *
 * Requires:
 * \li	'db' is a valid DB.
 * \li	'catzs' is a valid dns_catz_zones_t.
 *
 */

void
dns_catz_prereconfig(dns_catz_zones_t *catzs);
/*%<
 * Called before reconfig, clears 'active' flag on all the zones in set
 *
 * Requires:
 * \li	'catzs' is a valid dns_catz_zones_t.
 *
 */

void
dns_catz_postreconfig(dns_catz_zones_t *catzs);
/*%<
 * Called after reconfig, walks through all zones in set, removes those
 * inactive and force reload of those with changed configuration.
 *
 * Requires:
 * \li	'catzs' is a valid dns_catz_zones_t.
 */

isc_result_t
dns_catz_get_iterator(dns_catz_zone_t *catz, isc_ht_iter_t **itp);
/*%<
 * Get the hashtable iterator on catalog zone members, point '*itp' to it.
 *
 * Requires:
 * \li	'catzs' is a valid dns_catz_zones_t.
 * \li	'itp' is not NULL and '*itp' is NULL.
 *
 * Returns:
 * \li #ISC_R_SUCCESS		-- success
 * \li Any other value		-- failure
 */

ISC_LANG_ENDDECLS

#endif /* DNS_CATZ_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