zt.h revision 0c27b3fe77ac1d5094ba3521e8142d9e7973133f
/*
* Copyright (C) 1999-2002, 2004-2007, 2011, 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: zt.h,v 1.40 2011/09/02 23:46:32 tbox Exp $ */
#ifndef DNS_ZT_H
#define DNS_ZT_H 1
#define DNS_ZTFIND_NOEXACT 0x01
typedef isc_result_t
(*dns_zt_allloaded_t)(void *arg);
/*%<
* Method prototype: when all pending zone loads are complete,
* the zone table can inform the caller via a callback function with
* this signature.
*/
typedef isc_result_t
/*%<
* Method prototype: when a zone finishes loading, the zt object
* can be informed via a callback function with this signature.
*/
/*%<
* Creates a new zone table.
*
* Requires:
* \li 'mctx' to be initialized.
*
* Returns:
* \li #ISC_R_SUCCESS on success.
* \li #ISC_R_NOMEMORY
*/
/*%<
* Mounts the zone on the zone table.
*
* Requires:
* \li 'zt' to be valid
* \li 'zone' to be valid
*
* Returns:
* \li #ISC_R_SUCCESS
* \li #ISC_R_EXISTS
* \li #ISC_R_NOSPACE
* \li #ISC_R_NOMEMORY
*/
/*%<
* Unmount the given zone from the table.
*
* Requires:
* 'zt' to be valid
* \li 'zone' to be valid
*
* Returns:
* \li #ISC_R_SUCCESS
* \li #ISC_R_NOTFOUND
* \li #ISC_R_NOMEMORY
*/
/*%<
* Find the best match for 'name' in 'zt'. If foundname is non NULL
* then the name of the zone found is returned.
*
* Notes:
* \li If the DNS_ZTFIND_NOEXACT is set, the best partial match (if any)
* to 'name' will be returned.
*
* Requires:
* \li 'zt' to be valid
* \li 'name' to be valid
* \li 'foundname' to be initialized and associated with a fixedname or NULL
* \li 'zone' to be non NULL and '*zone' to be NULL
*
* Returns:
* \li #ISC_R_SUCCESS
* \li #DNS_R_PARTIALMATCH
* \li #ISC_R_NOTFOUND
* \li #ISC_R_NOSPACE
*/
void
/*%<
* Detach the given zonetable, if the reference count goes to zero the
* zonetable will be freed. In either case 'ztp' is set to NULL.
*
* Requires:
* \li '*ztp' to be valid
*/
void
/*%<
* Detach the given zonetable, if the reference count goes to zero the
* zonetable will be flushed and then freed. In either case 'ztp' is
* set to NULL.
*
* Requires:
* \li '*ztp' to be valid
*/
void
/*%<
* Attach 'zt' to '*ztp'.
*
* Requires:
* \li 'zt' to be valid
* \li '*ztp' to be NULL
*/
/*%<
* Load all zones in the table. If 'stop' is ISC_TRUE,
* stop on the first error and return it. If 'stop'
* is ISC_FALSE, ignore errors.
*
* dns_zt_loadnew() only loads zones that are not yet loaded.
* dns_zt_load() also loads zones that are already loaded and
* and whose master file has changed since the last load.
* dns_zt_asyncload() loads zones asynchronously; when all
* zones in the zone table have finished loaded (or failed due
* to errors), the caller is informed by calling 'alldone'
* with an argument of 'arg'.
*
* Requires:
* \li 'zt' to be valid
*/
/*%<
* Any pending updates will be flushed.
* Zones will be reloaded on thaw.
*/
/*%<
* Apply a given 'action' to all zone zones in the table.
* If 'stop' is 'ISC_TRUE' then walking the zone tree will stop if
* 'action' does not return ISC_R_SUCCESS.
*
* Requires:
* \li 'zt' to be valid.
* \li 'action' to be non NULL.
*
* Returns:
* \li ISC_R_SUCCESS if action was applied to all nodes. If 'stop' is
* ISC_FALSE and 'sub' is non NULL then the first error (if any)
* reported by 'action' is returned in '*sub';
* any error code from 'action'.
*/
/*%<
* Returns ISC_TRUE if and only if there are zones still waiting to
* be loaded in zone table 'zt'.
*
* Requires:
* \li 'zt' to be valid.
*/
#endif /* DNS_ZT_H */