summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2014-10-20 15:31:30 +1100
committerAmitay Isaacs <amitay@samba.org>2014-10-25 03:21:04 +0200
commitaeb6ad8a9c2713c6c71a2ac4cd355dd1bda6cc51 (patch)
treeb6aeee2224e0a42a54b658cf5c6d16a56a00fe2c /source4
parent1e5c14548c8d03f66aaa908654c94f36a94455f2 (diff)
downloadsamba-aeb6ad8a9c2713c6c71a2ac4cd355dd1bda6cc51.tar.gz
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>
Diffstat (limited to 'source4')
-rw-r--r--source4/dns_server/dlz_minimal.h207
1 files changed, 153 insertions, 54 deletions
diff --git a/source4/dns_server/dlz_minimal.h b/source4/dns_server/dlz_minimal.h
index af0d6bc1631..11187f763c6 100644
--- a/source4/dns_server/dlz_minimal.h
+++ b/source4/dns_server/dlz_minimal.h
@@ -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 definitions for callbacks provided by dlopen driver
+ * 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 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 */