SMBTA: make vfs_smb_traffic_analyzer aware of the sendfile and recvfile functionality...
authorHolger Hetterich <hhetter@novell.com>
Tue, 29 Mar 2011 20:16:10 +0000 (22:16 +0200)
committerJeremy Allison <jra@samba.org>
Thu, 31 Mar 2011 01:01:19 +0000 (18:01 -0700)
source3/modules/vfs_smb_traffic_analyzer.c

index 9f968b021c28c899af2aa72a6bcf0fb861141f2d..48251bba9322466718bddc5d9aec41a4b1131b3e 100644 (file)
@@ -748,6 +748,44 @@ static int smb_traffic_analyzer_mkdir(vfs_handle_struct *handle, \
        return s_data.result;
 }
 
+static ssize_t smb_traffic_analyzer_sendfile(vfs_handle_struct *handle,
+                               int tofd,
+                               files_struct *fromfsp,
+                               const DATA_BLOB *hdr,
+                               SMB_OFF_T offset,
+                               size_t n)
+{
+       struct rw_data s_data;
+       s_data.len = SMB_VFS_NEXT_SENDFILE(handle,
+                       tofd, fromfsp, hdr, offset, n);
+       s_data.filename = fromfsp->fsp_name->base_name;
+       DEBUG(10, ("smb_traffic_analyzer_sendfile: sendfile(r): %s\n",
+               fsp_str_dbg(fromfsp)));
+       smb_traffic_analyzer_send_data(handle,
+               &s_data,
+               vfs_id_read);
+       return s_data.len;
+}
+
+static ssize_t smb_traffic_analyzer_recvfile(vfs_handle_struct *handle,
+                               int fromfd,
+                               files_struct *tofsp,
+                               SMB_OFF_T offset,
+                               size_t n)
+{
+       struct rw_data s_data;
+       s_data.len = SMB_VFS_NEXT_RECVFILE(handle,
+                       fromfd, tofsp, offset, n);
+       s_data.filename = tofsp->fsp_name->base_name;
+       DEBUG(10, ("smb_traffic_analyzer_recvfile: recvfile(w): %s\n",
+               fsp_str_dbg(tofsp)));
+       smb_traffic_analyzer_send_data(handle,
+               &s_data,
+               vfs_id_write);
+       return s_data.len;
+}
+
+
 static ssize_t smb_traffic_analyzer_read(vfs_handle_struct *handle, \
                                files_struct *fsp, void *data, size_t n)
 {
@@ -857,7 +895,9 @@ static struct vfs_fn_pointers vfs_smb_traffic_analyzer_fns = {
        .chdir = smb_traffic_analyzer_chdir,
        .open = smb_traffic_analyzer_open,
        .rmdir = smb_traffic_analyzer_rmdir,
-       .close_fn = smb_traffic_analyzer_close
+       .close_fn = smb_traffic_analyzer_close,
+       .sendfile = smb_traffic_analyzer_sendfile,
+       .recvfile = smb_traffic_analyzer_recvfile
 };
 
 /* Module initialization */