mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
s3: libsmb: Add get_kdc_list_talloc().
Talloc version of get_kdc_list(). Makes use of dup_ip_service_array(). Now to move the callers. Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Noel Power <npower@samba.org>
This commit is contained in:
parent
02016acb2d
commit
e8a491691d
@ -64,7 +64,6 @@ bool sockaddr_storage_to_samba_sockaddr(struct samba_sockaddr *sa,
|
||||
return true;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* Utility function to convert a MALLOC'ed struct ip_serivce array
|
||||
* to a talloc'ed one. This function will go away once all ip_service
|
||||
@ -87,7 +86,6 @@ static NTSTATUS dup_ip_service_array(TALLOC_CTX *ctx,
|
||||
*array_out = array_copy;
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************
|
||||
* SERVER AFFINITY ROUTINES *
|
||||
@ -4046,3 +4044,59 @@ NTSTATUS get_kdc_list( const char *realm,
|
||||
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
Talloc version.
|
||||
Get the KDC list - re-use all the logic in get_dc_list.
|
||||
*********************************************************************/
|
||||
|
||||
NTSTATUS get_kdc_list_talloc(TALLOC_CTX *ctx,
|
||||
const char *realm,
|
||||
const char *sitename,
|
||||
struct ip_service **ip_list_ret,
|
||||
size_t *ret_count)
|
||||
{
|
||||
int count = 0;
|
||||
struct ip_service *ip_list_malloc = NULL;
|
||||
struct ip_service *ip_list = NULL;
|
||||
bool ordered = false;
|
||||
NTSTATUS status;
|
||||
|
||||
status = get_dc_list(realm,
|
||||
sitename,
|
||||
&ip_list_malloc,
|
||||
&count,
|
||||
DC_KDC_ONLY,
|
||||
&ordered);
|
||||
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Paranoia check. */
|
||||
if (count < 0) {
|
||||
status = NT_STATUS_INVALID_PARAMETER;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* only sort if we don't already have an ordered list */
|
||||
if (!ordered ) {
|
||||
sort_service_list(ip_list_malloc, count);
|
||||
}
|
||||
|
||||
status = dup_ip_service_array(ctx,
|
||||
&ip_list,
|
||||
ip_list_malloc,
|
||||
(size_t)count);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
*ret_count = (size_t)count;
|
||||
*ip_list_ret = ip_list;
|
||||
|
||||
out:
|
||||
|
||||
SAFE_FREE(ip_list_malloc);
|
||||
return status;
|
||||
}
|
||||
|
@ -118,5 +118,9 @@ NTSTATUS get_kdc_list( const char *realm,
|
||||
const char *sitename,
|
||||
struct ip_service **ip_list,
|
||||
int *count);
|
||||
|
||||
NTSTATUS get_kdc_list_talloc(TALLOC_CTX *ctx,
|
||||
const char *realm,
|
||||
const char *sitename,
|
||||
struct ip_service **ip_list_ret,
|
||||
size_t *ret_count);
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user