]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: libsmb: namequery: Add utility function sockaddr_array_to_samba_sockaddr_array().
authorJeremy Allison <jra@samba.org>
Wed, 9 Sep 2020 17:24:13 +0000 (10:24 -0700)
committerNoel Power <npower@samba.org>
Tue, 15 Sep 2020 10:09:40 +0000 (10:09 +0000)
Not yet used. Will help convert _internal_resolve_name() to internal_resolve_name().

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Noel Power <noel.power@suse.com>
source3/libsmb/namequery.c

index fb6ebf8c42468c61f07c7ba7b9258f16f3de2295..765e0c6b0f162bc2d62a75828503ca1e4e7cf804 100644 (file)
@@ -105,6 +105,66 @@ static NTSTATUS ip_service_to_samba_sockaddr(TALLOC_CTX *ctx,
        return NT_STATUS_OK;
 }
 
+#if 0
+/*
+ * Utility function to convert from a sockaddr_storage
+ * array to a struct samba_sockaddr array.
+ */
+
+static NTSTATUS sockaddr_array_to_samba_sockaddr_array(
+                               TALLOC_CTX *ctx,
+                               struct samba_sockaddr **sa_out,
+                               size_t *count_out,
+                               const struct sockaddr_storage *ss_in,
+                               size_t count_in)
+{
+       struct samba_sockaddr *sa = NULL;
+       size_t i;
+       size_t count = 0;
+
+       if (count_in == 0) {
+               /*
+                * Zero length arrays are returned as NULL.
+                * in the name resolution code.
+                */
+               *count_out = 0;
+               *sa_out = NULL;
+               return NT_STATUS_OK;
+       }
+       sa = talloc_zero_array(ctx,
+                               struct samba_sockaddr,
+                               count_in);
+       if (sa == NULL) {
+               return NT_STATUS_NO_MEMORY;
+       }
+       count = 0;
+       for (i = 0; i < count_in; i++) {
+               bool ok;
+
+               /* Filter out zero addresses. */
+               if (is_zero_addr(&ss_in[i])) {
+                       continue;
+               }
+               ok = sockaddr_storage_to_samba_sockaddr(&sa[count],
+                                                       &ss_in[i]);
+               if (!ok) {
+                       continue;
+               }
+               count++;
+       }
+       if (count == 0) {
+               /*
+                * Zero length arrays are returned as NULL.
+                * in the name resolution code.
+                */
+               TALLOC_FREE(sa);
+       }
+       *count_out = count;
+       *sa_out = sa;
+       return NT_STATUS_OK;
+}
+#endif
+
 /****************************
  * SERVER AFFINITY ROUTINES *
  ****************************/