Merge branch 'v4-0-test' of ssh://git.samba.org/data/git/samba into 4-0-abartlet
[jelmer/samba4.git] / source / ntvfs / ntvfs_generic.c
index 5d4bbf388c98fcf5e2385db1ab6ec1e7e5a8bf2b..3653ad82c1400db0ae6bca350a589e6d000975ab 100644 (file)
@@ -209,13 +209,13 @@ static NTSTATUS ntvfs_map_open_finish(struct ntvfs_module_context *ntvfs,
        case RAW_OPEN_SMB2:
                io->smb2.out.file.ntvfs         = io2->generic.out.file.ntvfs;
                switch (io2->generic.out.oplock_level) {
-               case OPLOCK_BATCH:
+               case BATCH_OPLOCK_RETURN:
                        io->smb2.out.oplock_level = SMB2_OPLOCK_LEVEL_BATCH;
                        break;
-               case OPLOCK_EXCLUSIVE:
+               case EXCLUSIVE_OPLOCK_RETURN:
                        io->smb2.out.oplock_level = SMB2_OPLOCK_LEVEL_EXCLUSIVE;
                        break;
-               case OPLOCK_LEVEL_II:
+               case LEVEL_II_OPLOCK_RETURN:
                        io->smb2.out.oplock_level = SMB2_OPLOCK_LEVEL_II;
                        break;
                default:
@@ -1043,6 +1043,23 @@ NTSTATUS ntvfs_map_lock(struct ntvfs_module_context *ntvfs,
                /* initialize output value */
                lck->smb2.out.unknown1 = 0;
                break;
+
+       case RAW_LOCK_SMB2_BREAK:
+               lck2->generic.level             = RAW_LOCK_GENERIC;
+               lck2->generic.in.file.ntvfs     = lck->smb2_break.in.file.ntvfs;
+               lck2->generic.in.mode           = LOCKING_ANDX_OPLOCK_RELEASE |
+                                                 ((lck->smb2_break.in.oplock_level << 8) & 0xFF00);
+               lck2->generic.in.timeout        = 0;
+               lck2->generic.in.ulock_cnt      = 0;
+               lck2->generic.in.lock_cnt       = 0;
+               lck2->generic.in.locks          = NULL;
+
+               /* initialize output value */
+               lck->smb2_break.out.oplock_level= lck->smb2_break.in.oplock_level;
+               lck->smb2_break.out.reserved    = lck->smb2_break.in.reserved;
+               lck->smb2_break.out.reserved2   = lck->smb2_break.in.reserved2;
+               lck->smb2_break.out.file        = lck->smb2_break.in.file;
+               break;
        }
 
        /*