diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/libads/dns.c | 12 | ||||
-rw-r--r-- | source3/libads/dns.h | 2 | ||||
-rw-r--r-- | source3/libsmb/dsgetdcname.c | 9 |
3 files changed, 11 insertions, 12 deletions
diff --git a/source3/libads/dns.c b/source3/libads/dns.c index f62837e0fe..6f846fa780 100644 --- a/source3/libads/dns.c +++ b/source3/libads/dns.c @@ -20,7 +20,6 @@ #include "includes.h" #include "libads/dns.h" -#include "../librpc/ndr/libndr.h" /* AIX resolv.h uses 'class' in struct ns_rr */ @@ -890,26 +889,19 @@ NTSTATUS ads_dns_query_pdc(TALLOC_CTX *ctx, NTSTATUS ads_dns_query_dcs_guid(TALLOC_CTX *ctx, const char *dns_hosts_file, const char *dns_forest_name, - const struct GUID *domain_guid, + const char *domain_guid, struct dns_rr_srv **dclist, int *numdcs ) { /*_ldap._tcp.DomainGuid.domains._msdcs.DnsForestName */ const char *domains; - char *guid_string; - - guid_string = GUID_string(ctx, domain_guid); - if (!guid_string) { - return NT_STATUS_NO_MEMORY; - } /* little hack */ - domains = talloc_asprintf(ctx, "%s.domains", guid_string); + domains = talloc_asprintf(ctx, "%s.domains", domain_guid); if (!domains) { return NT_STATUS_NO_MEMORY; } - TALLOC_FREE(guid_string); return ads_dns_query_internal(ctx, dns_hosts_file, "_ldap", domains, dns_forest_name, NULL, dclist, numdcs); diff --git a/source3/libads/dns.h b/source3/libads/dns.h index d57239d20c..a3ea47a04e 100644 --- a/source3/libads/dns.h +++ b/source3/libads/dns.h @@ -55,7 +55,7 @@ NTSTATUS ads_dns_query_pdc(TALLOC_CTX *ctx, NTSTATUS ads_dns_query_dcs_guid(TALLOC_CTX *ctx, const char *dns_hosts_file, const char *dns_forest_name, - const struct GUID *domain_guid, + const char *domain_guid, struct dns_rr_srv **dclist, int *numdcs ); #endif /* _ADS_DNS_H */ diff --git a/source3/libsmb/dsgetdcname.c b/source3/libsmb/dsgetdcname.c index a690ab49c1..7b4b68195a 100644 --- a/source3/libsmb/dsgetdcname.c +++ b/source3/libsmb/dsgetdcname.c @@ -547,6 +547,7 @@ static NTSTATUS discover_dc_dns(TALLOC_CTX *mem_ctx, struct ip_service_name *dclist = NULL; int count = 0; const char *dns_hosts_file; + char *guid_string; dns_hosts_file = lp_parm_const_string(-1, "resolv", "host file", NULL); if (flags & DS_PDC_REQUIRED) { @@ -565,9 +566,15 @@ static NTSTATUS discover_dc_dns(TALLOC_CTX *mem_ctx, domain_name, site_name, &dcs, &numdcs); } else if (domain_guid) { + guid_string = GUID_string(mem_ctx, domain_guid); + if (!guid_string) { + return NT_STATUS_NO_MEMORY; + } + status = ads_dns_query_dcs_guid(mem_ctx, dns_hosts_file, - domain_name, domain_guid, + domain_name, guid_string, &dcs, &numdcs); + TALLOC_FREE(guid_string); } else { status = ads_dns_query_dcs(mem_ctx, dns_hosts_file, domain_name, site_name, |