The branch, master has been updated via 4c52e8f s4:torture:smb2: rewrite durable-open.open test to use smb2_*_create functions via 9d862c0 s4:torture:smb2: rewrite the durable-open.lock test to use smb2_lease_create() via 0652b21 s4:torture:smb2: rewrite the durable-open.lease test to use smb2_lease_create() via cda1006 s4:torture:smb2: rewrite the durable-open.oplock test to use smb2_oplock_create() via 5d3b6aa s4:torture:smb2: rewrite the durable-open.file-position test to use smb2_oplock_create() via 6e721fd s4:torture:smb2: rewrite the durable-open.open2 test to use smb2_lease_create_share() via afc94fe s4:torture:smb2: rewrite the durable-open.open1 test to use smb2_oplock_create_share() via cb98e31 s4:torture:smb2: add smb2_oplock_create_share() that takes sharemode as parameter via 901cab2 s4:torture:smb2: add smb2_lease_create_share() that takes a sharemode as parameter via ef6c097 s4:torture:smb2: add smb2_generic_create_share() that also takes the sharemode as parameter via 4746edc s4:torture:smb2: move the smb2_create_*() utility functions from lease.c to util.c for re-use via a5d8614 s4:torture:smb2: use smb2_util_oplock_level() in the durable-open test for convenience via 3078c27 s4:torture:smb2: lease: oplock_level is uint8_t, not uint32_t or int via 7f19208 s4:torture:smb2: move oplock() from lease.c to smb2_util_oplock_level() in util.c for re-use via b47edad s4:torture:smb2: extract map_sharemode() to smb2_util_share_access() in util.c via 4ea5ac0 s4:torture:smb2: use common smb2_util_lease_state() in the lease tests via 33ccdf8 s4:torture:smb2: extract map_lease() to util.c as smb2_util_lease_state(). via 9fe4709 s4:torture:smb2: fix illegal write/uninitialized data bug in the lease.multibreak test via b76bd39 s4:torture:smb2: lease.update2: some more reasonable struct names and a comment via 8dab942 s4:torture:smb2: change the test file name in the durable-open.oplock test from 8a18edf samr: filterModuleName is a lsa_String in userPwdChangeFailureInformation.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 4c52e8f68b9ca8f2e4694e8ead86f83321d66dbe Author: Michael Adam <ob...@samba.org> Date: Wed Nov 9 00:22:55 2011 +0100 s4:torture:smb2: rewrite durable-open.open test to use smb2_*_create functions Autobuild-User: Michael Adam <ob...@samba.org> Autobuild-Date: Wed Nov 9 02:36:36 CET 2011 on sn-devel-104 commit 9d862c00e5563b8ccd47df18f7b7645b370620ab Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 22:03:04 2011 +0100 s4:torture:smb2: rewrite the durable-open.lock test to use smb2_lease_create() commit 0652b21c68ba82c6cfa67a43318b756fb679a513 Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 21:59:18 2011 +0100 s4:torture:smb2: rewrite the durable-open.lease test to use smb2_lease_create() commit cda10063abe73c2605f8396dca6cbe1fe2554bc3 Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 18:48:25 2011 +0100 s4:torture:smb2: rewrite the durable-open.oplock test to use smb2_oplock_create() commit 5d3b6aa674618e62e238cd6bac16b6e3ddaebebb Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 18:44:54 2011 +0100 s4:torture:smb2: rewrite the durable-open.file-position test to use smb2_oplock_create() commit 6e721fdd43dbae8a558dca3dbbc34fed2b163f82 Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 18:39:45 2011 +0100 s4:torture:smb2: rewrite the durable-open.open2 test to use smb2_lease_create_share() commit afc94fea2af6e06c3ebcd08cc48d9ebb9484c338 Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 18:31:17 2011 +0100 s4:torture:smb2: rewrite the durable-open.open1 test to use smb2_oplock_create_share() commit cb98e31b2458d4f6aceabd888f276ef65b2518bd Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 18:22:47 2011 +0100 s4:torture:smb2: add smb2_oplock_create_share() that takes sharemode as parameter commit 901cab2deff08917471998bede7fcd245cd89266 Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 18:19:54 2011 +0100 s4:torture:smb2: add smb2_lease_create_share() that takes a sharemode as parameter commit ef6c0974a0899bf5add9bd031db8c734fc5cb536 Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 18:15:12 2011 +0100 s4:torture:smb2: add smb2_generic_create_share() that also takes the sharemode as parameter commit 4746edc55d9699ad595b95520fddc747611d62b1 Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 18:13:41 2011 +0100 s4:torture:smb2: move the smb2_create_*() utility functions from lease.c to util.c for re-use commit a5d8614e63cb772abc5fc0b448909341e0ccc576 Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 16:34:51 2011 +0100 s4:torture:smb2: use smb2_util_oplock_level() in the durable-open test for convenience commit 3078c27be1e0d204fe27af0f4f23f425f96b4f29 Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 16:33:56 2011 +0100 s4:torture:smb2: lease: oplock_level is uint8_t, not uint32_t or int commit 7f1920801beca3d098c69a9a681e8a88e12f086d Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 16:26:02 2011 +0100 s4:torture:smb2: move oplock() from lease.c to smb2_util_oplock_level() in util.c for re-use commit b47edad6731dd3bda288e6cbe4c7420496b3e6e2 Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 08:34:38 2011 +0100 s4:torture:smb2: extract map_sharemode() to smb2_util_share_access() in util.c commit 4ea5ac04b2bdff0fd2a709e8ebfa06221fb642bf Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 08:12:55 2011 +0100 s4:torture:smb2: use common smb2_util_lease_state() in the lease tests commit 33ccdf88f975e5ccfbeaf978e059841bc2150985 Author: Michael Adam <ob...@samba.org> Date: Tue Nov 8 08:04:28 2011 +0100 s4:torture:smb2: extract map_lease() to util.c as smb2_util_lease_state(). commit 9fe4709a4b4cb4fd5bad6d8c8655e94aa59a03cf Author: Michael Adam <ob...@samba.org> Date: Wed Nov 2 15:46:49 2011 +0100 s4:torture:smb2: fix illegal write/uninitialized data bug in the lease.multibreak test commit b76bd39b6fb0c60dda51b48ad43ce55791e6086e Author: Michael Adam <ob...@samba.org> Date: Tue Nov 1 23:50:01 2011 +0100 s4:torture:smb2: lease.update2: some more reasonable struct names and a comment commit 8dab942d1ceeddef9ad314e04a7f6c219b2601ea Author: Michael Adam <ob...@samba.org> Date: Tue Nov 1 14:55:37 2011 +0100 s4:torture:smb2: change the test file name in the durable-open.oplock test to a more reasonable name. This one must have been copied from the durable-open.lease test. ----------------------------------------------------------------------- Summary of changes: source4/torture/smb2/durable_open.c | 318 ++++++++--------------------------- source4/torture/smb2/lease.c | 200 ++++++---------------- source4/torture/smb2/util.c | 149 ++++++++++++++++ 3 files changed, 277 insertions(+), 390 deletions(-) Changeset truncated at 500 lines: diff --git a/source4/torture/smb2/durable_open.c b/source4/torture/smb2/durable_open.c index 4bce89b..512f432 100644 --- a/source4/torture/smb2/durable_open.c +++ b/source4/torture/smb2/durable_open.c @@ -50,50 +50,6 @@ } while(0) -static inline uint32_t map_lease(const char *ls) -{ - uint32_t val = 0; - int i; - - for (i = 0; i < strlen(ls); i++) { - switch (ls[i]) { - case 'R': - val |= SMB2_LEASE_READ; - break; - case 'H': - val |= SMB2_LEASE_HANDLE; - break; - case 'W': - val |= SMB2_LEASE_WRITE; - break; - } - } - - return val; -} - -static inline uint32_t map_sharemode(const char *sharemode) -{ - uint32_t val = NTCREATEX_SHARE_ACCESS_NONE; /* 0 */ - int i; - - for (i = 0; i < strlen(sharemode); i++) { - switch(sharemode[i]) { - case 'R': - val |= NTCREATEX_SHARE_ACCESS_READ; - break; - case 'W': - val |= NTCREATEX_SHARE_ACCESS_WRITE; - break; - case 'D': - val |= NTCREATEX_SHARE_ACCESS_DELETE; - break; - } - } - - return val; -} - /** * basic durable_open test. * durable state should only be granted when requested @@ -103,7 +59,7 @@ static inline uint32_t map_sharemode(const char *sharemode) */ struct durable_open_vs_oplock { - uint8_t level; + const char *level; const char *share_mode; bool expected; }; @@ -113,47 +69,46 @@ struct durable_open_vs_oplock { #define NUM_OPLOCK_OPEN_TESTS ( NUM_OPLOCK_TYPES * NUM_SHARE_MODES ) struct durable_open_vs_oplock durable_open_vs_oplock_table[NUM_OPLOCK_OPEN_TESTS] = { - { SMB2_OPLOCK_LEVEL_NONE, "", false }, - { SMB2_OPLOCK_LEVEL_NONE, "R", false }, - { SMB2_OPLOCK_LEVEL_NONE, "W", false }, - { SMB2_OPLOCK_LEVEL_NONE, "D", false }, - { SMB2_OPLOCK_LEVEL_NONE, "RD", false }, - { SMB2_OPLOCK_LEVEL_NONE, "RW", false }, - { SMB2_OPLOCK_LEVEL_NONE, "WD", false }, - { SMB2_OPLOCK_LEVEL_NONE, "RWD", false }, - - { SMB2_OPLOCK_LEVEL_II, "", false }, - { SMB2_OPLOCK_LEVEL_II, "R", false }, - { SMB2_OPLOCK_LEVEL_II, "W", false }, - { SMB2_OPLOCK_LEVEL_II, "D", false }, - { SMB2_OPLOCK_LEVEL_II, "RD", false }, - { SMB2_OPLOCK_LEVEL_II, "RW", false }, - { SMB2_OPLOCK_LEVEL_II, "WD", false }, - { SMB2_OPLOCK_LEVEL_II, "RWD", false }, - - { SMB2_OPLOCK_LEVEL_EXCLUSIVE, "", false }, - { SMB2_OPLOCK_LEVEL_EXCLUSIVE, "R", false }, - { SMB2_OPLOCK_LEVEL_EXCLUSIVE, "W", false }, - { SMB2_OPLOCK_LEVEL_EXCLUSIVE, "D", false }, - { SMB2_OPLOCK_LEVEL_EXCLUSIVE, "RD", false }, - { SMB2_OPLOCK_LEVEL_EXCLUSIVE, "RW", false }, - { SMB2_OPLOCK_LEVEL_EXCLUSIVE, "WD", false }, - { SMB2_OPLOCK_LEVEL_EXCLUSIVE, "RWD", false }, - - { SMB2_OPLOCK_LEVEL_BATCH, "", true }, - { SMB2_OPLOCK_LEVEL_BATCH, "R", true }, - { SMB2_OPLOCK_LEVEL_BATCH, "W", true }, - { SMB2_OPLOCK_LEVEL_BATCH, "D", true }, - { SMB2_OPLOCK_LEVEL_BATCH, "RD", true }, - { SMB2_OPLOCK_LEVEL_BATCH, "RW", true }, - { SMB2_OPLOCK_LEVEL_BATCH, "WD", true }, - { SMB2_OPLOCK_LEVEL_BATCH, "RWD", true }, + { "", "", false }, + { "", "R", false }, + { "", "W", false }, + { "", "D", false }, + { "", "RD", false }, + { "", "RW", false }, + { "", "WD", false }, + { "", "RWD", false }, + + { "s", "", false }, + { "s", "R", false }, + { "s", "W", false }, + { "s", "D", false }, + { "s", "RD", false }, + { "s", "RW", false }, + { "s", "WD", false }, + { "s", "RWD", false }, + + { "x", "", false }, + { "x", "R", false }, + { "x", "W", false }, + { "x", "D", false }, + { "x", "RD", false }, + { "x", "RW", false }, + { "x", "WD", false }, + { "x", "RWD", false }, + + { "b", "", true }, + { "b", "R", true }, + { "b", "W", true }, + { "b", "D", true }, + { "b", "RD", true }, + { "b", "RW", true }, + { "b", "WD", true }, + { "b", "RWD", true }, }; static bool test_one_durable_open_open1(struct torture_context *tctx, struct smb2_tree *tree, const char *fname, - struct smb2_create io, struct durable_open_vs_oplock test) { NTSTATUS status; @@ -161,19 +116,22 @@ static bool test_one_durable_open_open1(struct torture_context *tctx, struct smb2_handle _h; struct smb2_handle *h = NULL; bool ret = true; + struct smb2_create io; smb2_util_unlink(tree, fname); - io.in.fname = fname; - io.in.share_access = map_sharemode(test.share_mode); - io.in.oplock_level = test.level; + smb2_oplock_create_share(&io, fname, + smb2_util_share_access(test.share_mode), + smb2_util_oplock_level(test.level)); + io.in.durable_open = true; + status = smb2_create(tree, mem_ctx, &io); CHECK_STATUS(status, NT_STATUS_OK); _h = io.out.file.handle; h = &_h; CHECK_CREATED(&io, CREATED, FILE_ATTRIBUTE_ARCHIVE); CHECK_VAL(io.out.durable_open, test.expected); - CHECK_VAL(io.out.oplock_level, test.level); + CHECK_VAL(io.out.oplock_level, smb2_util_oplock_level(test.level)); done: if (h != NULL) { @@ -189,7 +147,6 @@ bool test_durable_open_open1(struct torture_context *tctx, struct smb2_tree *tree) { TALLOC_CTX *mem_ctx = talloc_new(tctx); - struct smb2_create io; char fname[256]; bool ret = true; int i; @@ -199,28 +156,12 @@ bool test_durable_open_open1(struct torture_context *tctx, smb2_util_unlink(tree, fname); - ZERO_STRUCT(io); - io.in.security_flags = 0x00; - io.in.impersonation_level = NTCREATEX_IMPERSONATION_IMPERSONATION; - io.in.create_flags = 0x00000000; - io.in.reserved = 0x00000000; - io.in.desired_access = SEC_RIGHTS_FILE_ALL; - io.in.file_attributes = FILE_ATTRIBUTE_NORMAL; - io.in.create_disposition = NTCREATEX_DISP_OPEN_IF; - io.in.create_options = NTCREATEX_OPTIONS_SEQUENTIAL_ONLY | - NTCREATEX_OPTIONS_ASYNC_ALERT | - NTCREATEX_OPTIONS_NON_DIRECTORY_FILE | - 0x00200000; - io.in.durable_open = true; - io.in.fname = fname; - /* test various oplock levels with durable open */ for (i = 0; i < NUM_OPLOCK_OPEN_TESTS; i++) { ret = test_one_durable_open_open1(tctx, tree, fname, - io, durable_open_vs_oplock_table[i]); if (ret == false) { goto done; @@ -302,7 +243,6 @@ struct durable_open_vs_lease durable_open_vs_lease_table[NUM_LEASE_OPEN_TESTS] = static bool test_one_durable_open_open2(struct torture_context *tctx, struct smb2_tree *tree, const char *fname, - struct smb2_create io, struct durable_open_vs_lease test) { NTSTATUS status; @@ -310,22 +250,19 @@ static bool test_one_durable_open_open2(struct torture_context *tctx, struct smb2_handle _h; struct smb2_handle *h = NULL; bool ret = true; + struct smb2_create io; struct smb2_lease ls; uint64_t lease; smb2_util_unlink(tree, fname); - io.in.fname = fname; - io.in.share_access = map_sharemode(test.share_mode); - io.in.oplock_level = SMB2_OPLOCK_LEVEL_LEASE; - lease = random(); - ZERO_STRUCT(ls); - ls.lease_key.data[0] = lease; - ls.lease_key.data[1] = ~lease; - ls.lease_state = map_lease(test.type); - io.in.lease_request = &ls; + smb2_lease_create_share(&io, &ls, false /* dir */, fname, + smb2_util_share_access(test.share_mode), + lease, + smb2_util_lease_state(test.type)); + io.in.durable_open = true; status = smb2_create(tree, mem_ctx, &io); CHECK_STATUS(status, NT_STATUS_OK); @@ -336,7 +273,8 @@ static bool test_one_durable_open_open2(struct torture_context *tctx, CHECK_VAL(io.out.oplock_level, SMB2_OPLOCK_LEVEL_LEASE); CHECK_VAL(io.out.lease_response.lease_key.data[0], lease); CHECK_VAL(io.out.lease_response.lease_key.data[1], ~lease); - CHECK_VAL(io.out.lease_response.lease_state, map_lease(test.type)); + CHECK_VAL(io.out.lease_response.lease_state, + smb2_util_lease_state(test.type)); done: if (h != NULL) { smb2_util_close(tree, *h); @@ -351,7 +289,6 @@ bool test_durable_open_open2(struct torture_context *tctx, struct smb2_tree *tree) { TALLOC_CTX *mem_ctx = talloc_new(tctx); - struct smb2_create io; char fname[256]; bool ret = true; int i; @@ -361,20 +298,6 @@ bool test_durable_open_open2(struct torture_context *tctx, smb2_util_unlink(tree, fname); - ZERO_STRUCT(io); - io.in.security_flags = 0x00; - io.in.impersonation_level = NTCREATEX_IMPERSONATION_IMPERSONATION; - io.in.create_flags = 0x00000000; - io.in.reserved = 0x00000000; - io.in.desired_access = SEC_RIGHTS_FILE_ALL; - io.in.file_attributes = FILE_ATTRIBUTE_NORMAL; - io.in.create_disposition = NTCREATEX_DISP_OPEN_IF; - io.in.create_options = NTCREATEX_OPTIONS_SEQUENTIAL_ONLY | - NTCREATEX_OPTIONS_ASYNC_ALERT | - NTCREATEX_OPTIONS_NON_DIRECTORY_FILE | - 0x00200000; - io.in.durable_open = true; - io.in.fname = fname; /* test various oplock levels with durable open */ @@ -382,7 +305,6 @@ bool test_durable_open_open2(struct torture_context *tctx, ret = test_one_durable_open_open2(tctx, tree, fname, - io, durable_open_vs_lease_table[i]); if (ret == false) { goto done; @@ -417,24 +339,8 @@ bool test_durable_open_file_position(struct torture_context *tctx, smb2_util_unlink(tree1, fname); - ZERO_STRUCT(io1); - io1.in.security_flags = 0x00; - io1.in.oplock_level = SMB2_OPLOCK_LEVEL_BATCH; - io1.in.impersonation_level = NTCREATEX_IMPERSONATION_IMPERSONATION; - io1.in.create_flags = 0x00000000; - io1.in.reserved = 0x00000000; - io1.in.desired_access = SEC_RIGHTS_FILE_ALL; - io1.in.file_attributes = FILE_ATTRIBUTE_NORMAL; - io1.in.share_access = NTCREATEX_SHARE_ACCESS_READ | - NTCREATEX_SHARE_ACCESS_WRITE | - NTCREATEX_SHARE_ACCESS_DELETE; - io1.in.create_disposition = NTCREATEX_DISP_OPEN_IF; - io1.in.create_options = NTCREATEX_OPTIONS_SEQUENTIAL_ONLY | - NTCREATEX_OPTIONS_ASYNC_ALERT | - NTCREATEX_OPTIONS_NON_DIRECTORY_FILE | - 0x00200000; - io1.in.durable_open = true; - io1.in.fname = fname; + smb2_oplock_create(&io1, fname, SMB2_OPLOCK_LEVEL_BATCH); + io1.in.durable_open = true; status = smb2_create(tree1, mem_ctx, &io1); CHECK_STATUS(status, NT_STATUS_OK); @@ -535,33 +441,17 @@ bool test_durable_open_oplock(struct torture_context *tctx, bool ret = true; /* Choose a random name in case the state is left a little funky. */ - snprintf(fname, 256, "durable_open_lease_%s.dat", generate_random_str(tctx, 8)); + snprintf(fname, 256, "durable_open_oplock_%s.dat", generate_random_str(tctx, 8)); /* Clean slate */ smb2_util_unlink(tree1, fname); /* Create with batch oplock */ - ZERO_STRUCT(io1); - io1.in.security_flags = 0x00; - io1.in.oplock_level = SMB2_OPLOCK_LEVEL_BATCH; - io1.in.impersonation_level = NTCREATEX_IMPERSONATION_IMPERSONATION; - io1.in.create_flags = 0x00000000; - io1.in.reserved = 0x00000000; - io1.in.desired_access = SEC_RIGHTS_FILE_ALL; - io1.in.file_attributes = FILE_ATTRIBUTE_NORMAL; - io1.in.share_access = NTCREATEX_SHARE_ACCESS_READ | - NTCREATEX_SHARE_ACCESS_WRITE | - NTCREATEX_SHARE_ACCESS_DELETE; - io1.in.create_disposition = NTCREATEX_DISP_OPEN_IF; - io1.in.create_options = NTCREATEX_OPTIONS_SEQUENTIAL_ONLY | - NTCREATEX_OPTIONS_ASYNC_ALERT | - NTCREATEX_OPTIONS_NON_DIRECTORY_FILE | - 0x00200000; - io1.in.fname = fname; - io1.in.durable_open = true; + smb2_oplock_create(&io1, fname, SMB2_OPLOCK_LEVEL_BATCH); + io1.in.durable_open = true; io2 = io1; - io2.in.create_disposition = NTCREATEX_DISP_OPEN; + io2.in.create_disposition = NTCREATEX_DISP_OPEN; status = smb2_create(tree1, mem_ctx, &io1); CHECK_STATUS(status, NT_STATUS_OK); @@ -638,36 +528,13 @@ bool test_durable_open_lease(struct torture_context *tctx, smb2_util_unlink(tree1, fname); /* Create with lease */ - ZERO_STRUCT(io1); - io1.in.security_flags = 0x00; - io1.in.oplock_level = SMB2_OPLOCK_LEVEL_LEASE; - io1.in.impersonation_level = NTCREATEX_IMPERSONATION_IMPERSONATION; - io1.in.create_flags = 0x00000000; - io1.in.reserved = 0x00000000; - io1.in.desired_access = SEC_RIGHTS_FILE_ALL; - io1.in.file_attributes = FILE_ATTRIBUTE_NORMAL; - io1.in.share_access = NTCREATEX_SHARE_ACCESS_READ | - NTCREATEX_SHARE_ACCESS_WRITE | - NTCREATEX_SHARE_ACCESS_DELETE; - io1.in.create_disposition = NTCREATEX_DISP_OPEN_IF; - io1.in.create_options = NTCREATEX_OPTIONS_SEQUENTIAL_ONLY | - NTCREATEX_OPTIONS_ASYNC_ALERT | - NTCREATEX_OPTIONS_NON_DIRECTORY_FILE | - 0x00200000; - io1.in.fname = fname; - io1.in.durable_open = true; - - ZERO_STRUCT(ls1); - ls1.lease_key.data[0] = lease1; - ls1.lease_key.data[1] = ~lease1; - ls1.lease_state = SMB2_LEASE_READ|SMB2_LEASE_HANDLE|SMB2_LEASE_WRITE; - io1.in.lease_request = &ls1; + smb2_lease_create(&io1, &ls1, false /* dir */, fname, + lease1, smb2_util_lease_state("RHW")); + io1.in.durable_open = true; - io2 = io1; - ls2 = ls1; - ls2.lease_key.data[0] = lease2; - ls2.lease_key.data[1] = ~lease2; - io2.in.lease_request = &ls2; + smb2_lease_create(&io2, &ls2, false /* dir */, fname, + lease2, smb2_util_lease_state("RHW")); + io2.in.durable_open = true; io2.in.create_disposition = NTCREATEX_DISP_OPEN; status = smb2_create(tree1, mem_ctx, &io1); @@ -759,30 +626,10 @@ bool test_durable_open_lock(struct torture_context *tctx, smb2_util_unlink(tree, fname); /* Create with lease */ - ZERO_STRUCT(io); - io.in.security_flags = 0x00; - io.in.oplock_level = SMB2_OPLOCK_LEVEL_LEASE; - io.in.impersonation_level = NTCREATEX_IMPERSONATION_IMPERSONATION; - io.in.create_flags = 0x00000000; - io.in.reserved = 0x00000000; - io.in.desired_access = SEC_RIGHTS_FILE_ALL; - io.in.file_attributes = FILE_ATTRIBUTE_NORMAL; - io.in.share_access = NTCREATEX_SHARE_ACCESS_READ | - NTCREATEX_SHARE_ACCESS_WRITE | - NTCREATEX_SHARE_ACCESS_DELETE; - io.in.create_disposition = NTCREATEX_DISP_OPEN_IF; - io.in.create_options = NTCREATEX_OPTIONS_SEQUENTIAL_ONLY | - NTCREATEX_OPTIONS_ASYNC_ALERT | - NTCREATEX_OPTIONS_NON_DIRECTORY_FILE | - 0x00200000; - io.in.fname = fname; - io.in.durable_open = true; - ZERO_STRUCT(ls); - ls.lease_key.data[0] = lease; - ls.lease_key.data[1] = ~lease; - ls.lease_state = SMB2_LEASE_READ|SMB2_LEASE_HANDLE|SMB2_LEASE_WRITE; - io.in.lease_request = &ls; + smb2_lease_create(&io, &ls, false /* dir */, fname, lease, + smb2_util_lease_state("RWH")); + io.in.durable_open = true; status = smb2_create(tree, mem_ctx, &io); CHECK_STATUS(status, NT_STATUS_OK); @@ -873,32 +720,13 @@ bool test_durable_open_open(struct torture_context *tctx, smb2_util_unlink(tree1, fname); /* Create with lease */ - ZERO_STRUCT(io1); - io1.in.security_flags = 0x00; - io1.in.oplock_level = SMB2_OPLOCK_LEVEL_LEASE; - io1.in.impersonation_level = NTCREATEX_IMPERSONATION_IMPERSONATION; - io1.in.create_flags = 0x00000000; - io1.in.reserved = 0x00000000; - io1.in.desired_access = SEC_RIGHTS_FILE_ALL; - io1.in.file_attributes = FILE_ATTRIBUTE_NORMAL; - io1.in.share_access = NTCREATEX_SHARE_ACCESS_NONE; - io1.in.create_disposition = NTCREATEX_DISP_OPEN_IF; - io1.in.create_options = NTCREATEX_OPTIONS_SEQUENTIAL_ONLY | - NTCREATEX_OPTIONS_ASYNC_ALERT | - NTCREATEX_OPTIONS_NON_DIRECTORY_FILE | - 0x00200000; - io1.in.fname = fname; - io1.in.durable_open = true; + smb2_lease_create_share(&io1, &ls, false /* dir */, fname, + smb2_util_share_access(""), + lease, + smb2_util_lease_state("RH")); + io1.in.durable_open = true; - io2 = io1; - io2.in.oplock_level = SMB2_OPLOCK_LEVEL_NONE; - io2.in.durable_open = false; - - ZERO_STRUCT(ls); - ls.lease_key.data[0] = lease; - ls.lease_key.data[1] = ~lease; - ls.lease_state = SMB2_LEASE_READ|SMB2_LEASE_HANDLE; - io1.in.lease_request = &ls; + smb2_oplock_create(&io2, fname, SMB2_OPLOCK_LEVEL_NONE); status = smb2_create(tree1, mem_ctx, &io1); CHECK_STATUS(status, NT_STATUS_OK); @@ -910,7 +738,7 @@ bool test_durable_open_open(struct torture_context *tctx, CHECK_VAL(io1.out.lease_response.lease_key.data[0], lease); CHECK_VAL(io1.out.lease_response.lease_key.data[1], ~lease); CHECK_VAL(io1.out.lease_response.lease_state, - SMB2_LEASE_READ|SMB2_LEASE_HANDLE); + smb2_util_lease_state("RH")); /* Disconnect */ talloc_free(tree1); diff --git a/source4/torture/smb2/lease.c b/source4/torture/smb2/lease.c index 4b1352b..5669c62 100644 --- a/source4/torture/smb2/lease.c +++ b/source4/torture/smb2/lease.c @@ -25,27 +25,6 @@ #include "torture/torture.h" #include "torture/smb2/proto.h" -static inline uint32_t lease(const char *ls) { - uint32_t val = 0; - int i; - - for (i = 0; i < strlen(ls); i++) { - switch (ls[i]) { - case 'R': -- Samba Shared Repository