The branch, master has been updated via 212e805 s3:smb2_ioctl: implement FSCTL_VALIDATE_NEGOTIATE_INFO via 8963930 s3:smb2_ioctl: implement FSCTL_VALIDATE_NEGOTIATE_INFO_224 via b3235d4 s3:smbd: introduce struct smbXsrv_connection via c8a3c0e s3:smb2_negprot: setup the protocol at the end of the negprot with a real dialect via c140c5e s3/libsmb: Generalise cli_state in smb2 logoff calls via c7a1292 s3/libsmb: Generalise cli_state in smb2 write calls via 50d88c9 s3/libsmb: Generalise cli_state in smb2 query_directory calls via 5f4a009 s3/libsmb: Generalise cli_state in smb2 ioctl calls via 473363a s3/libsmb: Generalise cli_state in smb2 flush calls via 87d890f s3/libsmb: Generalise cli_state in smb2 create calls via f6db3d7 s3/libsmb: Generalise cli_state in smb2 close calls via 14473f3 s3-libsmb: Generalise cli_state in smb2 read calls from 0048dd9 smbconf: remove python shebang from wscript_build
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 212e805507c8364c13c34804bd52c6f3cc38be27 Author: Stefan Metzmacher <me...@samba.org> Date: Fri May 11 17:45:16 2012 +0200 s3:smb2_ioctl: implement FSCTL_VALIDATE_NEGOTIATE_INFO metze Autobuild-User: Stefan Metzmacher <me...@samba.org> Autobuild-Date: Sat May 12 02:50:42 CEST 2012 on sn-devel-104 commit 8963930974174598710d2cc4a8609a856199dfea Author: Stefan Metzmacher <me...@samba.org> Date: Fri May 11 17:45:16 2012 +0200 s3:smb2_ioctl: implement FSCTL_VALIDATE_NEGOTIATE_INFO_224 metze commit b3235d483da924a41ca9cecf72e1c62bab7fedd5 Author: Stefan Metzmacher <me...@samba.org> Date: Thu Dec 15 14:45:56 2011 +0100 s3:smbd: introduce struct smbXsrv_connection This will represent a transport connection for SMB 1 or 2 in the server. smbd_server_connection will slowly be moved to the SMB_VFS layer to satisfy the existing modules, but it will hopefully be protocol independend in future. metze commit c8a3c0e0f793c622e071953b25a70a3fd8a0da65 Author: Stefan Metzmacher <me...@samba.org> Date: Fri May 11 15:19:20 2012 +0200 s3:smb2_negprot: setup the protocol at the end of the negprot with a real dialect metze commit c140c5e4590ab49c0bd8ccce791450b0dbcc74aa Author: Luk Claes <l...@debian.org> Date: Thu May 10 18:39:11 2012 +0200 s3/libsmb: Generalise cli_state in smb2 logoff calls Signed-off-by: Luk Claes <l...@debian.org> Signed-off-by: Stefan Metzmacher <me...@samba.org> commit c7a129262857ede4d4985a1c368b7066811ed2c3 Author: Luk Claes <l...@debian.org> Date: Thu May 10 18:40:56 2012 +0200 s3/libsmb: Generalise cli_state in smb2 write calls Signed-off-by: Luk Claes <l...@debian.org> Signed-off-by: Stefan Metzmacher <me...@samba.org> commit 50d88c96bc03206b59a882669ab13f763945d41f Author: Luk Claes <l...@debian.org> Date: Thu May 10 18:37:43 2012 +0200 s3/libsmb: Generalise cli_state in smb2 query_directory calls Signed-off-by: Luk Claes <l...@debian.org> Signed-off-by: Stefan Metzmacher <me...@samba.org> commit 5f4a009f4fe366ed13c1c681595ae95554643768 Author: Luk Claes <l...@debian.org> Date: Thu May 10 18:36:47 2012 +0200 s3/libsmb: Generalise cli_state in smb2 ioctl calls Signed-off-by: Luk Claes <l...@debian.org> Signed-off-by: Stefan Metzmacher <me...@samba.org> commit 473363a8078fca8ba7dbbdf310d984167cf92bf4 Author: Luk Claes <l...@debian.org> Date: Thu May 10 18:35:50 2012 +0200 s3/libsmb: Generalise cli_state in smb2 flush calls Signed-off-by: Luk Claes <l...@debian.org> Signed-off-by: Stefan Metzmacher <me...@samba.org> commit 87d890fdd92195acca3e099c3f7b60aea91ac04e Author: Luk Claes <l...@debian.org> Date: Thu May 10 18:34:40 2012 +0200 s3/libsmb: Generalise cli_state in smb2 create calls Signed-off-by: Luk Claes <l...@debian.org> Signed-off-by: Stefan Metzmacher <me...@samba.org> commit f6db3d7bef750d48079ff56535f48c9923e5f4c8 Author: Luk Claes <l...@debian.org> Date: Thu May 10 18:32:49 2012 +0200 s3/libsmb: Generalise cli_state in smb2 close calls Signed-off-by: Luk Claes <l...@debian.org> Signed-off-by: Stefan Metzmacher <me...@samba.org> commit 14473f37f5a3cd4749f5c4f937fef37cc5ea8c47 Author: Luk Claes <l...@debian.org> Date: Thu May 10 18:30:25 2012 +0200 s3-libsmb: Generalise cli_state in smb2 read calls Signed-off-by: Luk Claes <l...@debian.org> Signed-off-by: Stefan Metzmacher <me...@samba.org> ----------------------------------------------------------------------- Summary of changes: source3/libsmb/cli_np_tstream.c | 57 ++++++-- source3/libsmb/smb2cli.h | 82 +++++++++--- source3/libsmb/smb2cli_close.c | 29 +++-- source3/libsmb/smb2cli_create.c | 25 +++-- source3/libsmb/smb2cli_flush.c | 26 +++-- source3/libsmb/smb2cli_ioctl.c | 25 +++-- source3/libsmb/smb2cli_query_directory.c | 25 +++-- source3/libsmb/smb2cli_read.c | 26 +++-- source3/libsmb/smb2cli_session.c | 23 ++-- source3/libsmb/smb2cli_write.c | 25 +++-- source3/smbd/globals.h | 37 +++++ source3/smbd/negprot.c | 11 +- source3/smbd/process.c | 25 ++++ source3/smbd/smb2_ioctl.c | 159 ++++++++++++++++++++++ source3/smbd/smb2_negprot.c | 69 +++++++++- source3/torture/test_smb2.c | 213 +++++++++++++++++++----------- 16 files changed, 659 insertions(+), 198 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/libsmb/cli_np_tstream.c b/source3/libsmb/cli_np_tstream.c index 658f308..53e0c41 100644 --- a/source3/libsmb/cli_np_tstream.c +++ b/source3/libsmb/cli_np_tstream.c @@ -95,7 +95,10 @@ static int tstream_cli_np_destructor(struct tstream_cli_np *cli_nps) if (cli_nps->is_smb1) { status = cli_close(cli_nps->cli, cli_nps->fnum); } else { - status = smb2cli_close(cli_nps->cli, 0, + status = smb2cli_close(cli_nps->cli->conn, + cli_nps->cli->timeout, + cli_nps->cli->smb2.session, + cli_nps->cli->smb2.tid, 0, cli_nps->fid_persistent, cli_nps->fid_volatile); } @@ -157,7 +160,9 @@ struct tevent_req *tstream_cli_np_open_send(TALLOC_CTX *mem_ctx, 0, 0); } else { - subreq = smb2cli_create_send(state, ev, cli, + subreq = smb2cli_create_send(state, ev, cli->conn, + cli->timeout, cli->smb2.session, + cli->smb2.tid, npipe, SMB2_OPLOCK_LEVEL_NONE, SMB2_IMPERSONATION_IMPERSONATION, @@ -468,14 +473,18 @@ static void tstream_cli_np_writev_write_next(struct tevent_req *req) 0, /* offset */ cli_nps->write.ofs); /* size */ } else { - subreq = smb2cli_write_send(state, state->ev, cli_nps->cli, - cli_nps->write.ofs, /* length */ - 0, /* offset */ - cli_nps->fid_persistent, - cli_nps->fid_volatile, - 0, /* remaining_bytes */ - 0, /* flags */ - cli_nps->write.buf); + subreq = smb2cli_write_send(state, state->ev, + cli_nps->cli->conn, + cli_nps->cli->timeout, + cli_nps->cli->smb2.session, + cli_nps->cli->smb2.tid, + cli_nps->write.ofs, /* length */ + 0, /* offset */ + cli_nps->fid_persistent, + cli_nps->fid_volatile, + 0, /* remaining_bytes */ + 0, /* flags */ + cli_nps->write.buf); } if (tevent_req_nomem(subreq, req)) { return; @@ -548,7 +557,11 @@ static void tstream_cli_np_writev_disconnect_now(struct tevent_req *req, subreq = cli_close_send(state, state->ev, cli_nps->cli, cli_nps->fnum); } else { - subreq = smb2cli_close_send(state, state->ev, cli_nps->cli, + subreq = smb2cli_close_send(state, state->ev, + cli_nps->cli->conn, + cli_nps->cli->timeout, + cli_nps->cli->smb2.session, + cli_nps->cli->smb2.tid, 0, /* flags */ cli_nps->fid_persistent, cli_nps->fid_volatile); @@ -742,7 +755,11 @@ static void tstream_cli_np_readv_read_next(struct tevent_req *req) 0, /* offset */ TSTREAM_CLI_NP_MAX_BUF_SIZE); } else { - subreq = smb2cli_read_send(state, state->ev, cli_nps->cli, + subreq = smb2cli_read_send(state, state->ev, + cli_nps->cli->conn, + cli_nps->cli->timeout, + cli_nps->cli->smb2.session, + cli_nps->cli->smb2.tid, TSTREAM_CLI_NP_MAX_BUF_SIZE, /* length */ 0, /* offset */ cli_nps->fid_persistent, @@ -795,7 +812,10 @@ static void tstream_cli_np_readv_trans_start(struct tevent_req *req) cli_nps->write.ofs); subreq = smb2cli_ioctl_send(state, state->ev, - cli_nps->cli, + cli_nps->cli->conn, + cli_nps->cli->timeout, + cli_nps->cli->smb2.session, + cli_nps->cli->smb2.tid, cli_nps->fid_persistent, cli_nps->fid_volatile, FSCTL_NAMED_PIPE_READ_WRITE, @@ -999,7 +1019,11 @@ static void tstream_cli_np_readv_disconnect_now(struct tevent_req *req, subreq = cli_close_send(state, state->ev, cli_nps->cli, cli_nps->fnum); } else { - subreq = smb2cli_close_send(state, state->ev, cli_nps->cli, + subreq = smb2cli_close_send(state, state->ev, + cli_nps->cli->conn, + cli_nps->cli->timeout, + cli_nps->cli->smb2.session, + cli_nps->cli->smb2.tid, 0, /* flags */ cli_nps->fid_persistent, cli_nps->fid_volatile); @@ -1132,7 +1156,10 @@ static struct tevent_req *tstream_cli_np_disconnect_send(TALLOC_CTX *mem_ctx, subreq = cli_close_send(state, ev, cli_nps->cli, cli_nps->fnum); } else { - subreq = smb2cli_close_send(state, ev, cli_nps->cli, + subreq = smb2cli_close_send(state, ev, cli_nps->cli->conn, + cli_nps->cli->timeout, + cli_nps->cli->smb2.session, + cli_nps->cli->smb2.tid, 0, /* flags */ cli_nps->fid_persistent, cli_nps->fid_volatile); diff --git a/source3/libsmb/smb2cli.h b/source3/libsmb/smb2cli.h index 727481a..bd6b131 100644 --- a/source3/libsmb/smb2cli.h +++ b/source3/libsmb/smb2cli.h @@ -26,9 +26,13 @@ struct cli_state; struct tevent_req *smb2cli_logoff_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct cli_state *cli); + struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session); NTSTATUS smb2cli_logoff_recv(struct tevent_req *req); -NTSTATUS smb2cli_logoff(struct cli_state *cli); +NTSTATUS smb2cli_logoff(struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session); struct tevent_req *smb2cli_tcon_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, @@ -46,7 +50,10 @@ NTSTATUS smb2cli_tdis(struct cli_state *cli); struct tevent_req *smb2cli_create_send( TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct cli_state *cli, + struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, const char *filename, uint8_t oplock_level, /* SMB2_OPLOCK_LEVEL_* */ uint32_t impersonation_level, /* SMB2_IMPERSONATION_* */ @@ -59,7 +66,10 @@ struct tevent_req *smb2cli_create_send( NTSTATUS smb2cli_create_recv(struct tevent_req *req, uint64_t *fid_persistent, uint64_t *fid_volatile); -NTSTATUS smb2cli_create(struct cli_state *cli, +NTSTATUS smb2cli_create(struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, const char *filename, uint8_t oplock_level, /* SMB2_OPLOCK_LEVEL_* */ uint32_t impersonation_level, /* SMB2_IMPERSONATION_* */ @@ -74,27 +84,44 @@ NTSTATUS smb2cli_create(struct cli_state *cli, struct tevent_req *smb2cli_close_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct cli_state *cli, + struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, uint16_t flags, uint64_t fid_persistent, uint64_t fid_volatile); NTSTATUS smb2cli_close_recv(struct tevent_req *req); -NTSTATUS smb2cli_close(struct cli_state *cli, uint16_t flags, - uint64_t fid_persistent, uint64_t fid_volatile); +NTSTATUS smb2cli_close(struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, + uint16_t flags, + uint64_t fid_persistent, + uint64_t fid_volatile); struct tevent_req *smb2cli_flush_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct cli_state *cli, + struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, uint64_t fid_persistent, uint64_t fid_volatile); NTSTATUS smb2cli_flush_recv(struct tevent_req *req); -NTSTATUS smb2cli_flush(struct cli_state *cli, +NTSTATUS smb2cli_flush(struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, uint64_t fid_persistent, uint64_t fid_volatile); struct tevent_req *smb2cli_read_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct cli_state *cli, + struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, uint32_t length, uint64_t offset, uint64_t fid_persistent, @@ -103,7 +130,10 @@ struct tevent_req *smb2cli_read_send(TALLOC_CTX *mem_ctx, uint64_t remaining_bytes); NTSTATUS smb2cli_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, uint8_t **data, uint32_t *data_length); -NTSTATUS smb2cli_read(struct cli_state *cli, +NTSTATUS smb2cli_read(struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, uint32_t length, uint64_t offset, uint64_t fid_persistent, @@ -116,7 +146,10 @@ NTSTATUS smb2cli_read(struct cli_state *cli, struct tevent_req *smb2cli_write_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct cli_state *cli, + struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, uint32_t length, uint64_t offset, uint64_t fid_persistent, @@ -125,7 +158,10 @@ struct tevent_req *smb2cli_write_send(TALLOC_CTX *mem_ctx, uint32_t flags, const uint8_t *data); NTSTATUS smb2cli_write_recv(struct tevent_req *req); -NTSTATUS smb2cli_write(struct cli_state *cli, +NTSTATUS smb2cli_write(struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, uint32_t length, uint64_t offset, uint64_t fid_persistent, @@ -136,7 +172,10 @@ NTSTATUS smb2cli_write(struct cli_state *cli, struct tevent_req *smb2cli_query_directory_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct cli_state *cli, + struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, uint8_t level, uint8_t flags, uint32_t file_index, @@ -148,7 +187,10 @@ NTSTATUS smb2cli_query_directory_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, uint8_t **data, uint32_t *data_length); -NTSTATUS smb2cli_query_directory(struct cli_state *cli, +NTSTATUS smb2cli_query_directory(struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, uint8_t level, uint8_t flags, uint32_t file_index, @@ -162,7 +204,10 @@ NTSTATUS smb2cli_query_directory(struct cli_state *cli, struct tevent_req *smb2cli_ioctl_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct cli_state *cli, + struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, uint64_t in_fid_persistent, uint64_t in_fid_volatile, uint32_t in_ctl_code, @@ -175,7 +220,10 @@ NTSTATUS smb2cli_ioctl_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, DATA_BLOB *out_input_buffer, DATA_BLOB *out_output_buffer); -NTSTATUS smb2cli_ioctl(struct cli_state *cli, +NTSTATUS smb2cli_ioctl(struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, uint64_t in_fid_persistent, uint64_t in_fid_volatile, uint32_t in_ctl_code, diff --git a/source3/libsmb/smb2cli_close.c b/source3/libsmb/smb2cli_close.c index 246d904..5c69fee 100644 --- a/source3/libsmb/smb2cli_close.c +++ b/source3/libsmb/smb2cli_close.c @@ -33,7 +33,10 @@ static void smb2cli_close_done(struct tevent_req *subreq); struct tevent_req *smb2cli_close_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct cli_state *cli, + struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, uint16_t flags, uint64_t fid_persistent, uint64_t fid_volatile) @@ -53,12 +56,12 @@ struct tevent_req *smb2cli_close_send(TALLOC_CTX *mem_ctx, SBVAL(fixed, 8, fid_persistent); SBVAL(fixed, 16, fid_volatile); - subreq = smb2cli_req_send(state, ev, cli->conn, SMB2_OP_CLOSE, + subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_CLOSE, 0, 0, /* flags */ - cli->timeout, - cli->smb2.pid, - cli->smb2.tid, - cli->smb2.session, + timeout_msec, + 0xFEFF, /* pid */ + tcon_id, + session, state->fixed, sizeof(state->fixed), NULL, 0); if (tevent_req_nomem(subreq, req)) { @@ -94,15 +97,20 @@ NTSTATUS smb2cli_close_recv(struct tevent_req *req) return tevent_req_simple_recv_ntstatus(req); } -NTSTATUS smb2cli_close(struct cli_state *cli, uint16_t flags, - uint64_t fid_persistent, uint64_t fid_volatile) +NTSTATUS smb2cli_close(struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, + uint16_t flags, + uint64_t fid_persistent, + uint64_t fid_volatile) { TALLOC_CTX *frame = talloc_stackframe(); struct event_context *ev; struct tevent_req *req; NTSTATUS status = NT_STATUS_NO_MEMORY; - if (cli_has_async_calls(cli)) { + if (smbXcli_conn_has_async_calls(conn)) { /* * Can't use sync call while an async call is in flight */ @@ -113,7 +121,8 @@ NTSTATUS smb2cli_close(struct cli_state *cli, uint16_t flags, if (ev == NULL) { goto fail; } - req = smb2cli_close_send(frame, ev, cli, flags, + req = smb2cli_close_send(frame, ev, conn, timeout_msec, + session, tcon_id, flags, fid_persistent, fid_volatile); if (req == NULL) { goto fail; diff --git a/source3/libsmb/smb2cli_create.c b/source3/libsmb/smb2cli_create.c index 4fa782f..f4fa45a 100644 --- a/source3/libsmb/smb2cli_create.c +++ b/source3/libsmb/smb2cli_create.c @@ -48,7 +48,10 @@ static void smb2cli_create_done(struct tevent_req *subreq); struct tevent_req *smb2cli_create_send( TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct cli_state *cli, + struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, const char *filename, uint8_t oplock_level, /* SMB2_OPLOCK_LEVEL_* */ uint32_t impersonation_level, /* SMB2_IMPERSONATION_* */ @@ -136,12 +139,12 @@ struct tevent_req *smb2cli_create_send( data_blob_free(&blob); } - subreq = smb2cli_req_send(state, ev, cli->conn, SMB2_OP_CREATE, + subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_CREATE, 0, 0, /* flags */ - cli->timeout, - cli->smb2.pid, - cli->smb2.tid, - cli->smb2.session, + timeout_msec, + 0xFEFF, /* pid */ + tcon_id, + session, state->fixed, sizeof(state->fixed), dyn, dyn_len); if (tevent_req_nomem(subreq, req)) { @@ -227,7 +230,10 @@ NTSTATUS smb2cli_create_recv(struct tevent_req *req, return NT_STATUS_OK; } -NTSTATUS smb2cli_create(struct cli_state *cli, +NTSTATUS smb2cli_create(struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, const char *filename, uint8_t oplock_level, /* SMB2_OPLOCK_LEVEL_* */ uint32_t impersonation_level, /* SMB2_IMPERSONATION_* */ @@ -245,7 +251,7 @@ NTSTATUS smb2cli_create(struct cli_state *cli, struct tevent_req *req; NTSTATUS status = NT_STATUS_NO_MEMORY; - if (cli_has_async_calls(cli)) { + if (smbXcli_conn_has_async_calls(conn)) { /* * Can't use sync call while an async call is in flight */ @@ -256,7 +262,8 @@ NTSTATUS smb2cli_create(struct cli_state *cli, if (ev == NULL) { goto fail; } - req = smb2cli_create_send(frame, ev, cli, filename, oplock_level, + req = smb2cli_create_send(frame, ev, conn, timeout_msec, session, + tcon_id, filename, oplock_level, impersonation_level, desired_access, file_attributes, share_access, create_disposition, create_options, diff --git a/source3/libsmb/smb2cli_flush.c b/source3/libsmb/smb2cli_flush.c index 738af24..3b20c44 100644 --- a/source3/libsmb/smb2cli_flush.c +++ b/source3/libsmb/smb2cli_flush.c @@ -33,7 +33,10 @@ static void smb2cli_flush_done(struct tevent_req *subreq); struct tevent_req *smb2cli_flush_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - struct cli_state *cli, + struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, uint64_t fid_persistent, uint64_t fid_volatile) { @@ -51,12 +54,12 @@ struct tevent_req *smb2cli_flush_send(TALLOC_CTX *mem_ctx, SBVAL(fixed, 8, fid_persistent); SBVAL(fixed, 16, fid_volatile); - subreq = smb2cli_req_send(state, ev, cli->conn, SMB2_OP_FLUSH, + subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_FLUSH, 0, 0, /* flags */ - cli->timeout, - cli->smb2.pid, - cli->smb2.tid, - cli->smb2.session, + timeout_msec, + 0xFEFF, /* pid */ + tcon_id, + session, state->fixed, sizeof(state->fixed), NULL, 0); if (tevent_req_nomem(subreq, req)) { @@ -92,7 +95,10 @@ NTSTATUS smb2cli_flush_recv(struct tevent_req *req) return tevent_req_simple_recv_ntstatus(req); } -NTSTATUS smb2cli_flush(struct cli_state *cli, +NTSTATUS smb2cli_flush(struct smbXcli_conn *conn, + uint32_t timeout_msec, + struct smbXcli_session *session, + uint32_t tcon_id, uint64_t fid_persistent, uint64_t fid_volatile) { @@ -101,7 +107,7 @@ NTSTATUS smb2cli_flush(struct cli_state *cli, struct tevent_req *req; NTSTATUS status = NT_STATUS_NO_MEMORY; - if (cli_has_async_calls(cli)) { + if (smbXcli_conn_has_async_calls(conn)) { /* * Can't use sync call while an async call is in flight */ @@ -112,8 +118,8 @@ NTSTATUS smb2cli_flush(struct cli_state *cli, if (ev == NULL) { goto fail; } - req = smb2cli_flush_send(frame, ev, cli, - fid_persistent, fid_volatile); + req = smb2cli_flush_send(frame, ev, conn, timeout_msec, session, + tcon_id, fid_persistent, fid_volatile); if (req == NULL) { goto fail; } diff --git a/source3/libsmb/smb2cli_ioctl.c b/source3/libsmb/smb2cli_ioctl.c index 58c348d..4b83355 100644 --- a/source3/libsmb/smb2cli_ioctl.c +++ b/source3/libsmb/smb2cli_ioctl.c @@ -40,7 +40,10 @@ static void smb2cli_ioctl_done(struct tevent_req *subreq); -- Samba Shared Repository