diff options
Diffstat (limited to 'source4')
-rw-r--r-- | source4/dns_server/dlz_bind9.c | 35 | ||||
-rw-r--r-- | source4/dns_server/wscript_build | 2 |
2 files changed, 36 insertions, 1 deletions
diff --git a/source4/dns_server/dlz_bind9.c b/source4/dns_server/dlz_bind9.c index 0eb90b78c5..5249ca3d7c 100644 --- a/source4/dns_server/dlz_bind9.c +++ b/source4/dns_server/dlz_bind9.c @@ -26,6 +26,7 @@ #include "dsdb/common/util.h" #include "auth/session.h" #include "gen_ndr/ndr_dnsp.h" +#include "lib/cmdline/popt_common.h" #include "dlz_bind9.h" struct dlz_bind9_data { @@ -222,6 +223,35 @@ static isc_result_t b9_putnamedrr(struct dlz_bind9_data *state, /* + parse options + */ +static isc_result_t parse_options(struct dlz_bind9_data *state, + unsigned int argc, char *argv[]) +{ + int opt; + poptContext pc; + struct poptOption long_options[] = { + POPT_COMMON_SAMBA + { NULL } + }; + + pc = poptGetContext("dlz_bind9", argc, (const char **)argv, long_options, + POPT_CONTEXT_KEEP_FIRST); + + while ((opt = poptGetNextOpt(pc)) != -1) { + switch (opt) { + default: + state->log(ISC_LOG_ERROR, "Invalid option %s: %s", + poptBadOption(pc, 0), poptStrerror(opt)); + return ISC_R_FAILURE; + } + } + + return ISC_R_SUCCESS; +} + + +/* called to initialise the driver */ _PUBLIC_ isc_result_t dlz_create(const char *dlzname, @@ -251,6 +281,11 @@ _PUBLIC_ isc_result_t dlz_create(const char *dlzname, } va_end(ap); + result = parse_options(state, argc, argv); + if (result != ISC_R_SUCCESS) { + goto failed; + } + state->lp = loadparm_init_global(true); if (state->lp == NULL) { result = ISC_R_NOMEMORY; diff --git a/source4/dns_server/wscript_build b/source4/dns_server/wscript_build index a543b12a06..884d0c1f12 100644 --- a/source4/dns_server/wscript_build +++ b/source4/dns_server/wscript_build @@ -14,4 +14,4 @@ bld.SAMBA_LIBRARY('dlz_bind9', source='dlz_bind9.c', private_library=True, link_name='modules/bind9/dlz_bind9.so', - deps='samba-hostconfig ldbsamba samba-util') + deps='samba-hostconfig ldbsamba samba-util popt POPT_SAMBA') |