From: Jeremy Allison Date: Wed, 9 Sep 2020 16:26:54 +0000 (-0700) Subject: s3: libsmb: Add prioritize_ipv4_list_sa(). X-Git-Tag: talloc-2.3.2~502 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c5b1d4ffc59ab211ef18911b91bf09e1bae1c3fc;p=thirdparty%2Fsamba.git s3: libsmb: Add prioritize_ipv4_list_sa(). Re-arranges a samba_sockaddr array in IPv4 preference. Not yet used so compiles but ifdef'ed out. Needed for conversion of 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 6595324b255..4ac387b44d5 100644 --- a/source3/libsmb/namequery.c +++ b/source3/libsmb/namequery.c @@ -1364,6 +1364,42 @@ static bool prioritize_ipv4_list(struct ip_service *iplist, size_t count) return true; } +#if 0 +static bool prioritize_ipv4_list_sa(struct samba_sockaddr *salist, size_t count) +{ + TALLOC_CTX *frame = talloc_stackframe(); + struct samba_sockaddr *salist_new = talloc_array(frame, + struct samba_sockaddr, + count); + size_t i, j; + + if (salist_new == NULL) { + TALLOC_FREE(frame); + return false; + } + + j = 0; + + /* Copy IPv4 first. */ + for (i = 0; i < count; i++) { + if (salist[i].u.ss.ss_family == AF_INET) { + salist_new[j++] = salist[i]; + } + } + + /* Copy IPv6. */ + for (i = 0; i < count; i++) { + if (salist[i].u.ss.ss_family != AF_INET) { + salist_new[j++] = salist[i]; + } + } + + memcpy(salist, salist_new, sizeof(struct samba_sockaddr)*count); + TALLOC_FREE(frame); + return true; +} +#endif + /**************************************************************************** Do a netbios name query to find someones IP. Returns an array of IP addresses or NULL if none.