s3:libsmb: pass dest_ss to cli_cm_open()
authorStefan Metzmacher <metze@samba.org>
Thu, 23 Aug 2018 07:21:41 +0000 (09:21 +0200)
committerJeremy Allison <jra@samba.org>
Wed, 26 Feb 2020 19:45:36 +0000 (19:45 +0000)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/client/client.c
source3/lib/netapi/cm.c
source3/libsmb/clidfs.c
source3/libsmb/proto.h

index d907890ddaf1b7e3cff9e0efb8dcf220351e54d1..8d329216d58c17947ef1728d7fb98789116b4fb5 100644 (file)
@@ -5719,10 +5719,12 @@ static int process_command_string(const char *cmd_in)
                NTSTATUS status;
 
                status = cli_cm_open(talloc_tos(), NULL,
-                                    have_ip ? dest_ss_str : desthost,
+                                    desthost,
                                     service, popt_get_cmdline_auth_info(),
                                     smb_encrypt,
-                                    max_protocol, port, name_type,
+                                    max_protocol,
+                                    have_ip ? &dest_ss : NULL, port,
+                                    name_type,
                                     &cli);
                if (!NT_STATUS_IS_OK(status)) {
                        return 1;
@@ -6162,9 +6164,10 @@ static int process(const char *base_directory)
        NTSTATUS status;
 
        status = cli_cm_open(talloc_tos(), NULL,
-                            have_ip ? dest_ss_str : desthost,
+                            desthost,
                             service, popt_get_cmdline_auth_info(),
-                            smb_encrypt, max_protocol, port,
+                            smb_encrypt, max_protocol,
+                            have_ip ? &dest_ss : NULL, port,
                             name_type, &cli);
        if (!NT_STATUS_IS_OK(status)) {
                return 1;
@@ -6199,9 +6202,10 @@ static int do_host_query(const char *query_host)
        NTSTATUS status;
 
        status = cli_cm_open(talloc_tos(), NULL,
-                            have_ip ? dest_ss_str : query_host,
+                            query_host,
                             "IPC$", popt_get_cmdline_auth_info(),
-                            smb_encrypt, max_protocol, port,
+                            smb_encrypt, max_protocol,
+                            have_ip ? &dest_ss : NULL, port,
                             name_type, &cli);
        if (!NT_STATUS_IS_OK(status)) {
                return 1;
@@ -6245,10 +6249,11 @@ static int do_host_query(const char *query_host)
                cli_shutdown(cli);
                d_printf("Reconnecting with SMB1 for workgroup listing.\n");
                status = cli_cm_open(talloc_tos(), NULL,
-                                    have_ip ? dest_ss_str : query_host,
+                                    query_host,
                                     "IPC$", popt_get_cmdline_auth_info(),
                                     smb_encrypt, max_proto,
-                                    NBT_SMB_PORT, name_type, &cli);
+                                    have_ip ? &dest_ss : NULL, NBT_SMB_PORT,
+                                    name_type, &cli);
                if (!NT_STATUS_IS_OK(status)) {
                        d_printf("Unable to connect with SMB1 "
                                 "-- no workgroup available\n");
@@ -6278,10 +6283,11 @@ static int do_tar_op(const char *base_directory)
                NTSTATUS status;
 
                status = cli_cm_open(talloc_tos(), NULL,
-                                    have_ip ? dest_ss_str : desthost,
+                                    desthost,
                                     service, popt_get_cmdline_auth_info(),
                                     smb_encrypt, max_protocol,
-                                    port, name_type, &cli);
+                                    have_ip ? &dest_ss : NULL, port,
+                                    name_type, &cli);
                if (!NT_STATUS_IS_OK(status)) {
             ret = 1;
             goto out;
index 95132f28f05c64a82166a86371c75ce6cb3ba85e..1b8f2a4e97aed22e1f7ddd50a1821b966f3bd17e 100644 (file)
@@ -112,7 +112,7 @@ static WERROR libnetapi_open_ipc_connection(struct libnetapi_ctx *ctx,
                             auth_info,
                             false,
                             lp_client_ipc_max_protocol(),
-                            0, 0x20, &cli_ipc);
+                            NULL, 0, 0x20, &cli_ipc);
        if (!NT_STATUS_IS_OK(status)) {
                cli_ipc = NULL;
        }
index e9120acf264b37898e3df5500b82aeef4287d5ab..25f932c60bb0528dc898b0aabe4d93e9b0486cc7 100644 (file)
@@ -426,6 +426,7 @@ NTSTATUS cli_cm_open(TALLOC_CTX *ctx,
                                const struct user_auth_info *auth_info,
                                bool force_encrypt,
                                int max_protocol,
+                               const struct sockaddr_storage *dest_ss,
                                int port,
                                int name_type,
                                struct cli_state **pcli)
@@ -455,7 +456,7 @@ NTSTATUS cli_cm_open(TALLOC_CTX *ctx,
                                auth_info,
                                force_encrypt,
                                max_protocol,
-                               NULL, /* dest_ss */
+                               dest_ss,
                                port,
                                name_type,
                                &c);
@@ -1004,6 +1005,7 @@ NTSTATUS cli_resolve_path(TALLOC_CTX *ctx,
                             dfs_auth_info,
                             cli_state_is_encryption_on(rootcli),
                             smbXcli_conn_protocol(rootcli->conn),
+                            NULL, /* dest_ss not needed, we reuse the transport */
                             0,
                             0x20,
                             &cli_ipc);
index 12241fda79825d87bf74d27c1b711a994e981ac6..a7bbb7decd45b3f1ba6a911d890f386a0a61adcb 100644 (file)
@@ -150,6 +150,7 @@ NTSTATUS cli_cm_open(TALLOC_CTX *ctx,
                                const struct user_auth_info *auth_info,
                                bool force_encrypt,
                                int max_protocol,
+                               const struct sockaddr_storage *dest_ss,
                                int port,
                                int name_type,
                                struct cli_state **pcli);