s3/libsmb: Generalise cli_state in smb2 query_directory calls
[obnox/samba/samba-obnox.git] / source3 / torture / test_smb2.c
index eaeed82423a18ea521150fe5d6d32ea4089ff2e6..8ce0ad84e73262cd32ed0f518796dd01a414b3c3 100644 (file)
@@ -72,7 +72,8 @@ bool run_smb2_basic(int dummy)
                return false;
        }
 
-       status = smb2cli_create(cli, "smb2-basic.txt",
+       status = smb2cli_create(cli->conn, cli->timeout, cli->smb2.session,
+                       cli->smb2.tid, "smb2-basic.txt",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_ALL | SEC_FILE_ALL, /* desired_access, */
@@ -95,15 +96,17 @@ bool run_smb2_basic(int dummy)
                return false;
        }
 
-       status = smb2cli_flush(cli, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli->conn, cli->timeout, cli->smb2.session,
+                              cli->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_read(cli, 0x10000, 0, fid_persistent,
-                              fid_volatile, 2, 0,
-                              talloc_tos(), &result, &nread);
+       status = smb2cli_read(cli->conn, cli->timeout, cli->smb2.session,
+                             cli->smb2.tid, 0x10000, 0, fid_persistent,
+                             fid_volatile, 2, 0,
+                             talloc_tos(), &result, &nread);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_read returned %s\n", nt_errstr(status));
                return false;
@@ -121,13 +124,15 @@ bool run_smb2_basic(int dummy)
                return false;
        }
 
-       status = smb2cli_close(cli, 0, fid_persistent, fid_volatile);
+       status = smb2cli_close(cli->conn, cli->timeout, cli->smb2.session,
+                              cli->smb2.tid, 0, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_close returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_create(cli, "",
+       status = smb2cli_create(cli->conn, cli->timeout, cli->smb2.session,
+                       cli->smb2.tid, "",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_SYNCHRONIZE|
@@ -146,7 +151,8 @@ bool run_smb2_basic(int dummy)
        }
 
        status = smb2cli_query_directory(
-               cli, 1, 0, 0, fid_persistent, fid_volatile, "*", 0xffff,
+               cli->conn, cli->timeout, cli->smb2.session, cli->smb2.tid,
+               1, 0, 0, fid_persistent, fid_volatile, "*", 0xffff,
                talloc_tos(), &dir_data, &dir_data_length);
 
        if (!NT_STATUS_IS_OK(status)) {
@@ -154,7 +160,8 @@ bool run_smb2_basic(int dummy)
                return false;
        }
 
-       status = smb2cli_close(cli, 0, fid_persistent, fid_volatile);
+       status = smb2cli_close(cli->conn, cli->timeout, cli->smb2.session,
+                              cli->smb2.tid, 0, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_close returned %s\n", nt_errstr(status));
                return false;
@@ -213,7 +220,7 @@ bool run_smb2_negprot(int dummy)
        cli->smb2.pid = 0xFEFF;
 
        status = smbXcli_negprot(cli->conn, cli->timeout,
-                                PROTOCOL_CORE, PROTOCOL_SMB2_24);
+                                PROTOCOL_CORE, PROTOCOL_LATEST);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smbXcli_negprot returned %s\n", nt_errstr(status));
                return false;
@@ -234,6 +241,9 @@ bool run_smb2_negprot(int dummy)
        case PROTOCOL_SMB2_24:
                name = "SMB2_24";
                break;
+       case PROTOCOL_SMB3_00:
+               name = "SMB3_00";
+               break;
        default:
                break;
        }
@@ -290,7 +300,7 @@ bool run_smb2_session_reconnect(int dummy)
        cli1->smb2.pid = 0xFEFF;
 
        status = smbXcli_negprot(cli1->conn, cli1->timeout,
-                                PROTOCOL_SMB2_02, PROTOCOL_SMB2_24);
+                                PROTOCOL_SMB2_02, PROTOCOL_LATEST);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smbXcli_negprot returned %s\n", nt_errstr(status));
                return false;
@@ -311,7 +321,8 @@ bool run_smb2_session_reconnect(int dummy)
                return false;
        }
 
