1225305Sdougb/* 2234010Sdougb * Copyright (C) 2011, 2012 Internet Systems Consortium, Inc. ("ISC") 3225305Sdougb * 4225305Sdougb * Permission to use, copy, modify, and/or distribute this software for any 5225305Sdougb * purpose with or without fee is hereby granted, provided that the above 6225305Sdougb * copyright notice and this permission notice appear in all copies. 7225305Sdougb * 8225305Sdougb * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 9225305Sdougb * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 10225305Sdougb * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 11225305Sdougb * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 12225305Sdougb * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 13225305Sdougb * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 14225305Sdougb * PERFORMANCE OF THIS SOFTWARE. 15225305Sdougb */ 16225305Sdougb 17234010Sdougb/* $Id$ */ 18225305Sdougb 19225305Sdougb/*! \file dns/dlz_open.h */ 20225305Sdougb 21225305Sdougb#ifndef DLZ_DLOPEN_H 22225305Sdougb#define DLZ_DLOPEN_H 23225305Sdougb 24225305Sdougb#include <dns/sdlz.h> 25225305Sdougb 26225305SdougbISC_LANG_BEGINDECLS 27225305Sdougb 28225305Sdougb/* 29225305Sdougb * This header provides a minimal set of defines and typedefs needed 30225305Sdougb * for the entry points of an external DLZ module for bind9. 31225305Sdougb */ 32225305Sdougb 33254897Serwin#define DLZ_DLOPEN_VERSION 2 34225305Sdougb 35225305Sdougb/* 36225305Sdougb * dlz_dlopen_version() is required for all DLZ external drivers. It 37225305Sdougb * should return DLZ_DLOPEN_VERSION 38225305Sdougb */ 39225305Sdougbtypedef int dlz_dlopen_version_t (unsigned int *flags); 40225305Sdougb 41225305Sdougb/* 42225305Sdougb * dlz_dlopen_create() is required for all DLZ external drivers. 43225305Sdougb */ 44225305Sdougbtypedef isc_result_t dlz_dlopen_create_t (const char *dlzname, 45225305Sdougb unsigned int argc, 46225305Sdougb char *argv[], 47225305Sdougb void **dbdata, 48225305Sdougb ...); 49225305Sdougb 50225305Sdougb/* 51225305Sdougb * dlz_dlopen_destroy() is optional, and will be called when the 52225305Sdougb * driver is unloaded if supplied 53225305Sdougb */ 54225305Sdougbtypedef void dlz_dlopen_destroy_t (void *dbdata); 55225305Sdougb 56225305Sdougb/* 57225305Sdougb * dlz_dlopen_findzonedb() is required for all DLZ external drivers 58225305Sdougb */ 59225305Sdougbtypedef isc_result_t dlz_dlopen_findzonedb_t (void *dbdata, 60225305Sdougb const char *name); 61225305Sdougb 62225305Sdougb/* 63225305Sdougb * dlz_dlopen_lookup() is required for all DLZ external drivers 64225305Sdougb */ 65225305Sdougbtypedef isc_result_t dlz_dlopen_lookup_t (const char *zone, 66225305Sdougb const char *name, 67225305Sdougb void *dbdata, 68254897Serwin dns_sdlzlookup_t *lookup, 69254897Serwin dns_clientinfomethods_t *methods, 70254897Serwin dns_clientinfo_t *clientinfo); 71225305Sdougb 72225305Sdougb/* 73225305Sdougb * dlz_dlopen_authority is optional() if dlz_dlopen_lookup() 74225305Sdougb * supplies authority information for the dns record 75225305Sdougb */ 76225305Sdougbtypedef isc_result_t dlz_dlopen_authority_t (const char *zone, 77225305Sdougb void *dbdata, 78225305Sdougb dns_sdlzlookup_t *lookup); 79225305Sdougb 80225305Sdougb/* 81225305Sdougb * dlz_dlopen_allowzonexfr() is optional, and should be supplied if 82225305Sdougb * you want to support zone transfers 83225305Sdougb */ 84225305Sdougbtypedef isc_result_t dlz_dlopen_allowzonexfr_t (void *dbdata, 85225305Sdougb const char *name, 86225305Sdougb const char *client); 87225305Sdougb 88225305Sdougb/* 89225305Sdougb * dlz_dlopen_allnodes() is optional, but must be supplied if supply a 90225305Sdougb * dlz_dlopen_allowzonexfr() function 91225305Sdougb */ 92225305Sdougbtypedef isc_result_t dlz_dlopen_allnodes_t (const char *zone, 93225305Sdougb void *dbdata, 94225305Sdougb dns_sdlzallnodes_t *allnodes); 95225305Sdougb 96225305Sdougb/* 97225305Sdougb * dlz_dlopen_newversion() is optional. It should be supplied if you 98225305Sdougb * want to support dynamic updates. 99225305Sdougb */ 100225305Sdougbtypedef isc_result_t dlz_dlopen_newversion_t (const char *zone, 101225305Sdougb void *dbdata, 102225305Sdougb void **versionp); 103225305Sdougb 104225305Sdougb/* 105225305Sdougb * dlz_closeversion() is optional, but must be supplied if you supply 106225305Sdougb * a dlz_newversion() function 107225305Sdougb */ 108225305Sdougbtypedef void dlz_dlopen_closeversion_t (const char *zone, 109225305Sdougb isc_boolean_t commit, 110225305Sdougb void *dbdata, 111225305Sdougb void **versionp); 112225305Sdougb 113225305Sdougb/* 114225305Sdougb * dlz_dlopen_configure() is optional, but must be supplied if you 115225305Sdougb * want to support dynamic updates 116225305Sdougb */ 117225305Sdougbtypedef isc_result_t dlz_dlopen_configure_t (dns_view_t *view, 118225305Sdougb void *dbdata); 119225305Sdougb 120225305Sdougb/* 121254897Serwin * dlz_dlopen_setclientcallback() is optional, but must be supplied if you 122254897Serwin * want to retrieve information about the client (e.g., source address) 123254897Serwin * before sending a replay. 124254897Serwin */ 125254897Serwintypedef isc_result_t dlz_dlopen_setclientcallback_t (dns_view_t *view, 126254897Serwin void *dbdata); 127254897Serwin 128254897Serwin 129254897Serwin/* 130225305Sdougb * dlz_dlopen_ssumatch() is optional, but must be supplied if you want 131225305Sdougb * to support dynamic updates 132225305Sdougb */ 133225305Sdougbtypedef isc_boolean_t dlz_dlopen_ssumatch_t (const char *signer, 134225305Sdougb const char *name, 135225305Sdougb const char *tcpaddr, 136225305Sdougb const char *type, 137225305Sdougb const char *key, 138225305Sdougb isc_uint32_t keydatalen, 139225305Sdougb unsigned char *keydata, 140225305Sdougb void *dbdata); 141225305Sdougb 142225305Sdougb/* 143225305Sdougb * dlz_dlopen_addrdataset() is optional, but must be supplied if you 144225305Sdougb * want to support dynamic updates 145225305Sdougb */ 146225305Sdougbtypedef isc_result_t dlz_dlopen_addrdataset_t (const char *name, 147225305Sdougb const char *rdatastr, 148225305Sdougb void *dbdata, 149225305Sdougb void *version); 150225305Sdougb 151225305Sdougb/* 152225305Sdougb * dlz_dlopen_subrdataset() is optional, but must be supplied if you 153225305Sdougb * want to support dynamic updates 154225305Sdougb */ 155225305Sdougbtypedef isc_result_t dlz_dlopen_subrdataset_t (const char *name, 156225305Sdougb const char *rdatastr, 157225305Sdougb void *dbdata, 158225305Sdougb void *version); 159225305Sdougb 160225305Sdougb/* 161225305Sdougb * dlz_dlopen_delrdataset() is optional, but must be supplied if you 162225305Sdougb * want to support dynamic updates 163225305Sdougb */ 164225305Sdougbtypedef isc_result_t dlz_dlopen_delrdataset_t (const char *name, 165225305Sdougb const char *type, 166225305Sdougb void *dbdata, 167225305Sdougb void *version); 168225305Sdougb 169225305SdougbISC_LANG_ENDDECLS 170225305Sdougb 171225305Sdougb#endif 172