diff options
author | Günther Deschner <gd@samba.org> | 2008-01-15 10:58:27 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2008-01-15 11:02:56 +0100 |
commit | f41cd6c8e46c6a280e61f77b0803133458274977 (patch) | |
tree | b97b627a30dedc73504a1309cd316b2873fee429 | |
parent | 0e8240f5a59d917723cfc6043f4f39172869857f (diff) | |
download | samba-f41cd6c8e46c6a280e61f77b0803133458274977.tar.gz samba-f41cd6c8e46c6a280e61f77b0803133458274977.tar.bz2 samba-f41cd6c8e46c6a280e61f77b0803133458274977.zip |
Use dsgetdcname() to find a dc when unjoining in libnetjoin.
Guenther
(This used to be commit 1a5b72daa36073cc0604211248d869bf0d7546c6)
-rw-r--r-- | source3/libnet/libnet_join.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/source3/libnet/libnet_join.c b/source3/libnet/libnet_join.c index 19b3e58e00..6c50d9c09b 100644 --- a/source3/libnet/libnet_join.c +++ b/source3/libnet/libnet_join.c @@ -1250,6 +1250,29 @@ static WERROR libnet_DomainUnjoin(TALLOC_CTX *mem_ctx, { NTSTATUS status; + if (!r->in.dc_name) { + struct DS_DOMAIN_CONTROLLER_INFO *info; + status = dsgetdcname(mem_ctx, + NULL, + r->in.domain_name, + NULL, + NULL, + DS_DIRECTORY_SERVICE_REQUIRED | + DS_WRITABLE_REQUIRED | + DS_RETURN_DNS_NAME, + &info); + if (!NT_STATUS_IS_OK(status)) { + libnet_unjoin_set_error_string(mem_ctx, r, + "failed to find DC: %s", + nt_errstr(status)); + return WERR_DOMAIN_CONTROLLER_NOT_FOUND; + } + + r->in.dc_name = talloc_strdup(mem_ctx, + info->domain_controller_name); + W_ERROR_HAVE_NO_MEMORY(r->in.dc_name); + } + status = libnet_join_unjoindomain_rpc(mem_ctx, r); if (!NT_STATUS_IS_OK(status)) { libnet_unjoin_set_error_string(mem_ctx, r, |