-       status = smb2cli_create(cli1, "session-reconnect.txt",
+       status = smb2cli_create(cli1->conn, cli1->timeout, cli1->smb2.session,
+                       cli1->smb2.tid, "session-reconnect.txt",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_ALL | SEC_FILE_ALL, /* desired_access, */
@@ -334,15 +345,17 @@ bool run_smb2_session_reconnect(int dummy)
                return false;
        }
 
-       status = smb2cli_flush(cli1, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli1->conn, cli1->timeout, cli1->smb2.session,
+                              cli1->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_read(cli1, 0x10000, 0, fid_persistent,
-                              fid_volatile, 2, 0,
-                              talloc_tos(), &result, &nread);
+       status = smb2cli_read(cli1->conn, cli1->timeout, cli1->smb2.session,
+                             cli1->smb2.tid, 0x10000, 0, fid_persistent,
+                             fid_volatile, 2, 0,
+                             talloc_tos(), &result, &nread);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_read returned %s\n", nt_errstr(status));
                return false;
@@ -368,7 +381,7 @@ bool run_smb2_session_reconnect(int dummy)
        cli2->smb2.pid = 0xFEFF;
 
        status = smbXcli_negprot(cli2->conn, cli2->timeout,
-                                PROTOCOL_SMB2_02, PROTOCOL_SMB2_24);
+                                PROTOCOL_SMB2_02, PROTOCOL_LATEST);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smbXcli_negprot returned %s\n", nt_errstr(status));
                return false;
@@ -494,7 +507,8 @@ bool run_smb2_session_reconnect(int dummy)
 
        /* check file operation on the old client */
 
-       status = smb2cli_flush(cli1, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli1->conn, cli1->timeout, cli1->smb2.session,
+                              cli1->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_EQUAL(status, NT_STATUS_USER_SESSION_DELETED)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
@@ -511,7 +525,8 @@ bool run_smb2_session_reconnect(int dummy)
         * on w2k8r2 at least, flush, read and write also work the same way,
         * while create gives ACCESS_DENIED without signing
         */
-       status = smb2cli_flush(cli2, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli2->conn, cli2->timeout, cli2->smb2.session,
+                              cli2->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_EQUAL(status, NT_STATUS_FILE_CLOSED)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
@@ -524,15 +539,17 @@ bool run_smb2_session_reconnect(int dummy)
                return false;
        }
 
-       status = smb2cli_read(cli2, 0x10000, 0, fid_persistent,
-                              fid_volatile, 2, 0,
-                              talloc_tos(), &result, &nread);
+       status = smb2cli_read(cli2->conn, cli2->timeout, cli2->smb2.session,
+                             cli2->smb2.tid, 0x10000, 0, fid_persistent,
+                             fid_volatile, 2, 0,
+                             talloc_tos(), &result, &nread);
        if (!NT_STATUS_EQUAL(status, NT_STATUS_FILE_CLOSED)) {
                printf("smb2cli_read returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_create(cli2, "session-reconnect.txt",
+       status = smb2cli_create(cli2->conn, cli2->timeout, cli2->smb2.session,
+                       cli2->smb2.tid, "session-reconnect.txt",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_ALL | SEC_FILE_ALL, /* desired_access, */
@@ -563,7 +580,8 @@ bool run_smb2_session_reconnect(int dummy)
 
        cli2->smb2.tid = cli1->smb2.tid;
 
-       status = smb2cli_flush(cli2, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli2->conn, cli2->timeout, cli2->smb2.session,
+                              cli2->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_EQUAL(status, NT_STATUS_FILE_CLOSED)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
@@ -576,15 +594,17 @@ bool run_smb2_session_reconnect(int dummy)
                return false;
        }
 
-       status = smb2cli_read(cli2, 0x10000, 0, fid_persistent,
-                              fid_volatile, 2, 0,
-                              talloc_tos(), &result, &nread);
+       status = smb2cli_read(cli2->conn, cli2->timeout, cli2->smb2.session,
+                             cli2->smb2.tid, 0x10000, 0, fid_persistent,
+                             fid_volatile, 2, 0,
+                             talloc_tos(), &result, &nread);
        if (!NT_STATUS_EQUAL(status, NT_STATUS_FILE_CLOSED)) {
                printf("smb2cli_read returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_create(cli2, "session-reconnect.txt",
+       status = smb2cli_create(cli2->conn, cli2->timeout, cli2->smb2.session,
+                       cli2->smb2.tid, "session-reconnect.txt",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_ALL | SEC_FILE_ALL, /* desired_access, */
@@ -608,7 +628,8 @@ bool run_smb2_session_reconnect(int dummy)
                return false;
        }
 
-       status = smb2cli_create(cli2, "session-reconnect.txt",
+       status = smb2cli_create(cli2->conn, cli2->timeout, cli2->smb2.session,
+                       cli2->smb2.tid, "session-reconnect.txt",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_ALL | SEC_FILE_ALL, /* desired_access, */
@@ -631,15 +652,17 @@ bool run_smb2_session_reconnect(int dummy)
                return false;
        }
 
-       status = smb2cli_flush(cli2, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli2->conn, cli2->timeout, cli2->smb2.session,
+                              cli2->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_read(cli2, 0x10000, 0, fid_persistent,
-                              fid_volatile, 2, 0,
-                              talloc_tos(), &result, &nread);
+       status = smb2cli_read(cli2->conn, cli2->timeout, cli2->smb2.session,
+                             cli2->smb2.tid, 0x10000, 0, fid_persistent,
+                             fid_volatile, 2, 0,
+                             talloc_tos(), &result, &nread);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_read returned %s\n", nt_errstr(status));
                return false;
@@ -677,7 +700,7 @@ bool run_smb2_tcon_dependence(int dummy)
        cli->smb2.pid = 0xFEFF;
 
        status = smbXcli_negprot(cli->conn, cli->timeout,
-                                PROTOCOL_SMB2_02, PROTOCOL_SMB2_24);
+                                PROTOCOL_SMB2_02, PROTOCOL_LATEST);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smbXcli_negprot returned %s\n", nt_errstr(status));
                return false;
@@ -698,7 +721,8 @@ bool run_smb2_tcon_dependence(int dummy)
                return false;
        }
 
-       status = smb2cli_create(cli, "tcon_depedence.txt",
+       status = smb2cli_create(cli->conn, cli->timeout, cli->smb2.session,
+                       cli->smb2.tid, "tcon_depedence.txt",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_ALL | SEC_FILE_ALL, /* desired_access, */
@@ -721,15 +745,17 @@ bool run_smb2_tcon_dependence(int dummy)
                return false;
        }
 
-       status = smb2cli_flush(cli, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli->conn, cli->timeout, cli->smb2.session,
+                              cli->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_read(cli, 0x10000, 0, fid_persistent,
-                              fid_volatile, 2, 0,
-                              talloc_tos(), &result, &nread);
+       status = smb2cli_read(cli->conn, cli->timeout, cli->smb2.session,
+                             cli->smb2.tid, 0x10000, 0, fid_persistent,
+                             fid_volatile, 2, 0,
+                             talloc_tos(), &result, &nread);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_read returned %s\n", nt_errstr(status));
                return false;
@@ -751,9 +777,10 @@ bool run_smb2_tcon_dependence(int dummy)
 
        cli->smb2.tid++;
 
-       status = smb2cli_read(cli, 0x10000, 0, fid_persistent,
-                              fid_volatile, 2, 0,
-                              talloc_tos(), &result, &nread);
+       status = smb2cli_read(cli->conn, cli->timeout, cli->smb2.session,
+                             cli->smb2.tid, 0x10000, 0, fid_persistent,
+                             fid_volatile, 2, 0,
+                             talloc_tos(), &result, &nread);
        if (!NT_STATUS_EQUAL(status, NT_STATUS_NETWORK_NAME_DELETED)) {
                printf("smb2cli_read returned %s\n", nt_errstr(status));
                return false;
@@ -801,21 +828,21 @@ bool run_smb2_multi_channel(int dummy)
        cli3->smb2.pid = 0xFEFF;
 
        status = smbXcli_negprot(cli1->conn, cli1->timeout,
-                                PROTOCOL_SMB2_22, PROTOCOL_SMB2_24);
+                                PROTOCOL_SMB2_22, PROTOCOL_LATEST);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smbXcli_negprot returned %s\n", nt_errstr(status));
                return false;
        }
 
        status = smbXcli_negprot(cli2->conn, cli2->timeout,
-                                PROTOCOL_SMB2_22, PROTOCOL_SMB2_24);
+                                PROTOCOL_SMB2_22, PROTOCOL_LATEST);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smbXcli_negprot returned %s\n", nt_errstr(status));
                return false;
        }
 
        status = smbXcli_negprot(cli3->conn, cli3->timeout,
-                                PROTOCOL_SMB2_22, PROTOCOL_SMB2_24);
+                                PROTOCOL_SMB2_22, PROTOCOL_LATEST);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smbXcli_negprot returned %s\n", nt_errstr(status));
                return false;
@@ -1098,7 +1125,8 @@ bool run_smb2_multi_channel(int dummy)
 
        cli3->smb2.tid = cli2->smb2.tid;
 
-       status = smb2cli_create(cli2, "multi-channel.txt",
+       status = smb2cli_create(cli2->conn, cli2->timeout, cli2->smb2.session,
+                       cli2->smb2.tid, "multi-channel.txt",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_ALL | SEC_FILE_ALL, /* desired_access, */
@@ -1121,27 +1149,31 @@ bool run_smb2_multi_channel(int dummy)
                return false;
        }
 
-       status = smb2cli_flush(cli2, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli2->conn, cli2->timeout, cli2->smb2.session,
+                              cli2->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_flush(cli1, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli1->conn, cli1->timeout, cli1->smb2.session,
+                              cli1->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_flush(cli3, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli3->conn, cli3->timeout, cli3->smb2.session,
+                              cli3->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_read(cli2, 0x10000, 0, fid_persistent,
-                              fid_volatile, 2, 0,
-                              talloc_tos(), &result, &nread);
+       status = smb2cli_read(cli2->conn, cli2->timeout, cli2->smb2.session,
+                             cli2->smb2.tid, 0x10000, 0, fid_persistent,
+                             fid_volatile, 2, 0,
+                             talloc_tos(), &result, &nread);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_read returned %s\n", nt_errstr(status));
                return false;
@@ -1231,25 +1263,29 @@ bool run_smb2_multi_channel(int dummy)
                return false;
        }
 
-       status = smb2cli_flush(cli1, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli1->conn, cli1->timeout, cli1->smb2.session,
+                              cli1->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_flush(cli2, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli2->conn, cli2->timeout, cli2->smb2.session,
+                              cli2->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_flush(cli3, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli3->conn, cli3->timeout, cli3->smb2.session,
+                              cli3->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_create(cli1, "multi-channel-invalid.txt",
+       status = smb2cli_create(cli1->conn, cli1->timeout, cli1->smb2.session,
+                       cli1->smb2.tid, "multi-channel-invalid.txt",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_ALL | SEC_FILE_ALL, /* desired_access, */
@@ -1265,7 +1301,8 @@ bool run_smb2_multi_channel(int dummy)
                return false;
        }
 
-       status = smb2cli_create(cli2, "multi-channel-invalid.txt",
+       status = smb2cli_create(cli2->conn, cli2->timeout, cli2->smb2.session,
+                       cli2->smb2.tid, "multi-channel-invalid.txt",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_ALL | SEC_FILE_ALL, /* desired_access, */
@@ -1281,7 +1318,8 @@ bool run_smb2_multi_channel(int dummy)
                return false;
        }
 
-       status = smb2cli_create(cli3, "multi-channel-invalid.txt",
+       status = smb2cli_create(cli3->conn, cli3->timeout, cli3->smb2.session,
+                       cli3->smb2.tid, "multi-channel-invalid.txt",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_ALL | SEC_FILE_ALL, /* desired_access, */
@@ -1325,25 +1363,29 @@ bool run_smb2_multi_channel(int dummy)
                return false;
        }
 
-       status = smb2cli_close(cli3, 0, fid_persistent, fid_volatile);
+       status = smb2cli_close(cli3->conn, cli3->timeout, cli3->smb2.session,
+                              cli3->smb2.tid, 0, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_close returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_flush(cli3, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli3->conn, cli3->timeout, cli3->smb2.session,
+                              cli3->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_EQUAL(status, NT_STATUS_FILE_CLOSED)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_flush(cli2, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli2->conn, cli2->timeout, cli2->smb2.session,
+                              cli2->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_EQUAL(status, NT_STATUS_FILE_CLOSED)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_flush(cli1, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli1->conn, cli1->timeout, cli1->smb2.session,
+                              cli1->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_EQUAL(status, NT_STATUS_FILE_CLOSED)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
@@ -1407,7 +1449,8 @@ bool run_smb2_session_reauth(int dummy)
                return false;
        }
 
-       status = smb2cli_create(cli, "session-reauth.txt",
+       status = smb2cli_create(cli->conn, cli->timeout, cli->smb2.session,
+                       cli->smb2.tid, "session-reauth.txt",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_ALL | SEC_FILE_ALL, /* desired_access, */
@@ -1423,7 +1466,8 @@ bool run_smb2_session_reauth(int dummy)
                return false;
        }
 
-       status = smb2cli_create(cli, "",
+       status = smb2cli_create(cli->conn, cli->timeout, cli->smb2.session,
+                       cli->smb2.tid, "",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_SYNCHRONIZE|
@@ -1442,7 +1486,8 @@ bool run_smb2_session_reauth(int dummy)
        }
 
        status = smb2cli_query_directory(
-               cli, 1, 0x3, 0, dir_persistent, dir_volatile,
+               cli->conn, cli->timeout, cli->smb2.session, cli->smb2.tid,
+               1, 0x3, 0, dir_persistent, dir_volatile,
                "session-reauth.txt", 0xffff,
                talloc_tos(), &dir_data, &dir_data_length);
        if (!NT_STATUS_IS_OK(status)) {
@@ -1528,14 +1573,16 @@ bool run_smb2_session_reauth(int dummy)
                return false;
        }
 
-       status = smb2cli_flush(cli, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli->conn, cli->timeout, cli->smb2.session,
+                              cli->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
        }
 
        status = smb2cli_query_directory(
-               cli, 1, 0x3, 0, dir_persistent, dir_volatile,
+               cli->conn, cli->timeout, cli->smb2.session, cli->smb2.tid,
+               1, 0x3, 0, dir_persistent, dir_volatile,
                "session-reauth.txt", 0xffff,
                talloc_tos(), &dir_data, &dir_data_length);
        if (!NT_STATUS_IS_OK(status)) {
@@ -1604,7 +1651,8 @@ bool run_smb2_session_reauth(int dummy)
                return false;
        }
 
-       status = smb2cli_create(cli, "session-reauth-invalid.txt",
+       status = smb2cli_create(cli->conn, cli->timeout, cli->smb2.session,
+                       cli->smb2.tid, "session-reauth-invalid.txt",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_ALL | SEC_FILE_ALL, /* desired_access, */
@@ -1620,7 +1668,8 @@ bool run_smb2_session_reauth(int dummy)
                return false;
        }
 
-       status = smb2cli_create(cli, "",
+       status = smb2cli_create(cli->conn, cli->timeout, cli->smb2.session,
+                       cli->smb2.tid, "",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_SYNCHRONIZE|
@@ -1674,7 +1723,8 @@ bool run_smb2_session_reauth(int dummy)
                return false;
        }
 
-       status = smb2cli_flush(cli, fid_persistent, fid_volatile);
+       status = smb2cli_flush(cli->conn, cli->timeout, cli->smb2.session,
+                              cli->smb2.tid, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_flush returned %s\n", nt_errstr(status));
                return false;
@@ -1758,13 +1808,15 @@ bool run_smb2_session_reauth(int dummy)
                return false;
        }
 
-       status = smb2cli_close(cli, 0, fid_persistent, fid_volatile);
+       status = smb2cli_close(cli->conn, cli->timeout, cli->smb2.session,
+                              cli->smb2.tid, 0, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_close returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_create(cli, "session-reauth.txt",
+       status = smb2cli_create(cli->conn, cli->timeout, cli->smb2.session,
+                       cli->smb2.tid, "session-reauth.txt",
                        SMB2_OPLOCK_LEVEL_NONE, /* oplock_level, */
                        SMB2_IMPERSONATION_IMPERSONATION, /* impersonation_level, */
                        SEC_STD_ALL | SEC_FILE_ALL, /* desired_access, */
@@ -1781,7 +1833,8 @@ bool run_smb2_session_reauth(int dummy)
        }
 
        status = smb2cli_query_directory(
-               cli, 1, 0x3, 0, dir_persistent, dir_volatile,
+               cli->conn, cli->timeout, cli->smb2.session, cli->smb2.tid,
+               1, 0x3, 0, dir_persistent, dir_volatile,
                "session-reauth.txt", 0xffff,
                talloc_tos(), &dir_data, &dir_data_length);
        if (!NT_STATUS_IS_OK(status)) {
@@ -1789,13 +1842,15 @@ bool run_smb2_session_reauth(int dummy)
                return false;
        }
 
-       status = smb2cli_close(cli, 0, dir_persistent, dir_volatile);
+       status = smb2cli_close(cli->conn, cli->timeout, cli->smb2.session,
+                              cli->smb2.tid, 0, dir_persistent, dir_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_close returned %s\n", nt_errstr(status));
                return false;
        }
 
-       status = smb2cli_close(cli, 0, fid_persistent, fid_volatile);
+       status = smb2cli_close(cli->conn, cli->timeout, cli->smb2.session,
+                              cli->smb2.tid, 0, fid_persistent, fid_volatile);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_close returned %s\n", nt_errstr(status));
                return false;