1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-10 12:58:35 +03:00

s3: libsmb: Convert internal function get_dc_list() to return a samba_sockaddr array.

Callers now don't need to convert. Getting closer to making internal_resolve_name()
return samba_sockaddr array.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Noel Power <npower@samba.org>
`
This commit is contained in:
Jeremy Allison 2020-09-09 09:11:08 -07:00 committed by Noel Power
parent b59de9e5ee
commit 1cb9611b7b

View File

@ -3850,7 +3850,7 @@ enum dc_lookup_type { DC_NORMAL_LOOKUP, DC_ADS_ONLY, DC_KDC_ONLY };
static NTSTATUS get_dc_list(TALLOC_CTX *ctx,
const char *domain,
const char *sitename,
struct ip_service **ip_list,
struct samba_sockaddr **sa_list_ret,
size_t *ret_count,
enum dc_lookup_type lookup_type,
bool *ordered)
@ -3867,6 +3867,7 @@ static NTSTATUS get_dc_list(TALLOC_CTX *ctx,
size_t i;
struct ip_service *return_iplist = NULL;
struct ip_service *auto_ip_list = NULL;
struct samba_sockaddr *sa_list = NULL;
bool done_auto_lookup = false;
size_t auto_count = 0;
NTSTATUS status;
@ -4137,13 +4138,28 @@ static NTSTATUS get_dc_list(TALLOC_CTX *ctx,
out:
if (NT_STATUS_IS_OK(status)) {
*ip_list = return_iplist;
*ret_count = local_count;
} else {
/*
* This uglyness will go away
* once internal_resolve_name() is changed
* to return a samba_sockaddr array.
*/
if (!(NT_STATUS_IS_OK(status))) {
TALLOC_FREE(return_iplist);
TALLOC_FREE(auto_ip_list);
TALLOC_FREE(frame);
return status;
}
status = ip_service_to_samba_sockaddr(ctx,
&sa_list,
return_iplist,
local_count);
TALLOC_FREE(return_iplist);
if (NT_STATUS_IS_OK(status)) {
*sa_list_ret = sa_list;
*ret_count = local_count;
}
TALLOC_FREE(auto_ip_list);
TALLOC_FREE(frame);
return status;
@ -4164,7 +4180,6 @@ NTSTATUS get_sorted_dc_list(TALLOC_CTX *ctx,
bool ordered = false;
NTSTATUS status;
enum dc_lookup_type lookup_type = DC_NORMAL_LOOKUP;
struct ip_service *ip_list = NULL;
struct samba_sockaddr *sa_list = NULL;
size_t count = 0;
@ -4179,7 +4194,7 @@ NTSTATUS get_sorted_dc_list(TALLOC_CTX *ctx,
status = get_dc_list(ctx,
domain,
sitename,
&ip_list,
&sa_list,
&count,
lookup_type,
&ordered);
@ -4192,7 +4207,7 @@ NTSTATUS get_sorted_dc_list(TALLOC_CTX *ctx,
status = get_dc_list(ctx,
domain,
NULL,
&ip_list,
&sa_list,
&count,
lookup_type,
&ordered);
@ -4202,17 +4217,6 @@ NTSTATUS get_sorted_dc_list(TALLOC_CTX *ctx,
return status;
}
status = ip_service_to_samba_sockaddr(ctx,
&sa_list,
ip_list,
count);
TALLOC_FREE(ip_list);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
/* only sort if we don't already have an ordered list */
if (!ordered) {
sort_sa_list(sa_list, count);
@ -4235,7 +4239,6 @@ NTSTATUS get_kdc_list(TALLOC_CTX *ctx,
size_t *ret_count)
{
size_t count = 0;
struct ip_service *ip_list = NULL;
struct samba_sockaddr *sa_list = NULL;
bool ordered = false;
NTSTATUS status;
@ -4243,7 +4246,7 @@ NTSTATUS get_kdc_list(TALLOC_CTX *ctx,
status = get_dc_list(ctx,
realm,
sitename,
&ip_list,
&sa_list,
&count,
DC_KDC_ONLY,
&ordered);
@ -4252,17 +4255,6 @@ NTSTATUS get_kdc_list(TALLOC_CTX *ctx,
return status;
}
status = ip_service_to_samba_sockaddr(ctx,
&sa_list,
ip_list,
count);
TALLOC_FREE(ip_list);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
/* only sort if we don't already have an ordered list */
if (!ordered ) {
sort_sa_list(sa_list, count);