dlz_dlopen.h revision 267654
1/* 2 * Copyright (C) 2011, 2012 Internet Systems Consortium, Inc. ("ISC") 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 9 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 10 * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 11 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 12 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 13 * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 14 * PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17/* $Id$ */ 18 19/*! \file dns/dlz_open.h */ 20 21#ifndef DLZ_DLOPEN_H 22#define DLZ_DLOPEN_H 23 24#include <dns/sdlz.h> 25 26ISC_LANG_BEGINDECLS 27 28/* 29 * This header provides a minimal set of defines and typedefs needed 30 * for the entry points of an external DLZ module for bind9. 31 */ 32 33#define DLZ_DLOPEN_VERSION 2 34 35/* 36 * dlz_dlopen_version() is required for all DLZ external drivers. It 37 * should return DLZ_DLOPEN_VERSION 38 */ 39typedef int dlz_dlopen_version_t (unsigned int *flags); 40 41/* 42 * dlz_dlopen_create() is required for all DLZ external drivers. 43 */ 44typedef isc_result_t dlz_dlopen_create_t (const char *dlzname, 45 unsigned int argc, 46 char *argv[], 47 void **dbdata, 48 ...); 49 50/* 51 * dlz_dlopen_destroy() is optional, and will be called when the 52 * driver is unloaded if supplied 53 */ 54typedef void dlz_dlopen_destroy_t (void *dbdata); 55 56/* 57 * dlz_dlopen_findzonedb() is required for all DLZ external drivers 58 */ 59typedef isc_result_t dlz_dlopen_findzonedb_t (void *dbdata, 60 const char *name); 61 62/* 63 * dlz_dlopen_lookup() is required for all DLZ external drivers 64 */ 65typedef isc_result_t dlz_dlopen_lookup_t (const char *zone, 66 const char *name, 67 void *dbdata, 68 dns_sdlzlookup_t *lookup, 69 dns_clientinfomethods_t *methods, 70 dns_clientinfo_t *clientinfo); 71 72/* 73 * dlz_dlopen_authority is optional() if dlz_dlopen_lookup() 74 * supplies authority information for the dns record 75 */ 76typedef isc_result_t dlz_dlopen_authority_t (const char *zone, 77 void *dbdata, 78 dns_sdlzlookup_t *lookup); 79 80/* 81 * dlz_dlopen_allowzonexfr() is optional, and should be supplied if 82 * you want to support zone transfers 83 */ 84typedef isc_result_t dlz_dlopen_allowzonexfr_t (void *dbdata, 85 const char *name, 86 const char *client); 87 88/* 89 * dlz_dlopen_allnodes() is optional, but must be supplied if supply a 90 * dlz_dlopen_allowzonexfr() function 91 */ 92typedef isc_result_t dlz_dlopen_allnodes_t (const char *zone, 93 void *dbdata, 94 dns_sdlzallnodes_t *allnodes); 95 96/* 97 * dlz_dlopen_newversion() is optional. It should be supplied if you 98 * want to support dynamic updates. 99 */ 100typedef isc_result_t dlz_dlopen_newversion_t (const char *zone, 101 void *dbdata, 102 void **versionp); 103 104/* 105 * dlz_closeversion() is optional, but must be supplied if you supply 106 * a dlz_newversion() function 107 */ 108typedef void dlz_dlopen_closeversion_t (const char *zone, 109 isc_boolean_t commit, 110 void *dbdata, 111 void **versionp); 112 113/* 114 * dlz_dlopen_configure() is optional, but must be supplied if you 115 * want to support dynamic updates 116 */ 117typedef isc_result_t dlz_dlopen_configure_t (dns_view_t *view, 118 void *dbdata); 119 120/* 121 * dlz_dlopen_setclientcallback() is optional, but must be supplied if you 122 * want to retrieve information about the client (e.g., source address) 123 * before sending a replay. 124 */ 125typedef isc_result_t dlz_dlopen_setclientcallback_t (dns_view_t *view, 126 void *dbdata); 127 128 129/* 130 * dlz_dlopen_ssumatch() is optional, but must be supplied if you want 131 * to support dynamic updates 132 */ 133typedef isc_boolean_t dlz_dlopen_ssumatch_t (const char *signer, 134 const char *name, 135 const char *tcpaddr, 136 const char *type, 137 const char *key, 138 isc_uint32_t keydatalen, 139 unsigned char *keydata, 140 void *dbdata); 141 142/* 143 * dlz_dlopen_addrdataset() is optional, but must be supplied if you 144 * want to support dynamic updates 145 */ 146typedef isc_result_t dlz_dlopen_addrdataset_t (const char *name, 147 const char *rdatastr, 148 void *dbdata, 149 void *version); 150 151/* 152 * dlz_dlopen_subrdataset() is optional, but must be supplied if you 153 * want to support dynamic updates 154 */ 155typedef isc_result_t dlz_dlopen_subrdataset_t (const char *name, 156 const char *rdatastr, 157 void *dbdata, 158 void *version); 159 160/* 161 * dlz_dlopen_delrdataset() is optional, but must be supplied if you 162 * want to support dynamic updates 163 */ 164typedef isc_result_t dlz_dlopen_delrdataset_t (const char *name, 165 const char *type, 166 void *dbdata, 167 void *version); 168 169ISC_LANG_ENDDECLS 170 171#endif 172