From: Jeremy Allison Date: Wed, 9 Sep 2020 16:32:23 +0000 (-0700) Subject: s3: libsmb: Add internal_resolve_name_sa(). A wrapper for internal_resolve_name(). X-Git-Tag: talloc-2.3.2~501 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fb8acf1717ba60e8285d310a8d4602d2cc08531c;p=thirdparty%2Fsamba.git s3: libsmb: Add internal_resolve_name_sa(). A wrapper for internal_resolve_name(). Not yet used. Now to fix the callers, and convert internal_resolve_name(). Signed-off-by: Jeremy Allison Reviewed-by: Noel Power --- diff --git a/source3/libsmb/namequery.c b/source3/libsmb/namequery.c index 4ac387b44d5..0499593d7c5 100644 --- a/source3/libsmb/namequery.c +++ b/source3/libsmb/namequery.c @@ -3620,6 +3620,51 @@ NTSTATUS internal_resolve_name(TALLOC_CTX *ctx, return status; } +/******************************************************** + Temporary wrapper function for internal_resolve_name(). + Converts to samba_sockaddr array. Will go away once + all callers are converted. +********************************************************/ + +NTSTATUS internal_resolve_name_sa(TALLOC_CTX *ctx, + const char *name, + int name_type, + const char *sitename, + struct samba_sockaddr **return_salist, + size_t *return_count, + const char **resolve_order) +{ + struct ip_service *ss_list = NULL; + struct samba_sockaddr *sa_list = NULL; + size_t count; + NTSTATUS tmp_status; + NTSTATUS status = internal_resolve_name(ctx, + name, + name_type, + sitename, + &ss_list, + &count, + resolve_order); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + tmp_status = ip_service_to_samba_sockaddr(ctx, + &sa_list, + ss_list, + count); + if (!NT_STATUS_IS_OK(tmp_status)) { + TALLOC_FREE(ss_list); + return status; + } + + TALLOC_FREE(ss_list); + *return_count = count; + *return_salist = sa_list; + return status; +} + /******************************************************** Internal interface to resolve a name into one IP address. Use this function if the string is either an IP address, DNS diff --git a/source3/libsmb/namequery.h b/source3/libsmb/namequery.h index 26b8316bb3a..550860c3daf 100644 --- a/source3/libsmb/namequery.h +++ b/source3/libsmb/namequery.h @@ -100,6 +100,13 @@ NTSTATUS internal_resolve_name(TALLOC_CTX *ctx, struct ip_service **return_iplist, size_t *ret_count, const char **resolve_order); +NTSTATUS internal_resolve_name_sa(TALLOC_CTX *ctx, + const char *name, + int name_type, + const char *sitename, + struct samba_sockaddr **return_salist, + size_t *ret_count, + const char **resolve_order); bool resolve_name(const char *name, struct sockaddr_storage *return_ss, int name_type,