]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:libsmb: pass struct loadparm_context to smbsock_any_connect()
authorStefan Metzmacher <metze@samba.org>
Thu, 10 Apr 2025 14:48:48 +0000 (16:48 +0200)
committerStefan Metzmacher <metze@samba.org>
Fri, 18 Apr 2025 10:17:30 +0000 (10:17 +0000)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source3/libsmb/smbsock_connect.c
source3/libsmb/smbsock_connect.h
source3/torture/test_smbsock_any_connect.c
source3/winbindd/winbindd_cm.c

index 91f7db1743a381162aaf616c6160369b397a9556..2a4cfa800439e3593580ee150280c002d7ba6d9e 100644 (file)
@@ -1031,6 +1031,7 @@ NTSTATUS smbsock_any_connect(const struct sockaddr_storage *addrs,
                             const char **calling_names,
                             int *calling_types,
                             size_t num_addrs,
+                            struct loadparm_context *lp_ctx,
                             const struct smb_transports *transports,
                             int sec_timeout,
                             int *pfd, size_t *chosen_index,
index 1a0fbce85a392c805a7361bedf492ffbd74747ba..902e977cfeb89082926208cce33a2cc3d8e8d24a 100644 (file)
@@ -60,10 +60,11 @@ NTSTATUS smbsock_any_connect(const struct sockaddr_storage *addrs,
                             const char **calling_names,
                             int *calling_types,
                             size_t num_addrs,
+                            struct loadparm_context *lp_ctx,
                             const struct smb_transports *transports,
                             int sec_timeout,
                             int *pfd, size_t *chosen_index,
                             uint16_t *chosen_port)
-       NONNULL(1) NONNULL(7) NONNULL(9);
+       NONNULL(1) NONNULL(7) NONNULL(8) NONNULL(10);
 
 #endif /* _LIBSMB_SMBSOCK_CONNECT_H_ */
index 98a0618b952ea5058296a7cc5466ae949f855d56..6cdad1149fc1822542121da1babd6d56fddeb2e8 100644 (file)
@@ -18,6 +18,8 @@
 */
 
 #include "includes.h"
+#include "lib/param/param.h"
+#include "source3/param/loadparm.h"
 #include "libsmb/smbsock_connect.h"
 #include "torture/proto.h"
 
@@ -30,8 +32,14 @@ bool run_smb_any_connect(int dummy)
                smb_transports_parse("client smb transports",
                        lp_client_smb_transports());
        size_t chosen_index;
+       struct loadparm_context *lp_ctx = NULL;
        uint16_t port;
 
+       lp_ctx = loadparm_init_s3(NULL, loadparm_s3_helpers());
+       if (lp_ctx == NULL) {
+               return false;
+       }
+
        interpret_string_addr(&addrs[0], "192.168.99.5", 0);
        interpret_string_addr(&addrs[1], "192.168.99.6", 0);
        interpret_string_addr(&addrs[2], "192.168.99.7", 0);
@@ -39,8 +47,9 @@ bool run_smb_any_connect(int dummy)
        interpret_string_addr(&addrs[4], "192.168.99.9", 0);
 
        status = smbsock_any_connect(addrs, NULL, NULL, NULL, NULL,
-                                    ARRAY_SIZE(addrs), &ts, 0,
+                                    ARRAY_SIZE(addrs), lp_ctx, &ts, 0,
                                     &fd, &chosen_index, &port);
+       TALLOC_FREE(lp_ctx);
 
        d_printf("smbsock_any_connect returned %s (fd %d)\n",
                 nt_errstr(status), NT_STATUS_IS_OK(status) ? fd : -1);
index 9452a8db7e08330366c11a31697d083619c0e166..6d90f691b66c6a2166c68d07a8873fcc5d3376f4 100644 (file)
@@ -1544,6 +1544,7 @@ static bool find_dc(TALLOC_CTX *mem_ctx,
                    uint32_t request_flags,
                    int *fd)
 {
+       struct loadparm_context *lp_ctx = NULL;
        struct dc_name_ip *dcs = NULL;
        int num_dcs = 0;
 
@@ -1575,6 +1576,12 @@ static bool find_dc(TALLOC_CTX *mem_ctx,
                return false;
        }
 
+       lp_ctx = loadparm_init_s3(talloc_tos(), loadparm_s3_helpers());
+       if (lp_ctx == NULL) {
+               DBG_ERR("loadparm_init_s3 failed\n");
+               return false;
+       }
+
  again:
        D_DEBUG("Retrieving a list of IP addresses for DCs.\n");
        if (!get_dcs(mem_ctx, domain, &dcs, &num_dcs, request_flags) || (num_dcs == 0))
@@ -1603,7 +1610,8 @@ static bool find_dc(TALLOC_CTX *mem_ctx,
                "(timeout of 10 sec for each DC).\n",
                num_dcs);
        status = smbsock_any_connect(addrs, dcnames, NULL, NULL, NULL,
-                                    num_addrs, &ts, 10, fd, &fd_index, NULL);
+                                    num_addrs, lp_ctx, &ts,
+                                    10, fd, &fd_index, NULL);
        if (!NT_STATUS_IS_OK(status)) {
                for (i=0; i<num_dcs; i++) {
                        char ab[INET6_ADDRSTRLEN];