smb: rename NTCREATEX_OPTIONS_PRIVATE_DENY_FCB to NTCREATEX_FLAG_DENY_FCB
[samba.git] / source4 / ntvfs / ntvfs_generic.c
index d3f79196890c63ccc644c923254a88a0e5fb363d..de0ae2ce8280363c4eaf7b4afe3d11b7e0078cfb 100644 (file)
@@ -35,6 +35,8 @@
 #include "libcli/smb2/smb2.h"
 #include "libcli/smb2/smb2_calls.h"
 
+#undef strcasecmp
+
 /* a second stage function converts from the out parameters of the generic
    call onto the out parameters of the specific call made */
 typedef NTSTATUS (*second_stage_t)(struct ntvfs_module_context *,
@@ -236,6 +238,8 @@ static NTSTATUS ntvfs_map_open_finish(struct ntvfs_module_context *ntvfs,
                io->smb2.out.file_attr          = io2->generic.out.attrib;
                io->smb2.out.reserved2          = 0;
                io->smb2.out.maximal_access     = io2->generic.out.maximal_access;
+               memcpy(io->smb2.out.on_disk_id, io2->generic.out.on_disk_id,
+                      sizeof(io2->generic.out.on_disk_id));
                break;
 
        default:
@@ -329,7 +333,7 @@ static NTSTATUS map_openx_open(uint16_t flags, uint16_t open_mode,
        case OPENX_MODE_DENY_DOS:
                /* DENY_DOS is quite strange - it depends on the filename! */
                io2->generic.in.private_flags |=
-                       NTCREATEX_OPTIONS_PRIVATE_DENY_DOS;
+                       NTCREATEX_FLAG_DENY_DOS;
                if (is_exe_filename(fname)) {
                        io2->generic.in.share_access = 
                                NTCREATEX_SHARE_ACCESS_READ | 
@@ -343,7 +347,7 @@ static NTSTATUS map_openx_open(uint16_t flags, uint16_t open_mode,
                }
                break;
        case OPENX_MODE_DENY_FCB:
-               io2->generic.in.private_flags |= NTCREATEX_OPTIONS_PRIVATE_DENY_FCB;
+               io2->generic.in.private_flags |= NTCREATEX_FLAG_DENY_FCB;
                io2->generic.in.share_access = NTCREATEX_SHARE_ACCESS_NONE;
                break;
        default:
@@ -529,6 +533,7 @@ NTSTATUS ntvfs_map_open(struct ntvfs_module_context *ntvfs,
                io2->generic.in.sec_desc        = io->smb2.in.sec_desc;
                io2->generic.in.ea_list         = &io->smb2.in.eas;
                io2->generic.in.query_maximal_access = io->smb2.in.query_maximal_access; 
+               io2->generic.in.query_on_disk_id = io->smb2.in.query_on_disk_id;
                io2->generic.in.private_flags   = 0;
 
                /* we don't support timewarp yet */
@@ -664,6 +669,22 @@ static NTSTATUS ntvfs_map_fsinfo_finish(struct ntvfs_module_context *ntvfs,
                ZERO_STRUCT(fs->objectid_information.out.unknown);
                return NT_STATUS_OK;
 
+       case RAW_QFS_SECTOR_SIZE_INFORMATION:
+               fs->sector_size_info.out.logical_bytes_per_sector
+                                               = fs2->generic.out.block_size;
+               fs->sector_size_info.out.phys_bytes_per_sector_atomic
+                                               = fs2->generic.out.block_size;
+               fs->sector_size_info.out.phys_bytes_per_sector_perf
+                                               = fs2->generic.out.block_size;
+               fs->sector_size_info.out.fs_effective_phys_bytes_per_sector_atomic
+                                               = fs2->generic.out.block_size;
+               fs->sector_size_info.out.flags
+                                       = QFS_SSINFO_FLAGS_ALIGNED_DEVICE
+                               | QFS_SSINFO_FLAGS_PARTITION_ALIGNED_ON_DEVICE;
+               fs->sector_size_info.out.byte_off_sector_align = 0;
+               fs->sector_size_info.out.byte_off_partition_align = 0;
+               return NT_STATUS_OK;
+
        case RAW_QFS_GENERIC:
        case RAW_QFS_UNIX_INFO:
                return NT_STATUS_INVALID_LEVEL;
@@ -843,6 +864,7 @@ NTSTATUS ntvfs_map_fileinfo(TALLOC_CTX *mem_ctx,
                
        case RAW_FILEINFO_ALT_NAME_INFO:
        case RAW_FILEINFO_ALT_NAME_INFORMATION:
+       case RAW_FILEINFO_SMB2_ALT_NAME_INFORMATION:
                info->alt_name_info.out.fname.s = talloc_strdup(mem_ctx, info2->generic.out.alt_fname.s);
                NT_STATUS_HAVE_NO_MEMORY(info->alt_name_info.out.fname.s);
                info->alt_name_info.out.fname.private_length = info2->generic.out.alt_fname.private_length;
@@ -941,6 +963,8 @@ NTSTATUS ntvfs_map_fileinfo(TALLOC_CTX *mem_ctx,
        case RAW_FILEINFO_SMB2_ALL_EAS:
        case RAW_FILEINFO_SMB2_ALL_INFORMATION:
                return NT_STATUS_INVALID_LEVEL;
+       case RAW_FILEINFO_NORMALIZED_NAME_INFORMATION:
+               return NT_STATUS_NOT_SUPPORTED;
        }
 
        return NT_STATUS_INVALID_LEVEL;
@@ -1573,7 +1597,7 @@ static NTSTATUS ntvfs_map_notify_finish(struct ntvfs_module_context *ntvfs,
        switch (nt->nttrans.level) {
        case RAW_NOTIFY_SMB2:
                if (nt2->nttrans.out.num_changes == 0) {
-                       return STATUS_NOTIFY_ENUM_DIR;
+                       return NT_STATUS_NOTIFY_ENUM_DIR;
                }
                nt->smb2.out.num_changes        = nt2->nttrans.out.num_changes;
                nt->smb2.out.changes            = talloc_steal(req, nt2->nttrans.out.changes);