diff options
author | Andreas Schneider <asn@samba.org> | 2017-08-22 17:10:01 +0200 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2017-09-05 23:58:20 +0200 |
commit | 3fa7c43ef73b6582e8985bf6d82465ffded9e5db (patch) | |
tree | 2511f5d780f4f03994ba9cfd737d583bac67280d /source4/dsdb/dns | |
parent | 4c9608fb27b0f1bef846b72291ecb515045d3507 (diff) | |
download | samba-3fa7c43ef73b6582e8985bf6d82465ffded9e5db.tar.gz |
s4:bind_dlz: Use the 'binddns dir' if possible
The code makes sure we are backwards compatible. It will first check if
we still have files in the private directory, if yes it will use those.
If the the file is not in the private directory it will try the binddns
dir.
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Andrew Bartlet <abartlet@samba.org>
Diffstat (limited to 'source4/dsdb/dns')
-rw-r--r-- | source4/dsdb/dns/dns_update.c | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/source4/dsdb/dns/dns_update.c b/source4/dsdb/dns/dns_update.c index f74256d95ea..ba8431a3d1d 100644 --- a/source4/dsdb/dns/dns_update.c +++ b/source4/dsdb/dns/dns_update.c @@ -170,16 +170,56 @@ static void dnsupdate_rebuild(struct dnsupdate_service *service) path = lpcfg_parm_string(service->task->lp_ctx, NULL, "dnsupdate", "path"); if (path == NULL) { - path = lpcfg_private_path(tmp_ctx, service->task->lp_ctx, "named.conf.update"); + path = lpcfg_private_path(tmp_ctx, + service->task->lp_ctx, + "named.conf.update"); + if (path == NULL) { + DBG_ERR("Out of memory!"); + talloc_free(tmp_ctx); + return; + } + + /* + * If the file doesn't exist, we provisioned in a the new + * bind-dns directory + */ + if (!file_exist(path)) { + path = talloc_asprintf(tmp_ctx, + "%s/named.conf.update", + lpcfg_binddns_dir(service->task->lp_ctx)); + if (path == NULL) { + DBG_ERR("Out of memory!"); + talloc_free(tmp_ctx); + return; + } + } } path_static = lpcfg_parm_string(service->task->lp_ctx, NULL, "dnsupdate", "extra_static_grant_rules"); if (path_static == NULL) { - path_static = lpcfg_private_path(tmp_ctx, service->task->lp_ctx, "named.conf.update.static"); + path_static = lpcfg_private_path(tmp_ctx, + service->task->lp_ctx, + "named.conf.update.static"); + if (path_static == NULL) { + DBG_ERR("Out of memory!"); + talloc_free(tmp_ctx); + return; + } + + if (!file_exist(path_static)) { + path_static = talloc_asprintf(tmp_ctx, + "%s/named.conf.update.static", + lpcfg_binddns_dir(service->task->lp_ctx)); + if (path_static == NULL) { + DBG_ERR("Out of memory!"); + talloc_free(tmp_ctx); + return; + } + } } tmp_path = talloc_asprintf(tmp_ctx, "%s.tmp", path); - if (path == NULL || tmp_path == NULL || path_static == NULL ) { + if (tmp_path == NULL) { DEBUG(0,(__location__ ": Unable to get paths\n")); talloc_free(tmp_ctx); return; |