]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:libsmb: pass struct smb_transports to smbsock_any_connect()
authorStefan Metzmacher <metze@samba.org>
Sun, 6 Apr 2025 17:05:19 +0000 (19:05 +0200)
committerStefan Metzmacher <metze@samba.org>
Fri, 18 Apr 2025 10:17:29 +0000 (10:17 +0000)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source3/include/proto.h
source3/libsmb/smbsock_connect.c
source3/torture/test_smbsock_any_connect.c
source3/winbindd/winbindd_cm.c

index 23e30959b97702ada9610c45caf8b993e548a5bb..7cf2572e6eecee9288e597133ebefd82c7a874d5 100644 (file)
@@ -690,10 +690,11 @@ NTSTATUS smbsock_any_connect(const struct sockaddr_storage *addrs,
                             const char **calling_names,
                             int *calling_types,
                             size_t num_addrs,
-                            uint16_t port,
+                            const struct smb_transports *transports,
                             int sec_timeout,
                             int *pfd, size_t *chosen_index,
-                            uint16_t *chosen_port);
+                            uint16_t *chosen_port)
+       NONNULL(1) NONNULL(7) NONNULL(9);
 
 /* The following definitions come from lib/util_wellknown.c  */
 
index c327cc7566f14387bbe04ed0f58447686c7d592d..0691a677cddf628a47364cd9f0e476f888f4cf92 100644 (file)
@@ -1030,7 +1030,7 @@ NTSTATUS smbsock_any_connect(const struct sockaddr_storage *addrs,
                             const char **calling_names,
                             int *calling_types,
                             size_t num_addrs,
-                            uint16_t port,
+                            const struct smb_transports *transports,
                             int sec_timeout,
                             int *pfd, size_t *chosen_index,
                             uint16_t *chosen_port)
@@ -1038,7 +1038,6 @@ NTSTATUS smbsock_any_connect(const struct sockaddr_storage *addrs,
        TALLOC_CTX *frame = talloc_stackframe();
        struct tevent_context *ev;
        struct tevent_req *req;
-       struct smb_transports ts = smbsock_transports_from_port(port);
        NTSTATUS status = NT_STATUS_NO_MEMORY;
 
        ev = samba_tevent_context_init(frame);
@@ -1048,7 +1047,7 @@ NTSTATUS smbsock_any_connect(const struct sockaddr_storage *addrs,
        req = smbsock_any_connect_send(frame, ev, addrs,
                                       called_names, called_types,
                                       calling_names, calling_types,
-                                      num_addrs, &ts);
+                                      num_addrs, transports);
        if (req == NULL) {
                goto fail;
        }
index a964e0fd831f5f3f95456fbb5340d575e92cc5f6..8fbf0ac6f8af49326e58878967307814f350ec7c 100644 (file)
@@ -25,6 +25,9 @@ bool run_smb_any_connect(int dummy)
        int fd;
        NTSTATUS status;
        struct sockaddr_storage addrs[5];
+       struct smb_transports ts =
+               smb_transports_parse("client smb transports",
+                       lp_client_smb_transports());
        size_t chosen_index;
        uint16_t port;
 
@@ -35,7 +38,7 @@ 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), 0, 0,
+                                    ARRAY_SIZE(addrs), &ts, 0,
                                     &fd, &chosen_index, &port);
 
        d_printf("smbsock_any_connect returned %s (fd %d)\n",
index dd8d2fae830363fb40bd45ee4c2a882a9fd01665..d0fa451e83a8884b6829b90c8157ab3245c11889 100644 (file)
@@ -1551,7 +1551,9 @@ static bool find_dc(TALLOC_CTX *mem_ctx,
 
        struct sockaddr_storage *addrs = NULL;
        int num_addrs = 0;
-
+       struct smb_transports ts =
+               smb_transports_parse("client smb transports",
+                       lp_client_smb_transports());
        int i;
        size_t fd_index;
 
@@ -1600,7 +1602,7 @@ 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, 0, 10, fd, &fd_index, NULL);
+                                    num_addrs, &ts, 10, fd, &fd_index, NULL);
        if (!NT_STATUS_IS_OK(status)) {
                for (i=0; i<num_dcs; i++) {
                        char ab[INET6_ADDRSTRLEN];