summaryrefslogtreecommitdiff
path: root/source4/ntvfs/ntvfs_generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/ntvfs/ntvfs_generic.c')
-rw-r--r--source4/ntvfs/ntvfs_generic.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/source4/ntvfs/ntvfs_generic.c b/source4/ntvfs/ntvfs_generic.c
index a4cc0ff396..8b80e9db80 100644
--- a/source4/ntvfs/ntvfs_generic.c
+++ b/source4/ntvfs/ntvfs_generic.c
@@ -205,6 +205,22 @@ static NTSTATUS ntvfs_map_open_finish(struct ntvfs_module_context *ntvfs,
NT_STATUS_HAVE_NO_MEMORY(io->ctemp.out.name);
break;
+ case RAW_OPEN_SMB2:
+ io->smb2.out.file.ntvfs = io2->generic.out.file.ntvfs;
+ io->smb2.out.oplock_flags = 0;
+ io->smb2.out.create_action = io2->generic.out.create_action;
+ io->smb2.out.create_time = io2->generic.out.create_time;
+ io->smb2.out.access_time = io2->generic.out.access_time;
+ io->smb2.out.write_time = io2->generic.out.write_time;
+ io->smb2.out.change_time = io2->generic.out.change_time;
+ io->smb2.out.alloc_size = io2->generic.out.alloc_size;
+ io->smb2.out.size = io2->generic.out.size;
+ /*io->smb2.out.file_attr = io2->generic.out.attrib; would this be correct? */
+ io->smb2.out.file_attr = 0;
+ io->smb2.out._pad = 0;
+ io->smb2.out.blob = data_blob(NULL, 0);
+ break;
+
default:
return NT_STATUS_INVALID_LEVEL;
}
@@ -467,6 +483,22 @@ _PUBLIC_ NTSTATUS ntvfs_map_open(struct ntvfs_module_context *ntvfs,
NTCREATEX_SHARE_ACCESS_WRITE;
status = ntvfs->ops->open(ntvfs, req, io2);
break;
+ case RAW_OPEN_SMB2:
+ io2->generic.in.flags = 0;
+ io2->generic.in.root_fid = 0;
+ io2->generic.in.access_mask = io->smb2.in.access_mask;
+ io2->generic.in.alloc_size = 0;
+ io2->generic.in.file_attr = io->smb2.in.file_attr;
+ io2->generic.in.share_access = io->smb2.in.share_access;
+ io2->generic.in.open_disposition= io->smb2.in.open_disposition;
+ io2->generic.in.create_options = io->smb2.in.create_options;
+ io2->generic.in.impersonation = io->smb2.in.impersonation;
+ io2->generic.in.security_flags = 0;
+ io2->generic.in.fname = io->smb2.in.fname;
+ io2->generic.in.sec_desc = NULL;
+ io2->generic.in.ea_list = NULL;
+ status = ntvfs->ops->open(ntvfs, req, io2);
+ break;
default:
status = NT_STATUS_INVALID_LEVEL;