svn commit: samba r17088 - in branches/SAMBA_4_0/source/ntvfs: .
posix
metze at samba.org
metze at samba.org
Mon Jul 17 11:17:32 GMT 2006
Author: metze
Date: 2006-07-17 11:17:32 +0000 (Mon, 17 Jul 2006)
New Revision: 17088
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17088
Log:
add ntvfs mapping function for notify
metze
Modified:
branches/SAMBA_4_0/source/ntvfs/ntvfs_generic.c
branches/SAMBA_4_0/source/ntvfs/posix/pvfs_notify.c
Changeset:
Modified: branches/SAMBA_4_0/source/ntvfs/ntvfs_generic.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/ntvfs_generic.c 2006-07-17 11:15:10 UTC (rev 17087)
+++ branches/SAMBA_4_0/source/ntvfs/ntvfs_generic.c 2006-07-17 11:17:32 UTC (rev 17088)
@@ -1327,3 +1327,67 @@
return ntvfs->ops->close(ntvfs, req, cl2);
}
+
+/*
+ NTVFS notify generic to any mapper
+*/
+static NTSTATUS ntvfs_map_notify_finish(struct ntvfs_module_context *ntvfs,
+ struct ntvfs_request *req,
+ union smb_notify *nt,
+ union smb_notify *nt2,
+ NTSTATUS status)
+{
+ NT_STATUS_NOT_OK_RETURN(status);
+
+ switch (nt->nttrans.level) {
+ case RAW_NOTIFY_SMB2:
+ if (nt2->nttrans.out.num_changes == 0) {
+ return 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);
+ break;
+
+ default:
+ return NT_STATUS_INVALID_LEVEL;
+ }
+
+ return status;
+}
+
+
+/*
+ NTVFS notify generic to any mapper
+*/
+_PUBLIC_ NTSTATUS ntvfs_map_notify(struct ntvfs_module_context *ntvfs,
+ struct ntvfs_request *req,
+ union smb_notify *nt)
+{
+ union smb_notify *nt2;
+ NTSTATUS status;
+
+ nt2 = talloc(req, union smb_notify);
+ NT_STATUS_HAVE_NO_MEMORY(nt2);
+
+ status = ntvfs_map_async_setup(ntvfs, req, nt, nt2,
+ (second_stage_t)ntvfs_map_notify_finish);
+ NT_STATUS_NOT_OK_RETURN(status);
+
+ nt2->nttrans.level = RAW_NOTIFY_NTTRANS;
+
+ switch (nt->nttrans.level) {
+ case RAW_NOTIFY_NTTRANS:
+ status = NT_STATUS_INVALID_LEVEL;
+ break;
+
+ case RAW_NOTIFY_SMB2:
+ nt2->nttrans.in.file.ntvfs = nt->smb2.in.file.ntvfs;
+ nt2->nttrans.in.buffer_size = nt->smb2.in.buffer_size;
+ nt2->nttrans.in.completion_filter = nt->smb2.in.completion_filter;
+ nt2->nttrans.in.recursive = nt->smb2.in.recursive;
+ status = ntvfs->ops->notify(ntvfs, req, nt2);
+ break;
+ }
+
+ return ntvfs_map_async_finish(req, status);
+}
Modified: branches/SAMBA_4_0/source/ntvfs/posix/pvfs_notify.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/posix/pvfs_notify.c 2006-07-17 11:15:10 UTC (rev 17087)
+++ branches/SAMBA_4_0/source/ntvfs/posix/pvfs_notify.c 2006-07-17 11:17:32 UTC (rev 17088)
@@ -226,7 +226,7 @@
struct notify_pending *pending;
if (info->nttrans.level != RAW_NOTIFY_NTTRANS) {
- return NT_STATUS_NOT_IMPLEMENTED;
+ return ntvfs_map_notify(ntvfs, req, info);
}
f = pvfs_find_fd(pvfs, req, info->nttrans.in.file.ntvfs);
More information about the samba-cvs
mailing list