mirror of
https://github.com/samba-team/samba.git
synced 2025-02-02 09:47:23 +03:00
s4-dns: Update dlz_minimal.h based on BIND release 9.10
Signed-off-by: Amitay Isaacs <amitay@gmail.com> Reviewed-by: Matthieu Patou <mat@matws.net>
This commit is contained in:
parent
1e5c14548c
commit
aeb6ad8a9c
@ -16,10 +16,20 @@
|
||||
* USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* This header is updated based on BIND 9.10.1 source.
|
||||
* contrib/dlz/modules/include/dlz_minimal.h
|
||||
*/
|
||||
|
||||
#ifndef DLZ_MINIMAL_H
|
||||
#define DLZ_MINIMAL_H 1
|
||||
|
||||
#ifdef BIND_VERSION_9_8
|
||||
#define DLZ_DLOPEN_VERSION 1
|
||||
#elif BIND_VERSION_9_9
|
||||
#define DLZ_DLOPEN_VERSION 2
|
||||
#elif BIND_VERSION_9_10
|
||||
#define DLZ_DLOPEN_VERSION 3
|
||||
#define DLZ_DLOPEN_AGE 0
|
||||
#else
|
||||
#error Unsupported BIND version
|
||||
#endif
|
||||
@ -32,16 +42,23 @@ typedef int isc_boolean_t;
|
||||
#endif
|
||||
typedef uint32_t dns_ttl_t;
|
||||
|
||||
/* return this in flags to dlz_version() if thread safe */
|
||||
/* return these in flags from dlz_version() */
|
||||
#define DNS_SDLZFLAG_THREADSAFE 0x00000001U
|
||||
#define DNS_SDLZFLAG_RELATIVEOWNER 0x00000002U
|
||||
#define DNS_SDLZFLAG_RELATIVERDATA 0x00000004U
|
||||
|
||||
/* result codes */
|
||||
#define ISC_R_SUCCESS 0
|
||||
#define ISC_R_NOMEMORY 1
|
||||
#define ISC_R_NOPERM 6
|
||||
#define ISC_R_NOSPACE 19
|
||||
#define ISC_R_NOTFOUND 23
|
||||
#define ISC_R_FAILURE 25
|
||||
#define ISC_R_NOTIMPLEMENTED 27
|
||||
#define ISC_R_NOMORE 29
|
||||
#define ISC_R_INVALIDFILE 30
|
||||
#define ISC_R_UNEXPECTED 34
|
||||
#define ISC_R_FILENOTFOUND 38
|
||||
|
||||
/* boolean values */
|
||||
#define ISC_TRUE 1
|
||||
@ -53,16 +70,51 @@ typedef uint32_t dns_ttl_t;
|
||||
#define ISC_LOG_WARNING (-3)
|
||||
#define ISC_LOG_ERROR (-4)
|
||||
#define ISC_LOG_CRITICAL (-5)
|
||||
#define ISC_LOG_DEBUG(level) (level)
|
||||
|
||||
/* some opaque structures */
|
||||
/* opaque structures */
|
||||
typedef void *dns_sdlzlookup_t;
|
||||
typedef void *dns_sdlzallnodes_t;
|
||||
typedef void *dns_view_t;
|
||||
typedef void *dns_clientinfomethods_t;
|
||||
typedef void *dns_clientinfo_t;
|
||||
typedef void *dns_dlzdb_t;
|
||||
|
||||
#if DLZ_DLOPEN_VERSION > 1
|
||||
/*
|
||||
* Method and type definitions needed for retrieval of client info
|
||||
* from the caller.
|
||||
*/
|
||||
typedef struct isc_sockaddr {
|
||||
union {
|
||||
struct sockaddr sa;
|
||||
struct sockaddr_in sin;
|
||||
struct sockaddr_in6 sin6;
|
||||
struct sockaddr_un sunix;
|
||||
} type;
|
||||
unsigned int length;
|
||||
void * link;
|
||||
} isc_sockaddr_t;
|
||||
|
||||
#define DNS_CLIENTINFO_VERSION 1
|
||||
typedef struct dns_clientinfo {
|
||||
uint16_t version;
|
||||
void *data;
|
||||
} dns_clientinfo_t;
|
||||
|
||||
typedef isc_result_t (*dns_clientinfo_sourceip_t)(dns_clientinfo_t *client,
|
||||
isc_sockaddr_t **addrp);
|
||||
|
||||
#define DNS_CLIENTINFOMETHODS_VERSION 1
|
||||
#define DNS_CLIENTINFOMETHODS_AGE 0
|
||||
|
||||
typedef struct dns_clientinfomethods {
|
||||
uint16_t version;
|
||||
uint16_t age;
|
||||
dns_clientinfo_sourceip_t sourceip;
|
||||
} dns_clientinfomethods_t;
|
||||
#endif /* DLZ_DLOPEN_VERSION > 1 */
|
||||
|
||||
/*
|
||||
* method definitions for callbacks provided by dlopen driver
|
||||
* Method definitions for callbacks provided by the dlopen driver
|
||||
*/
|
||||
|
||||
typedef void log_t(int level, const char *fmt, ...);
|
||||
@ -78,103 +130,150 @@ typedef isc_result_t dns_sdlz_putnamedrr_t(dns_sdlzallnodes_t *allnodes,
|
||||
dns_ttl_t ttl,
|
||||
const char *data);
|
||||
|
||||
#if DLZ_DLOPEN_VERSION < 3
|
||||
typedef isc_result_t dns_dlz_writeablezone_t(dns_view_t *view,
|
||||
const char *zone_name);
|
||||
|
||||
#else /* DLZ_DLOPEN_VERSION >= 3 */
|
||||
typedef isc_result_t dns_dlz_writeablezone_t(dns_view_t *view,
|
||||
dns_dlzdb_t *dlzdb,
|
||||
const char *zone_name);
|
||||
#endif /* DLZ_DLOPEN_VERSION */
|
||||
|
||||
/*
|
||||
* prototypes for the functions you can include in your driver
|
||||
* prototypes for the functions you can include in your module
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* dlz_version() is required for all DLZ external drivers. It should
|
||||
* return DLZ_DLOPEN_VERSION
|
||||
* return DLZ_DLOPEN_VERSION. 'flags' is updated to indicate capabilities
|
||||
* of the module. In particular, if the module is thread-safe then it
|
||||
* sets 'flags' to include DNS_SDLZFLAG_THREADSAFE. Other capability
|
||||
* flags may be added in the future.
|
||||
*/
|
||||
int dlz_version(unsigned int *flags);
|
||||
int
|
||||
dlz_version(unsigned int *flags);
|
||||
|
||||
/*
|
||||
* dlz_create() is required for all DLZ external drivers.
|
||||
*/
|
||||
isc_result_t dlz_create(const char *dlzname, unsigned int argc, const char **argv, void **dbdata, ...);
|
||||
isc_result_t
|
||||
dlz_create(const char *dlzname, unsigned int argc, const char *argv[],
|
||||
void **dbdata, ...);
|
||||
|
||||
/*
|
||||
* dlz_destroy() is optional, and will be called when the driver is
|
||||
* unloaded if supplied
|
||||
*/
|
||||
void dlz_destroy(void *dbdata);
|
||||
void
|
||||
dlz_destroy(void *dbdata);
|
||||
|
||||
/*
|
||||
dlz_findzonedb is required for all DLZ external drivers
|
||||
* dlz_findzonedb is required for all DLZ external drivers
|
||||
*/
|
||||
isc_result_t dlz_findzonedb(void *dbdata, const char *name);
|
||||
#if DLZ_DLOPEN_VERSION < 3
|
||||
isc_result_t
|
||||
dlz_findzonedb(void *dbdata, const char *name);
|
||||
#else /* DLZ_DLOPEN_VERSION >= 3 */
|
||||
isc_result_t
|
||||
dlz_findzonedb(void *dbdata, const char *name,
|
||||
dns_clientinfomethods_t *methods,
|
||||
dns_clientinfo_t *clientinfo);
|
||||
#endif /* DLZ_DLOPEN_VERSION */
|
||||
|
||||
/*
|
||||
dlz_lookup is required for all DLZ external drivers
|
||||
* dlz_lookup is required for all DLZ external drivers
|
||||
*/
|
||||
#ifdef BIND_VERSION_9_8
|
||||
isc_result_t dlz_lookup(const char *zone, const char *name,
|
||||
void *dbdata, dns_sdlzlookup_t *lookup);
|
||||
#else
|
||||
isc_result_t dlz_lookup(const char *zone, const char *name,
|
||||
void *dbdata, dns_sdlzlookup_t *lookup,
|
||||
dns_clientinfomethods_t *methods,
|
||||
dns_clientinfo_t *clientinfo);
|
||||
#endif
|
||||
#if DLZ_DLOPEN_VERSION == 1
|
||||
isc_result_t
|
||||
dlz_lookup(const char *zone, const char *name, void *dbdata,
|
||||
dns_sdlzlookup_t *lookup);
|
||||
#else /* DLZ_DLOPEN_VERSION > 1 */
|
||||
isc_result_t
|
||||
dlz_lookup(const char *zone, const char *name, void *dbdata,
|
||||
dns_sdlzlookup_t *lookup,
|
||||
dns_clientinfomethods_t *methods,
|
||||
dns_clientinfo_t *clientinfo);
|
||||
#endif /* DLZ_DLOPEN_VERSION */
|
||||
|
||||
/*
|
||||
dlz_allowzonexfr() is optional, and should be supplied if you want
|
||||
to support zone transfers
|
||||
* dlz_authority() is optional if dlz_lookup() supplies
|
||||
* authority information (i.e., SOA, NS) for the dns record
|
||||
*/
|
||||
isc_result_t dlz_allowzonexfr(void *dbdata, const char *name, const char *client);
|
||||
|
||||
isc_result_t
|
||||
dlz_authority(const char *zone, void *dbdata, dns_sdlzlookup_t *lookup);
|
||||
|
||||
/*
|
||||
dlz_allnodes() is optional, but must be supplied if supply a
|
||||
dlz_allowzonexfr() function
|
||||
* dlz_allowzonexfr() is optional, and should be supplied if you want to
|
||||
* support zone transfers
|
||||
*/
|
||||
isc_result_t dlz_allnodes(const char *zone, void *dbdata, dns_sdlzallnodes_t *allnodes);
|
||||
isc_result_t
|
||||
dlz_allowzonexfr(void *dbdata, const char *name, const char *client);
|
||||
|
||||
/*
|
||||
dlz_newversion() is optional. It should be supplied if you want to
|
||||
support dynamic updates.
|
||||
* dlz_allnodes() is optional, but must be supplied if supply a
|
||||
* dlz_allowzonexfr() function
|
||||
*/
|
||||
isc_result_t dlz_newversion(const char *zone, void *dbdata, void **versionp);
|
||||
isc_result_t
|
||||
dlz_allnodes(const char *zone, void *dbdata, dns_sdlzallnodes_t *allnodes);
|
||||
|
||||
/*
|
||||
dlz_closeversion() is optional, but must be supplied if you supply
|
||||
a dlz_newversion() function
|
||||
* dlz_newversion() is optional. It should be supplied if you want to
|
||||
* support dynamic updates.
|
||||
*/
|
||||
void dlz_closeversion(const char *zone, isc_boolean_t commit, void *dbdata, void **versionp);
|
||||
isc_result_t
|
||||
dlz_newversion(const char *zone, void *dbdata, void **versionp);
|
||||
|
||||
/*
|
||||
* dlz_closeversion() is optional, but must be supplied if you supply a
|
||||
* dlz_newversion() function
|
||||
*/
|
||||
void
|
||||
dlz_closeversion(const char *zone, isc_boolean_t commit, void *dbdata,
|
||||
void **versionp);
|
||||
|
||||
/*
|
||||
dlz_configure() is optional, but must be supplied if you want to
|
||||
support dynamic updates
|
||||
* dlz_configure() is optional, but must be supplied if you want to support
|
||||
* dynamic updates
|
||||
*/
|
||||
isc_result_t dlz_configure(dns_view_t *view, void *dbdata);
|
||||
#if DLZ_DLOPEN_VERSION < 3
|
||||
isc_result_t
|
||||
dlz_configure(dns_view_t *view, void *dbdata);
|
||||
#else /* DLZ_DLOPEN_VERSION >= 3 */
|
||||
isc_result_t
|
||||
dlz_configure(dns_view_t *view, dns_dlzdb_t *dlzdb, void *dbdata);
|
||||
#endif /* DLZ_DLOPEN_VERSION */
|
||||
|
||||
/*
|
||||
dlz_ssumatch() is optional, but must be supplied if you want to
|
||||
support dynamic updates
|
||||
* dlz_ssumatch() is optional, but must be supplied if you want to support
|
||||
* dynamic updates
|
||||
*/
|
||||
isc_boolean_t dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr,
|
||||
const char *type, const char *key, uint32_t keydatalen, uint8_t *keydata,
|
||||
void *dbdata);
|
||||
isc_boolean_t
|
||||
dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr,
|
||||
const char *type, const char *key, uint32_t keydatalen,
|
||||
uint8_t *keydata, void *dbdata);
|
||||
|
||||
/*
|
||||
dlz_addrdataset() is optional, but must be supplied if you want to
|
||||
support dynamic updates
|
||||
* dlz_addrdataset() is optional, but must be supplied if you want to
|
||||
* support dynamic updates
|
||||
*/
|
||||
isc_result_t dlz_addrdataset(const char *name, const char *rdatastr, void *dbdata, void *version);
|
||||
isc_result_t
|
||||
dlz_addrdataset(const char *name, const char *rdatastr, void *dbdata,
|
||||
void *version);
|
||||
|
||||
/*
|
||||
dlz_subrdataset() is optional, but must be supplied if you want to
|
||||
support dynamic updates
|
||||
* dlz_subrdataset() is optional, but must be supplied if you want to
|
||||
* support dynamic updates
|
||||
*/
|
||||
isc_result_t dlz_subrdataset(const char *name, const char *rdatastr, void *dbdata, void *version);
|
||||
isc_result_t
|
||||
dlz_subrdataset(const char *name, const char *rdatastr, void *dbdata,
|
||||
void *version);
|
||||
|
||||
/*
|
||||
dlz_delrdataset() is optional, but must be supplied if you want to
|
||||
support dynamic updates
|
||||
* dlz_delrdataset() is optional, but must be supplied if you want to
|
||||
* support dynamic updates
|
||||
*/
|
||||
isc_result_t dlz_delrdataset(const char *name, const char *type, void *dbdata, void *version);
|
||||
isc_result_t
|
||||
dlz_delrdataset(const char *name, const char *type, void *dbdata,
|
||||
void *version);
|
||||
|
||||
#endif /* DLZ_MINIMAL_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user