r20048: Fix vfs_full_audit after Jims kernel_flock addition
[kai/samba.git] / source3 / modules / vfs_full_audit.c
index d9d898dc0eac19df7163580ef4b5abbe2052fc99..beda82c00e45e5ae495745f18b7364939136bd64 100644 (file)
@@ -35,6 +35,9 @@
  * full_audit:success = open opendir
  * full_audit:failure = all
  *
+ * vfs op can be "all" which means log all operations.
+ * vfs op can be "none" which means no logging.
+ *
  * This leads to syslog entries of the form:
  * smbd_audit: nobody|192.168.234.1|opendir|ok|.
  * smbd_audit: nobody|192.168.234.1|open|fail (File not found)|r|x.txt
 
 #include "includes.h"
 
-extern struct current_user current_user;
-
 static int vfs_full_audit_debug_level = DBGC_VFS;
 
+struct vfs_full_audit_private_data {
+       struct bitmap *success_ops;
+       struct bitmap *failure_ops;
+};
+
 #undef DBGC_CLASS
 #define DBGC_CLASS vfs_full_audit_debug_level
 
 /* Function prototypes */
 
-static int smb_full_audit_connect(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_connect(vfs_handle_struct *handle,
                         const char *svc, const char *user);
-static void smb_full_audit_disconnect(vfs_handle_struct *handle,
-                            connection_struct *conn);
+static void smb_full_audit_disconnect(vfs_handle_struct *handle);
 static SMB_BIG_UINT smb_full_audit_disk_free(vfs_handle_struct *handle,
-                                   connection_struct *conn, const char *path,
+                                   const char *path,
                                    BOOL small_query, SMB_BIG_UINT *bsize, 
                                    SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize);
 static int smb_full_audit_get_quota(struct vfs_handle_struct *handle,
-                          struct connection_struct *conn,
                           enum SMB_QUOTA_TYPE qtype, unid_t id,
                           SMB_DISK_QUOTA *qt);
 static int smb_full_audit_set_quota(struct vfs_handle_struct *handle,
-                          struct connection_struct *conn,
                           enum SMB_QUOTA_TYPE qtype, unid_t id,
                           SMB_DISK_QUOTA *qt);
 static int smb_full_audit_get_shadow_copy_data(struct vfs_handle_struct *handle,
                                 struct files_struct *fsp,
                                 SHADOW_COPY_DATA *shadow_copy_data, BOOL labels);
 static int smb_full_audit_statvfs(struct vfs_handle_struct *handle,
-                               struct connection_struct *conn,
                                const char *path,
                                struct vfs_statvfs_struct *statbuf);
 
-static SMB_STRUCT_DIR *smb_full_audit_opendir(vfs_handle_struct *handle, connection_struct *conn,
+static SMB_STRUCT_DIR *smb_full_audit_opendir(vfs_handle_struct *handle,
                          const char *fname, const char *mask, uint32 attr);
 static SMB_STRUCT_DIRENT *smb_full_audit_readdir(vfs_handle_struct *handle,
-                                   connection_struct *conn, SMB_STRUCT_DIR *dirp);
-static void smb_full_audit_seekdir(vfs_handle_struct *handle, connection_struct *conn,
+                                   SMB_STRUCT_DIR *dirp);
+static void smb_full_audit_seekdir(vfs_handle_struct *handle,
                        SMB_STRUCT_DIR *dirp, long offset);
-static long smb_full_audit_telldir(vfs_handle_struct *handle, connection_struct *conn,
+static long smb_full_audit_telldir(vfs_handle_struct *handle,
                        SMB_STRUCT_DIR *dirp);
-static void smb_full_audit_rewinddir(vfs_handle_struct *handle, connection_struct *conn,
+static void smb_full_audit_rewinddir(vfs_handle_struct *handle,
                        SMB_STRUCT_DIR *dirp);
-static int smb_full_audit_mkdir(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_mkdir(vfs_handle_struct *handle,
                       const char *path, mode_t mode);
-static int smb_full_audit_rmdir(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_rmdir(vfs_handle_struct *handle,
                       const char *path);
-static int smb_full_audit_closedir(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_closedir(vfs_handle_struct *handle,
                          SMB_STRUCT_DIR *dirp);
-static int smb_full_audit_open(vfs_handle_struct *handle, connection_struct *conn,
-                     const char *fname, int flags, mode_t mode);
+static int smb_full_audit_open(vfs_handle_struct *handle,
+                     const char *fname, files_struct *fsp, int flags, mode_t mode);
 static int smb_full_audit_close(vfs_handle_struct *handle, files_struct *fsp, int fd);
 static ssize_t smb_full_audit_read(vfs_handle_struct *handle, files_struct *fsp,
                          int fd, void *data, size_t n);
@@ -124,44 +126,49 @@ static ssize_t smb_full_audit_sendfile(vfs_handle_struct *handle, int tofd,
                              files_struct *fsp, int fromfd,
                              const DATA_BLOB *hdr, SMB_OFF_T offset,
                              size_t n);
-static int smb_full_audit_rename(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_rename(vfs_handle_struct *handle,
                        const char *oldname, const char *newname);
 static int smb_full_audit_fsync(vfs_handle_struct *handle, files_struct *fsp, int fd);
-static int smb_full_audit_stat(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_stat(vfs_handle_struct *handle,
                      const char *fname, SMB_STRUCT_STAT *sbuf);
 static int smb_full_audit_fstat(vfs_handle_struct *handle, files_struct *fsp, int fd,
                       SMB_STRUCT_STAT *sbuf);
-static int smb_full_audit_lstat(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_lstat(vfs_handle_struct *handle,
                       const char *path, SMB_STRUCT_STAT *sbuf);
-static int smb_full_audit_unlink(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_unlink(vfs_handle_struct *handle,
                        const char *path);
-static int smb_full_audit_chmod(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_chmod(vfs_handle_struct *handle,
                       const char *path, mode_t mode);
 static int smb_full_audit_fchmod(vfs_handle_struct *handle, files_struct *fsp, int fd,
                        mode_t mode);
-static int smb_full_audit_chown(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_chown(vfs_handle_struct *handle,
                       const char *path, uid_t uid, gid_t gid);
 static int smb_full_audit_fchown(vfs_handle_struct *handle, files_struct *fsp, int fd,
                        uid_t uid, gid_t gid);
-static int smb_full_audit_chdir(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_chdir(vfs_handle_struct *handle,
                       const char *path);
-static char *smb_full_audit_getwd(vfs_handle_struct *handle, connection_struct *conn,
+static char *smb_full_audit_getwd(vfs_handle_struct *handle,
                         char *path);
-static int smb_full_audit_utime(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_utime(vfs_handle_struct *handle,
                       const char *path, struct utimbuf *times);
 static int smb_full_audit_ftruncate(vfs_handle_struct *handle, files_struct *fsp,
                           int fd, SMB_OFF_T len);
 static BOOL smb_full_audit_lock(vfs_handle_struct *handle, files_struct *fsp, int fd,
                       int op, SMB_OFF_T offset, SMB_OFF_T count, int type);
-static int smb_full_audit_symlink(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_kernel_flock(struct vfs_handle_struct *handle,
+                                      struct files_struct *fsp, int fd,
+                                      uint32 share_mode);
+static BOOL smb_full_audit_getlock(vfs_handle_struct *handle, files_struct *fsp, int fd,
+                      SMB_OFF_T *poffset, SMB_OFF_T *pcount, int *ptype, pid_t *ppid);
+static int smb_full_audit_symlink(vfs_handle_struct *handle,
                         const char *oldpath, const char *newpath);
-static int smb_full_audit_readlink(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_readlink(vfs_handle_struct *handle,
                          const char *path, char *buf, size_t bufsiz);
-static int smb_full_audit_link(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_link(vfs_handle_struct *handle,
                      const char *oldpath, const char *newpath);
-static int smb_full_audit_mknod(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_mknod(vfs_handle_struct *handle,
                       const char *pathname, mode_t mode, SMB_DEV_T dev);
-static char *smb_full_audit_realpath(vfs_handle_struct *handle, connection_struct *conn,
+static char *smb_full_audit_realpath(vfs_handle_struct *handle,
                            const char *path, char *resolved_path);
 static size_t smb_full_audit_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
                                int fd, uint32 security_info,
@@ -175,120 +182,99 @@ static BOOL smb_full_audit_fset_nt_acl(vfs_handle_struct *handle, files_struct *
 static BOOL smb_full_audit_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
                             const char *name, uint32 security_info_sent,
                             SEC_DESC *psd);
-static int smb_full_audit_chmod_acl(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_chmod_acl(vfs_handle_struct *handle,
                           const char *path, mode_t mode);
 static int smb_full_audit_fchmod_acl(vfs_handle_struct *handle, files_struct *fsp,
                            int fd, mode_t mode);
 static int smb_full_audit_sys_acl_get_entry(vfs_handle_struct *handle,
-                                  connection_struct *conn,
                                   SMB_ACL_T theacl, int entry_id,
                                   SMB_ACL_ENTRY_T *entry_p);
 static int smb_full_audit_sys_acl_get_tag_type(vfs_handle_struct *handle,
-                                     connection_struct *conn,
                                      SMB_ACL_ENTRY_T entry_d,
                                      SMB_ACL_TAG_T *tag_type_p);
 static int smb_full_audit_sys_acl_get_permset(vfs_handle_struct *handle,
-                                    connection_struct *conn,
                                     SMB_ACL_ENTRY_T entry_d,
                                     SMB_ACL_PERMSET_T *permset_p);
 static void * smb_full_audit_sys_acl_get_qualifier(vfs_handle_struct *handle,
-                                         connection_struct *conn,
                                          SMB_ACL_ENTRY_T entry_d);
 static SMB_ACL_T smb_full_audit_sys_acl_get_file(vfs_handle_struct *handle,
-                                       connection_struct *conn,
                                        const char *path_p,
                                        SMB_ACL_TYPE_T type);
 static SMB_ACL_T smb_full_audit_sys_acl_get_fd(vfs_handle_struct *handle,
                                      files_struct *fsp,
                                      int fd);
 static int smb_full_audit_sys_acl_clear_perms(vfs_handle_struct *handle,
-                                    connection_struct *conn,
                                     SMB_ACL_PERMSET_T permset);
 static int smb_full_audit_sys_acl_add_perm(vfs_handle_struct *handle,
-                                 connection_struct *conn,
                                  SMB_ACL_PERMSET_T permset,
                                  SMB_ACL_PERM_T perm);
 static char * smb_full_audit_sys_acl_to_text(vfs_handle_struct *handle,
-                                   connection_struct *conn, SMB_ACL_T theacl,
+                                   SMB_ACL_T theacl,
                                    ssize_t *plen);
 static SMB_ACL_T smb_full_audit_sys_acl_init(vfs_handle_struct *handle,
-                                   connection_struct *conn,
                                    int count);
 static int smb_full_audit_sys_acl_create_entry(vfs_handle_struct *handle,
-                                     connection_struct *conn, SMB_ACL_T *pacl,
+                                     SMB_ACL_T *pacl,
                                      SMB_ACL_ENTRY_T *pentry);
 static int smb_full_audit_sys_acl_set_tag_type(vfs_handle_struct *handle,
-                                     connection_struct *conn,
                                      SMB_ACL_ENTRY_T entry,
                                      SMB_ACL_TAG_T tagtype);
 static int smb_full_audit_sys_acl_set_qualifier(vfs_handle_struct *handle,
-                                      connection_struct *conn,
                                       SMB_ACL_ENTRY_T entry,
                                       void *qual);
 static int smb_full_audit_sys_acl_set_permset(vfs_handle_struct *handle,
-                                    connection_struct *conn,
                                     SMB_ACL_ENTRY_T entry,
                                     SMB_ACL_PERMSET_T permset);
 static int smb_full_audit_sys_acl_valid(vfs_handle_struct *handle,
-                              connection_struct *conn,
                               SMB_ACL_T theacl );
 static int smb_full_audit_sys_acl_set_file(vfs_handle_struct *handle,
-                                 connection_struct *conn,
                                  const char *name, SMB_ACL_TYPE_T acltype,
                                  SMB_ACL_T theacl);
 static int smb_full_audit_sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp,
                                int fd, SMB_ACL_T theacl);
 static int smb_full_audit_sys_acl_delete_def_file(vfs_handle_struct *handle,
-                                        connection_struct *conn,
                                         const char *path);
 static int smb_full_audit_sys_acl_get_perm(vfs_handle_struct *handle,
-                                 connection_struct *conn,
                                  SMB_ACL_PERMSET_T permset,
                                  SMB_ACL_PERM_T perm);
 static int smb_full_audit_sys_acl_free_text(vfs_handle_struct *handle,
-                                  connection_struct *conn,
                                   char *text);
 static int smb_full_audit_sys_acl_free_acl(vfs_handle_struct *handle,
-                                 connection_struct *conn,
                                  SMB_ACL_T posix_acl);
 static int smb_full_audit_sys_acl_free_qualifier(vfs_handle_struct *handle,
-                                       connection_struct *conn,
                                        void *qualifier,
                                        SMB_ACL_TAG_T tagtype);
 static ssize_t smb_full_audit_getxattr(struct vfs_handle_struct *handle,
-                             struct connection_struct *conn, const char *path,
+                             const char *path,
                              const char *name, void *value, size_t size);
 static ssize_t smb_full_audit_lgetxattr(struct vfs_handle_struct *handle,
-                              struct connection_struct *conn,
                               const char *path, const char *name,
                               void *value, size_t size);
 static ssize_t smb_full_audit_fgetxattr(struct vfs_handle_struct *handle,
                               struct files_struct *fsp, int fd,
                               const char *name, void *value, size_t size);
 static ssize_t smb_full_audit_listxattr(struct vfs_handle_struct *handle,
-                              struct connection_struct *conn,
                               const char *path, char *list, size_t size);
 static ssize_t smb_full_audit_llistxattr(struct vfs_handle_struct *handle,
-                               struct connection_struct *conn,
                                const char *path, char *list, size_t size);
 static ssize_t smb_full_audit_flistxattr(struct vfs_handle_struct *handle,
                                struct files_struct *fsp, int fd, char *list,
                                size_t size);
 static int smb_full_audit_removexattr(struct vfs_handle_struct *handle,
-                            struct connection_struct *conn, const char *path,
+                            const char *path,
                             const char *name);
 static int smb_full_audit_lremovexattr(struct vfs_handle_struct *handle,
-                             struct connection_struct *conn, const char *path,
+                             const char *path,
                              const char *name);
 static int smb_full_audit_fremovexattr(struct vfs_handle_struct *handle,
                              struct files_struct *fsp, int fd,
                              const char *name);
 static int smb_full_audit_setxattr(struct vfs_handle_struct *handle,
-                         struct connection_struct *conn, const char *path,
+                         const char *path,
                          const char *name, const void *value, size_t size,
                          int flags);
 static int smb_full_audit_lsetxattr(struct vfs_handle_struct *handle,
-                          struct connection_struct *conn, const char *path,
+                          const char *path,
                           const char *name, const void *value, size_t size,
                           int flags);
 static int smb_full_audit_fsetxattr(struct vfs_handle_struct *handle,
@@ -391,6 +377,10 @@ static vfs_op_tuple audit_op_tuples[] = {
         SMB_VFS_LAYER_LOGGER},
        {SMB_VFS_OP(smb_full_audit_lock),       SMB_VFS_OP_LOCK,
         SMB_VFS_LAYER_LOGGER},
+       {SMB_VFS_OP(smb_full_audit_kernel_flock),       SMB_VFS_OP_KERNEL_FLOCK,
+        SMB_VFS_LAYER_LOGGER},
+       {SMB_VFS_OP(smb_full_audit_getlock),    SMB_VFS_OP_GETLOCK,
+        SMB_VFS_LAYER_LOGGER},
        {SMB_VFS_OP(smb_full_audit_symlink),    SMB_VFS_OP_SYMLINK,
         SMB_VFS_LAYER_LOGGER},
        {SMB_VFS_OP(smb_full_audit_readlink),   SMB_VFS_OP_READLINK,
@@ -556,6 +546,8 @@ static struct {
        { SMB_VFS_OP_UTIME,     "utime" },
        { SMB_VFS_OP_FTRUNCATE, "ftruncate" },
        { SMB_VFS_OP_LOCK,      "lock" },
+       { SMB_VFS_OP_KERNEL_FLOCK,      "kernel_flock" },
+       { SMB_VFS_OP_GETLOCK,   "getlock" },
        { SMB_VFS_OP_SYMLINK,   "symlink" },
        { SMB_VFS_OP_READLINK,  "readlink" },
        { SMB_VFS_OP_LINK,      "link" },
@@ -655,31 +647,45 @@ static int audit_syslog_priority(vfs_handle_struct *handle)
 static char *audit_prefix(connection_struct *conn)
 {
        static pstring prefix;
+       extern userdom_struct current_user_info;
 
        pstrcpy(prefix, lp_parm_const_string(SNUM(conn), "full_audit",
                                             "prefix", "%u|%I"));
-       standard_sub_snum(SNUM(conn), prefix, sizeof(prefix)-1);
+       standard_sub_advanced(lp_servicename(SNUM(conn)), conn->user,
+                             conn->connectpath, conn->gid,
+                             get_current_username(),
+                             current_user_info.domain,
+                             prefix, sizeof(prefix));
        return prefix;
 }
 
-static struct bitmap *success_ops = NULL;
-
-static BOOL log_success(vfs_op_type op)
+static BOOL log_success(vfs_handle_struct *handle, vfs_op_type op)
 {
-       if (success_ops == NULL)
+       struct vfs_full_audit_private_data *pd = NULL;
+
+       SMB_VFS_HANDLE_GET_DATA(handle, pd,
+               struct vfs_full_audit_private_data,
+               return True);
+
+       if (pd->success_ops == NULL) {
                return True;
+       }
 
-       return bitmap_query(success_ops, op);
+       return bitmap_query(pd->success_ops, op);
 }
 
-static struct bitmap *failure_ops = NULL;
-
-static BOOL log_failure(vfs_op_type op)
+static BOOL log_failure(vfs_handle_struct *handle, vfs_op_type op)
 {
-       if (failure_ops == NULL)
+       struct vfs_full_audit_private_data *pd = NULL;
+
+       SMB_VFS_HANDLE_GET_DATA(handle, pd,
+               struct vfs_full_audit_private_data,
+               return True);
+
+       if (pd->failure_ops == NULL)
                return True;
 
-       return bitmap_query(failure_ops, op);
+       return bitmap_query(pd->failure_ops, op);
 }
 
 static void init_bitmap(struct bitmap **bm, const char **ops)
@@ -706,6 +712,10 @@ static void init_bitmap(struct bitmap **bm, const char **ops)
                        break;
                }
 
+               if (strequal(*ops, "none")) {
+                       break;
+               }
+
                for (i=0; i<SMB_VFS_OP_LAST; i++) {
                        if (vfs_op_names[i].name == NULL) {
                                smb_panic("vfs_full_audit.c: name table not "
@@ -747,10 +757,10 @@ static void do_log(vfs_op_type op, BOOL success, vfs_handle_struct *handle,
        pstring op_msg;
        va_list ap;
 
-       if (success && (!log_success(op)))
+       if (success && (!log_success(handle, op)))
                return;
 
-       if (!success && (!log_failure(op)))
+       if (!success && (!log_failure(handle, op)))
                return;
 
        if (success)
@@ -768,26 +778,57 @@ static void do_log(vfs_op_type op, BOOL success, vfs_handle_struct *handle,
        return;
 }
 
+/* Free function for the private data. */
+
+static void free_private_data(void **p_data)
+{
+       struct vfs_full_audit_private_data *pd = *(struct vfs_full_audit_private_data **)p_data;
+
+       if (pd->success_ops) {
+               bitmap_free(pd->success_ops);
+       }
+       if (pd->failure_ops) {
+               bitmap_free(pd->failure_ops);
+       }
+       SAFE_FREE(pd);
+       *p_data = NULL;
+}
+
 /* Implementation of vfs_ops.  Pass everything on to the default
    operation but log event first. */
 
-static int smb_full_audit_connect(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_connect(vfs_handle_struct *handle,
                         const char *svc, const char *user)
 {
        int result;
+       struct vfs_full_audit_private_data *pd = NULL;
        const char *none[] = { NULL };
        const char *all [] = { "all" };
 
+       if (!handle) {
+               return -1;
+       }
+
+       pd = SMB_MALLOC_P(struct vfs_full_audit_private_data);
+       if (!pd) {
+               return -1;
+       }
+       ZERO_STRUCTP(pd);
+
        openlog("smbd_audit", 0, audit_syslog_facility(handle));
 
-       init_bitmap(&success_ops,
-                   lp_parm_string_list(SNUM(conn), "full_audit", "success",
+       init_bitmap(&pd->success_ops,
+                   lp_parm_string_list(SNUM(handle->conn), "full_audit", "success",
                                        none));
-       init_bitmap(&failure_ops,
-                   lp_parm_string_list(SNUM(conn), "full_audit", "failure",
+       init_bitmap(&pd->failure_ops,
+                   lp_parm_string_list(SNUM(handle->conn), "full_audit", "failure",
                                        all));
 
-       result = SMB_VFS_NEXT_CONNECT(handle, conn, svc, user);
+       /* Store the private data. */
+       SMB_VFS_HANDLE_SET_DATA(handle, pd, free_private_data,
+                               struct vfs_full_audit_private_data, return -1);
+
+       result = SMB_VFS_NEXT_CONNECT(handle, svc, user);
 
        do_log(SMB_VFS_OP_CONNECT, True, handle,
               "%s", svc);
@@ -795,31 +836,27 @@ static int smb_full_audit_connect(vfs_handle_struct *handle, connection_struct *
        return result;
 }
 
-static void smb_full_audit_disconnect(vfs_handle_struct *handle,
-                            connection_struct *conn)
+static void smb_full_audit_disconnect(vfs_handle_struct *handle)
 {
-       SMB_VFS_NEXT_DISCONNECT(handle, conn);
+       SMB_VFS_NEXT_DISCONNECT(handle);
 
        do_log(SMB_VFS_OP_DISCONNECT, True, handle,
-              "%s", lp_servicename(SNUM(conn)));
+              "%s", lp_servicename(SNUM(handle->conn)));
 
-       bitmap_free(success_ops);
-       success_ops = NULL;
-
-       bitmap_free(failure_ops);
-       failure_ops = NULL;
+       /* The bitmaps will be disconnected when the private
+          data is deleted. */
 
        return;
 }
 
 static SMB_BIG_UINT smb_full_audit_disk_free(vfs_handle_struct *handle,
-                                   connection_struct *conn, const char *path,
+                                   const char *path,
                                    BOOL small_query, SMB_BIG_UINT *bsize, 
                                    SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize)
 {
        SMB_BIG_UINT result;
 
-       result = SMB_VFS_NEXT_DISK_FREE(handle, conn, path, small_query, bsize,
+       result = SMB_VFS_NEXT_DISK_FREE(handle, path, small_query, bsize,
                                        dfree, dsize);
 
        /* Don't have a reasonable notion of failure here */
@@ -830,13 +867,12 @@ static SMB_BIG_UINT smb_full_audit_disk_free(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_get_quota(struct vfs_handle_struct *handle,
-                          struct connection_struct *conn,
                           enum SMB_QUOTA_TYPE qtype, unid_t id,
                           SMB_DISK_QUOTA *qt)
 {
        int result;
 
-       result = SMB_VFS_NEXT_GET_QUOTA(handle, conn, qtype, id, qt);
+       result = SMB_VFS_NEXT_GET_QUOTA(handle, qtype, id, qt);
 
        do_log(SMB_VFS_OP_GET_QUOTA, (result >= 0), handle, "");
 
@@ -845,13 +881,12 @@ static int smb_full_audit_get_quota(struct vfs_handle_struct *handle,
 
        
 static int smb_full_audit_set_quota(struct vfs_handle_struct *handle,
-                          struct connection_struct *conn,
                           enum SMB_QUOTA_TYPE qtype, unid_t id,
                           SMB_DISK_QUOTA *qt)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SET_QUOTA(handle, conn, qtype, id, qt);
+       result = SMB_VFS_NEXT_SET_QUOTA(handle, qtype, id, qt);
 
        do_log(SMB_VFS_OP_SET_QUOTA, (result >= 0), handle, "");
 
@@ -872,25 +907,24 @@ static int smb_full_audit_get_shadow_copy_data(struct vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_statvfs(struct vfs_handle_struct *handle,
-                               struct connection_struct *conn,
                                const char *path,
                                struct vfs_statvfs_struct *statbuf)
 {
        int result;
 
-       result = SMB_VFS_NEXT_STATVFS(handle, conn, path, statbuf);
+       result = SMB_VFS_NEXT_STATVFS(handle, path, statbuf);
 
        do_log(SMB_VFS_OP_STATVFS, (result >= 0), handle, "");
 
        return result;
 }
 
-static SMB_STRUCT_DIR *smb_full_audit_opendir(vfs_handle_struct *handle, connection_struct *conn,
+static SMB_STRUCT_DIR *smb_full_audit_opendir(vfs_handle_struct *handle,
                          const char *fname, const char *mask, uint32 attr)
 {
        SMB_STRUCT_DIR *result;
 
-       result = SMB_VFS_NEXT_OPENDIR(handle, conn, fname, mask, attr);
+       result = SMB_VFS_NEXT_OPENDIR(handle, fname, mask, attr);
 
        do_log(SMB_VFS_OP_OPENDIR, (result != NULL), handle, "%s", fname);
 
@@ -898,11 +932,11 @@ static SMB_STRUCT_DIR *smb_full_audit_opendir(vfs_handle_struct *handle, connect
 }
 
 static SMB_STRUCT_DIRENT *smb_full_audit_readdir(vfs_handle_struct *handle,
-                                   connection_struct *conn, SMB_STRUCT_DIR *dirp)
+                                   SMB_STRUCT_DIR *dirp)
 {
        SMB_STRUCT_DIRENT *result;
 
-       result = SMB_VFS_NEXT_READDIR(handle, conn, dirp);
+       result = SMB_VFS_NEXT_READDIR(handle, dirp);
 
        /* This operation has no reasonable error condition
         * (End of dir is also failure), so always succeed.
@@ -912,78 +946,78 @@ static SMB_STRUCT_DIRENT *smb_full_audit_readdir(vfs_handle_struct *handle,
        return result;
 }
 
-static void smb_full_audit_seekdir(vfs_handle_struct *handle, connection_struct *conn,
+static void smb_full_audit_seekdir(vfs_handle_struct *handle,
                        SMB_STRUCT_DIR *dirp, long offset)
 {
-       SMB_VFS_NEXT_SEEKDIR(handle, conn, dirp, offset);
+       SMB_VFS_NEXT_SEEKDIR(handle, dirp, offset);
 
        do_log(SMB_VFS_OP_SEEKDIR, True, handle, "");
        return;
 }
 
-static long smb_full_audit_telldir(vfs_handle_struct *handle, connection_struct *conn,
+static long smb_full_audit_telldir(vfs_handle_struct *handle,
                        SMB_STRUCT_DIR *dirp)
 {
        long result;
 
-       result = SMB_VFS_NEXT_TELLDIR(handle, conn, dirp);
+       result = SMB_VFS_NEXT_TELLDIR(handle, dirp);
 
        do_log(SMB_VFS_OP_TELLDIR, True, handle, "");
 
        return result;
 }
 
-static void smb_full_audit_rewinddir(vfs_handle_struct *handle, connection_struct *conn,
+static void smb_full_audit_rewinddir(vfs_handle_struct *handle,
                        SMB_STRUCT_DIR *dirp)
 {
-       SMB_VFS_NEXT_REWINDDIR(handle, conn, dirp);
+       SMB_VFS_NEXT_REWINDDIR(handle, dirp);
 
        do_log(SMB_VFS_OP_REWINDDIR, True, handle, "");
        return;
 }
 
-static int smb_full_audit_mkdir(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_mkdir(vfs_handle_struct *handle,
                       const char *path, mode_t mode)
 {
        int result;
        
-       result = SMB_VFS_NEXT_MKDIR(handle, conn, path, mode);
+       result = SMB_VFS_NEXT_MKDIR(handle, path, mode);
        
        do_log(SMB_VFS_OP_MKDIR, (result >= 0), handle, "%s", path);
 
        return result;
 }
 
-static int smb_full_audit_rmdir(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_rmdir(vfs_handle_struct *handle,
                       const char *path)
 {
        int result;
        
-       result = SMB_VFS_NEXT_RMDIR(handle, conn, path);
+       result = SMB_VFS_NEXT_RMDIR(handle, path);
 
        do_log(SMB_VFS_OP_RMDIR, (result >= 0), handle, "%s", path);
 
        return result;
 }
 
-static int smb_full_audit_closedir(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_closedir(vfs_handle_struct *handle,
                          SMB_STRUCT_DIR *dirp)
 {
        int result;
 
-       result = SMB_VFS_NEXT_CLOSEDIR(handle, conn, dirp);
+       result = SMB_VFS_NEXT_CLOSEDIR(handle, dirp);
        
        do_log(SMB_VFS_OP_CLOSEDIR, (result >= 0), handle, "");
 
        return result;
 }
 
-static int smb_full_audit_open(vfs_handle_struct *handle, connection_struct *conn,
-                     const char *fname, int flags, mode_t mode)
+static int smb_full_audit_open(vfs_handle_struct *handle,
+                     const char *fname, files_struct *fsp, int flags, mode_t mode)
 {
        int result;
        
-       result = SMB_VFS_NEXT_OPEN(handle, conn, fname, flags, mode);
+       result = SMB_VFS_NEXT_OPEN(handle, fname, fsp, flags, mode);
 
        do_log(SMB_VFS_OP_OPEN, (result >= 0), handle, "%s|%s",
               ((flags & O_WRONLY) || (flags & O_RDWR))?"w":"r",
@@ -1081,12 +1115,12 @@ static ssize_t smb_full_audit_sendfile(vfs_handle_struct *handle, int tofd,
        return result;
 }
 
-static int smb_full_audit_rename(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_rename(vfs_handle_struct *handle,
                        const char *oldname, const char *newname)
 {
        int result;
        
-       result = SMB_VFS_NEXT_RENAME(handle, conn, oldname, newname);
+       result = SMB_VFS_NEXT_RENAME(handle, oldname, newname);
 
        do_log(SMB_VFS_OP_RENAME, (result >= 0), handle, "%s|%s", oldname, newname);
 
@@ -1104,12 +1138,12 @@ static int smb_full_audit_fsync(vfs_handle_struct *handle, files_struct *fsp, in
        return result;    
 }
 
-static int smb_full_audit_stat(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_stat(vfs_handle_struct *handle,
                      const char *fname, SMB_STRUCT_STAT *sbuf)
 {
        int result;
        
-       result = SMB_VFS_NEXT_STAT(handle, conn, fname, sbuf);
+       result = SMB_VFS_NEXT_STAT(handle, fname, sbuf);
 
        do_log(SMB_VFS_OP_STAT, (result >= 0), handle, "%s", fname);
 
@@ -1128,36 +1162,36 @@ static int smb_full_audit_fstat(vfs_handle_struct *handle, files_struct *fsp, in
        return result;
 }
 
-static int smb_full_audit_lstat(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_lstat(vfs_handle_struct *handle,
                       const char *path, SMB_STRUCT_STAT *sbuf)
 {
        int result;
        
-       result = SMB_VFS_NEXT_LSTAT(handle, conn, path, sbuf);
+       result = SMB_VFS_NEXT_LSTAT(handle, path, sbuf);
 
        do_log(SMB_VFS_OP_LSTAT, (result >= 0), handle, "%s", path);
 
        return result;    
 }
 
-static int smb_full_audit_unlink(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_unlink(vfs_handle_struct *handle,
                        const char *path)
 {
        int result;
        
-       result = SMB_VFS_NEXT_UNLINK(handle, conn, path);
+       result = SMB_VFS_NEXT_UNLINK(handle, path);
 
        do_log(SMB_VFS_OP_UNLINK, (result >= 0), handle, "%s", path);
 
        return result;
 }
 
-static int smb_full_audit_chmod(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_chmod(vfs_handle_struct *handle,
                       const char *path, mode_t mode)
 {
        int result;
 
-       result = SMB_VFS_NEXT_CHMOD(handle, conn, path, mode);
+       result = SMB_VFS_NEXT_CHMOD(handle, path, mode);
 
        do_log(SMB_VFS_OP_CHMOD, (result >= 0), handle, "%s|%o", path, mode);
 
@@ -1177,12 +1211,12 @@ static int smb_full_audit_fchmod(vfs_handle_struct *handle, files_struct *fsp, i
        return result;
 }
 
-static int smb_full_audit_chown(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_chown(vfs_handle_struct *handle,
                       const char *path, uid_t uid, gid_t gid)
 {
        int result;
 
-       result = SMB_VFS_NEXT_CHOWN(handle, conn, path, uid, gid);
+       result = SMB_VFS_NEXT_CHOWN(handle, path, uid, gid);
 
        do_log(SMB_VFS_OP_CHOWN, (result >= 0), handle, "%s|%ld|%ld",
               path, (long int)uid, (long int)gid);
@@ -1203,36 +1237,36 @@ static int smb_full_audit_fchown(vfs_handle_struct *handle, files_struct *fsp, i
        return result;
 }
 
-static int smb_full_audit_chdir(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_chdir(vfs_handle_struct *handle,
                       const char *path)
 {
        int result;
 
-       result = SMB_VFS_NEXT_CHDIR(handle, conn, path);
+       result = SMB_VFS_NEXT_CHDIR(handle, path);
 
        do_log(SMB_VFS_OP_CHDIR, (result >= 0), handle, "chdir|%s", path);
 
        return result;
 }
 
-static char *smb_full_audit_getwd(vfs_handle_struct *handle, connection_struct *conn,
+static char *smb_full_audit_getwd(vfs_handle_struct *handle,
                         char *path)
 {
        char *result;
 
-       result = SMB_VFS_NEXT_GETWD(handle, conn, path);
+       result = SMB_VFS_NEXT_GETWD(handle, path);
        
        do_log(SMB_VFS_OP_GETWD, (result != NULL), handle, "%s", path);
 
        return result;
 }
 
-static int smb_full_audit_utime(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_utime(vfs_handle_struct *handle,
                       const char *path, struct utimbuf *times)
 {
        int result;
 
-       result = SMB_VFS_NEXT_UTIME(handle, conn, path, times);
+       result = SMB_VFS_NEXT_UTIME(handle, path, times);
 
        do_log(SMB_VFS_OP_UTIME, (result >= 0), handle, "%s", path);
 
@@ -1264,12 +1298,38 @@ static BOOL smb_full_audit_lock(vfs_handle_struct *handle, files_struct *fsp, in
        return result;
 }
 
-static int smb_full_audit_symlink(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_kernel_flock(struct vfs_handle_struct *handle,
+                                      struct files_struct *fsp, int fd,
+                                      uint32 share_mode)
+{
+       int result;
+
+       result = SMB_VFS_NEXT_KERNEL_FLOCK(handle, fsp, fd, share_mode);
+
+       do_log(SMB_VFS_OP_KERNEL_FLOCK, (result >= 0), handle, "%s",
+              fsp->fsp_name);
+
+       return result;
+}
+
+static BOOL smb_full_audit_getlock(vfs_handle_struct *handle, files_struct *fsp, int fd,
+                      SMB_OFF_T *poffset, SMB_OFF_T *pcount, int *ptype, pid_t *ppid)
+{
+       BOOL result;
+
+       result = SMB_VFS_NEXT_GETLOCK(handle, fsp, fd, poffset, pcount, ptype, ppid);
+
+       do_log(SMB_VFS_OP_GETLOCK, (result >= 0), handle, "%s", fsp->fsp_name);
+
+       return result;
+}
+
+static int smb_full_audit_symlink(vfs_handle_struct *handle,
                         const char *oldpath, const char *newpath)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYMLINK(handle, conn, oldpath, newpath);
+       result = SMB_VFS_NEXT_SYMLINK(handle, oldpath, newpath);
 
        do_log(SMB_VFS_OP_SYMLINK, (result >= 0), handle,
               "%s|%s", oldpath, newpath);
@@ -1277,24 +1337,24 @@ static int smb_full_audit_symlink(vfs_handle_struct *handle, connection_struct *
        return result;
 }
 
-static int smb_full_audit_readlink(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_readlink(vfs_handle_struct *handle,
                          const char *path, char *buf, size_t bufsiz)
 {
        int result;
 
-       result = SMB_VFS_NEXT_READLINK(handle, conn, path, buf, bufsiz);
+       result = SMB_VFS_NEXT_READLINK(handle, path, buf, bufsiz);
 
        do_log(SMB_VFS_OP_READLINK, (result >= 0), handle, "%s", path);
 
        return result;
 }
 
-static int smb_full_audit_link(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_link(vfs_handle_struct *handle,
                      const char *oldpath, const char *newpath)
 {
        int result;
 
-       result = SMB_VFS_NEXT_LINK(handle, conn, oldpath, newpath);
+       result = SMB_VFS_NEXT_LINK(handle, oldpath, newpath);
 
        do_log(SMB_VFS_OP_LINK, (result >= 0), handle,
               "%s|%s", oldpath, newpath);
@@ -1302,24 +1362,24 @@ static int smb_full_audit_link(vfs_handle_struct *handle, connection_struct *con
        return result;
 }
 
-static int smb_full_audit_mknod(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_mknod(vfs_handle_struct *handle,
                       const char *pathname, mode_t mode, SMB_DEV_T dev)
 {
        int result;
 
-       result = SMB_VFS_NEXT_MKNOD(handle, conn, pathname, mode, dev);
+       result = SMB_VFS_NEXT_MKNOD(handle, pathname, mode, dev);
 
        do_log(SMB_VFS_OP_MKNOD, (result >= 0), handle, "%s", pathname);
 
        return result;
 }
 
-static char *smb_full_audit_realpath(vfs_handle_struct *handle, connection_struct *conn,
+static char *smb_full_audit_realpath(vfs_handle_struct *handle,
                            const char *path, char *resolved_path)
 {
        char *result;
 
-       result = SMB_VFS_NEXT_REALPATH(handle, conn, path, resolved_path);
+       result = SMB_VFS_NEXT_REALPATH(handle, path, resolved_path);
 
        do_log(SMB_VFS_OP_REALPATH, (result != NULL), handle, "%s", path);
 
@@ -1384,12 +1444,12 @@ static BOOL smb_full_audit_set_nt_acl(vfs_handle_struct *handle, files_struct *f
        return result;
 }
 
-static int smb_full_audit_chmod_acl(vfs_handle_struct *handle, connection_struct *conn,
+static int smb_full_audit_chmod_acl(vfs_handle_struct *handle,
                           const char *path, mode_t mode)
 {
        int result;
        
-       result = SMB_VFS_NEXT_CHMOD_ACL(handle, conn, path, mode);
+       result = SMB_VFS_NEXT_CHMOD_ACL(handle, path, mode);
 
        do_log(SMB_VFS_OP_CHMOD_ACL, (result >= 0), handle,
               "%s|%o", path, mode);
@@ -1411,13 +1471,13 @@ static int smb_full_audit_fchmod_acl(vfs_handle_struct *handle, files_struct *fs
 }
 
 static int smb_full_audit_sys_acl_get_entry(vfs_handle_struct *handle,
-                                  connection_struct *conn,
+
                                   SMB_ACL_T theacl, int entry_id,
                                   SMB_ACL_ENTRY_T *entry_p)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_GET_ENTRY(handle, conn, theacl, entry_id,
+       result = SMB_VFS_NEXT_SYS_ACL_GET_ENTRY(handle, theacl, entry_id,
                                                entry_p);
 
        do_log(SMB_VFS_OP_SYS_ACL_GET_ENTRY, (result >= 0), handle,
@@ -1427,13 +1487,13 @@ static int smb_full_audit_sys_acl_get_entry(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_sys_acl_get_tag_type(vfs_handle_struct *handle,
-                                     connection_struct *conn,
+
                                      SMB_ACL_ENTRY_T entry_d,
                                      SMB_ACL_TAG_T *tag_type_p)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_GET_TAG_TYPE(handle, conn, entry_d,
+       result = SMB_VFS_NEXT_SYS_ACL_GET_TAG_TYPE(handle, entry_d,
                                                   tag_type_p);
 
        do_log(SMB_VFS_OP_SYS_ACL_GET_TAG_TYPE, (result >= 0), handle,
@@ -1443,13 +1503,13 @@ static int smb_full_audit_sys_acl_get_tag_type(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_sys_acl_get_permset(vfs_handle_struct *handle,
-                                    connection_struct *conn,
+
                                     SMB_ACL_ENTRY_T entry_d,
                                     SMB_ACL_PERMSET_T *permset_p)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_GET_PERMSET(handle, conn, entry_d,
+       result = SMB_VFS_NEXT_SYS_ACL_GET_PERMSET(handle, entry_d,
                                                  permset_p);
 
        do_log(SMB_VFS_OP_SYS_ACL_GET_PERMSET, (result >= 0), handle,
@@ -1459,12 +1519,12 @@ static int smb_full_audit_sys_acl_get_permset(vfs_handle_struct *handle,
 }
 
 static void * smb_full_audit_sys_acl_get_qualifier(vfs_handle_struct *handle,
-                                         connection_struct *conn,
+
                                          SMB_ACL_ENTRY_T entry_d)
 {
        void *result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_GET_QUALIFIER(handle, conn, entry_d);
+       result = SMB_VFS_NEXT_SYS_ACL_GET_QUALIFIER(handle, entry_d);
 
        do_log(SMB_VFS_OP_SYS_ACL_GET_QUALIFIER, (result != NULL), handle,
               "");
@@ -1473,13 +1533,12 @@ static void * smb_full_audit_sys_acl_get_qualifier(vfs_handle_struct *handle,
 }
 
 static SMB_ACL_T smb_full_audit_sys_acl_get_file(vfs_handle_struct *handle,
-                                       connection_struct *conn,
                                        const char *path_p,
                                        SMB_ACL_TYPE_T type)
 {
        SMB_ACL_T result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_GET_FILE(handle, conn, path_p, type);
+       result = SMB_VFS_NEXT_SYS_ACL_GET_FILE(handle, path_p, type);
 
        do_log(SMB_VFS_OP_SYS_ACL_GET_FILE, (result != NULL), handle,
               "%s", path_p);
@@ -1501,12 +1560,12 @@ static SMB_ACL_T smb_full_audit_sys_acl_get_fd(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_sys_acl_clear_perms(vfs_handle_struct *handle,
-                                    connection_struct *conn,
+
                                     SMB_ACL_PERMSET_T permset)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_CLEAR_PERMS(handle, conn, permset);
+       result = SMB_VFS_NEXT_SYS_ACL_CLEAR_PERMS(handle, permset);
 
        do_log(SMB_VFS_OP_SYS_ACL_CLEAR_PERMS, (result >= 0), handle,
               "");
@@ -1515,13 +1574,13 @@ static int smb_full_audit_sys_acl_clear_perms(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_sys_acl_add_perm(vfs_handle_struct *handle,
-                                 connection_struct *conn,
+
                                  SMB_ACL_PERMSET_T permset,
                                  SMB_ACL_PERM_T perm)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_ADD_PERM(handle, conn, permset, perm);
+       result = SMB_VFS_NEXT_SYS_ACL_ADD_PERM(handle, permset, perm);
 
        do_log(SMB_VFS_OP_SYS_ACL_ADD_PERM, (result >= 0), handle,
               "");
@@ -1530,12 +1589,12 @@ static int smb_full_audit_sys_acl_add_perm(vfs_handle_struct *handle,
 }
 
 static char * smb_full_audit_sys_acl_to_text(vfs_handle_struct *handle,
-                                   connection_struct *conn, SMB_ACL_T theacl,
+                                   SMB_ACL_T theacl,
                                    ssize_t *plen)
 {
        char * result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_TO_TEXT(handle, conn, theacl, plen);
+       result = SMB_VFS_NEXT_SYS_ACL_TO_TEXT(handle, theacl, plen);
 
        do_log(SMB_VFS_OP_SYS_ACL_TO_TEXT, (result != NULL), handle,
               "");
@@ -1544,12 +1603,12 @@ static char * smb_full_audit_sys_acl_to_text(vfs_handle_struct *handle,
 }
 
 static SMB_ACL_T smb_full_audit_sys_acl_init(vfs_handle_struct *handle,
-                                   connection_struct *conn,
+
                                    int count)
 {
        SMB_ACL_T result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_INIT(handle, conn, count);
+       result = SMB_VFS_NEXT_SYS_ACL_INIT(handle, count);
 
        do_log(SMB_VFS_OP_SYS_ACL_INIT, (result != NULL), handle,
               "");
@@ -1558,12 +1617,12 @@ static SMB_ACL_T smb_full_audit_sys_acl_init(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_sys_acl_create_entry(vfs_handle_struct *handle,
-                                     connection_struct *conn, SMB_ACL_T *pacl,
+                                     SMB_ACL_T *pacl,
                                      SMB_ACL_ENTRY_T *pentry)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_CREATE_ENTRY(handle, conn, pacl, pentry);
+       result = SMB_VFS_NEXT_SYS_ACL_CREATE_ENTRY(handle, pacl, pentry);
 
        do_log(SMB_VFS_OP_SYS_ACL_CREATE_ENTRY, (result >= 0), handle,
               "");
@@ -1572,13 +1631,13 @@ static int smb_full_audit_sys_acl_create_entry(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_sys_acl_set_tag_type(vfs_handle_struct *handle,
-                                     connection_struct *conn,
+
                                      SMB_ACL_ENTRY_T entry,
                                      SMB_ACL_TAG_T tagtype)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_SET_TAG_TYPE(handle, conn, entry,
+       result = SMB_VFS_NEXT_SYS_ACL_SET_TAG_TYPE(handle, entry,
                                                   tagtype);
 
        do_log(SMB_VFS_OP_SYS_ACL_SET_TAG_TYPE, (result >= 0), handle,
@@ -1588,13 +1647,13 @@ static int smb_full_audit_sys_acl_set_tag_type(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_sys_acl_set_qualifier(vfs_handle_struct *handle,
-                                      connection_struct *conn,
+
                                       SMB_ACL_ENTRY_T entry,
                                       void *qual)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_SET_QUALIFIER(handle, conn, entry, qual);
+       result = SMB_VFS_NEXT_SYS_ACL_SET_QUALIFIER(handle, entry, qual);
 
        do_log(SMB_VFS_OP_SYS_ACL_SET_QUALIFIER, (result >= 0), handle,
               "");
@@ -1603,13 +1662,13 @@ static int smb_full_audit_sys_acl_set_qualifier(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_sys_acl_set_permset(vfs_handle_struct *handle,
-                                    connection_struct *conn,
+
                                     SMB_ACL_ENTRY_T entry,
                                     SMB_ACL_PERMSET_T permset)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_SET_PERMSET(handle, conn, entry, permset);
+       result = SMB_VFS_NEXT_SYS_ACL_SET_PERMSET(handle, entry, permset);
 
        do_log(SMB_VFS_OP_SYS_ACL_SET_PERMSET, (result >= 0), handle,
               "");
@@ -1618,12 +1677,12 @@ static int smb_full_audit_sys_acl_set_permset(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_sys_acl_valid(vfs_handle_struct *handle,
-                              connection_struct *conn,
+
                               SMB_ACL_T theacl )
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_VALID(handle, conn, theacl);
+       result = SMB_VFS_NEXT_SYS_ACL_VALID(handle, theacl);
 
        do_log(SMB_VFS_OP_SYS_ACL_VALID, (result >= 0), handle,
               "");
@@ -1632,13 +1691,13 @@ static int smb_full_audit_sys_acl_valid(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_sys_acl_set_file(vfs_handle_struct *handle,
-                                 connection_struct *conn,
+
                                  const char *name, SMB_ACL_TYPE_T acltype,
                                  SMB_ACL_T theacl)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_SET_FILE(handle, conn, name, acltype,
+       result = SMB_VFS_NEXT_SYS_ACL_SET_FILE(handle, name, acltype,
                                               theacl);
 
        do_log(SMB_VFS_OP_SYS_ACL_SET_FILE, (result >= 0), handle,
@@ -1661,12 +1720,12 @@ static int smb_full_audit_sys_acl_set_fd(vfs_handle_struct *handle, files_struct
 }
 
 static int smb_full_audit_sys_acl_delete_def_file(vfs_handle_struct *handle,
-                                        connection_struct *conn,
+
                                         const char *path)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_DELETE_DEF_FILE(handle, conn, path);
+       result = SMB_VFS_NEXT_SYS_ACL_DELETE_DEF_FILE(handle, path);
 
        do_log(SMB_VFS_OP_SYS_ACL_DELETE_DEF_FILE, (result >= 0), handle,
               "%s", path);
@@ -1675,13 +1734,13 @@ static int smb_full_audit_sys_acl_delete_def_file(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_sys_acl_get_perm(vfs_handle_struct *handle,
-                                 connection_struct *conn,
+
                                  SMB_ACL_PERMSET_T permset,
                                  SMB_ACL_PERM_T perm)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_GET_PERM(handle, conn, permset, perm);
+       result = SMB_VFS_NEXT_SYS_ACL_GET_PERM(handle, permset, perm);
 
        do_log(SMB_VFS_OP_SYS_ACL_GET_PERM, (result >= 0), handle,
               "");
@@ -1690,12 +1749,12 @@ static int smb_full_audit_sys_acl_get_perm(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_sys_acl_free_text(vfs_handle_struct *handle,
-                                  connection_struct *conn,
+
                                   char *text)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_FREE_TEXT(handle, conn, text);
+       result = SMB_VFS_NEXT_SYS_ACL_FREE_TEXT(handle, text);
 
        do_log(SMB_VFS_OP_SYS_ACL_FREE_TEXT, (result >= 0), handle,
               "");
@@ -1704,12 +1763,12 @@ static int smb_full_audit_sys_acl_free_text(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_sys_acl_free_acl(vfs_handle_struct *handle,
-                                 connection_struct *conn,
+
                                  SMB_ACL_T posix_acl)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_FREE_ACL(handle, conn, posix_acl);
+       result = SMB_VFS_NEXT_SYS_ACL_FREE_ACL(handle, posix_acl);
 
        do_log(SMB_VFS_OP_SYS_ACL_FREE_ACL, (result >= 0), handle,
               "");
@@ -1718,13 +1777,12 @@ static int smb_full_audit_sys_acl_free_acl(vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_sys_acl_free_qualifier(vfs_handle_struct *handle,
-                                       connection_struct *conn,
                                        void *qualifier,
                                        SMB_ACL_TAG_T tagtype)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SYS_ACL_FREE_QUALIFIER(handle, conn, qualifier,
+       result = SMB_VFS_NEXT_SYS_ACL_FREE_QUALIFIER(handle, qualifier,
                                                     tagtype);
 
        do_log(SMB_VFS_OP_SYS_ACL_FREE_QUALIFIER, (result >= 0), handle,
@@ -1734,12 +1792,12 @@ static int smb_full_audit_sys_acl_free_qualifier(vfs_handle_struct *handle,
 }
 
 static ssize_t smb_full_audit_getxattr(struct vfs_handle_struct *handle,
-                             struct connection_struct *conn, const char *path,
+                             const char *path,
                              const char *name, void *value, size_t size)
 {
        ssize_t result;
 
-       result = SMB_VFS_NEXT_GETXATTR(handle, conn, path, name, value, size);
+       result = SMB_VFS_NEXT_GETXATTR(handle, path, name, value, size);
 
        do_log(SMB_VFS_OP_GETXATTR, (result >= 0), handle,
               "%s|%s", path, name);
@@ -1748,13 +1806,12 @@ static ssize_t smb_full_audit_getxattr(struct vfs_handle_struct *handle,
 }
 
 static ssize_t smb_full_audit_lgetxattr(struct vfs_handle_struct *handle,
-                              struct connection_struct *conn,
                               const char *path, const char *name,
                               void *value, size_t size)
 {
        ssize_t result;
 
-       result = SMB_VFS_NEXT_LGETXATTR(handle, conn, path, name, value, size);
+       result = SMB_VFS_NEXT_LGETXATTR(handle, path, name, value, size);
 
        do_log(SMB_VFS_OP_LGETXATTR, (result >= 0), handle,
               "%s|%s", path, name);
@@ -1777,12 +1834,11 @@ static ssize_t smb_full_audit_fgetxattr(struct vfs_handle_struct *handle,
 }
 
 static ssize_t smb_full_audit_listxattr(struct vfs_handle_struct *handle,
-                              struct connection_struct *conn,
                               const char *path, char *list, size_t size)
 {
        ssize_t result;
 
-       result = SMB_VFS_NEXT_LISTXATTR(handle, conn, path, list, size);
+       result = SMB_VFS_NEXT_LISTXATTR(handle, path, list, size);
 
        do_log(SMB_VFS_OP_LISTXATTR, (result >= 0), handle, "%s", path);
 
@@ -1790,12 +1846,11 @@ static ssize_t smb_full_audit_listxattr(struct vfs_handle_struct *handle,
 }
 
 static ssize_t smb_full_audit_llistxattr(struct vfs_handle_struct *handle,
-                               struct connection_struct *conn,
                                const char *path, char *list, size_t size)
 {
        ssize_t result;
 
-       result = SMB_VFS_NEXT_LLISTXATTR(handle, conn, path, list, size);
+       result = SMB_VFS_NEXT_LLISTXATTR(handle, path, list, size);
 
        do_log(SMB_VFS_OP_LLISTXATTR, (result >= 0), handle, "%s", path);
 
@@ -1817,12 +1872,12 @@ static ssize_t smb_full_audit_flistxattr(struct vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_removexattr(struct vfs_handle_struct *handle,
-                            struct connection_struct *conn, const char *path,
+                            const char *path,
                             const char *name)
 {
        int result;
 
-       result = SMB_VFS_NEXT_REMOVEXATTR(handle, conn, path, name);
+       result = SMB_VFS_NEXT_REMOVEXATTR(handle, path, name);
 
        do_log(SMB_VFS_OP_REMOVEXATTR, (result >= 0), handle,
               "%s|%s", path, name);
@@ -1831,12 +1886,12 @@ static int smb_full_audit_removexattr(struct vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_lremovexattr(struct vfs_handle_struct *handle,
-                             struct connection_struct *conn, const char *path,
+                             const char *path,
                              const char *name)
 {
        int result;
 
-       result = SMB_VFS_NEXT_LREMOVEXATTR(handle, conn, path, name);
+       result = SMB_VFS_NEXT_LREMOVEXATTR(handle, path, name);
 
        do_log(SMB_VFS_OP_LREMOVEXATTR, (result >= 0), handle,
               "%s|%s", path, name);
@@ -1859,13 +1914,13 @@ static int smb_full_audit_fremovexattr(struct vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_setxattr(struct vfs_handle_struct *handle,
-                         struct connection_struct *conn, const char *path,
+                         const char *path,
                          const char *name, const void *value, size_t size,
                          int flags)
 {
        int result;
 
-       result = SMB_VFS_NEXT_SETXATTR(handle, conn, path, name, value, size,
+       result = SMB_VFS_NEXT_SETXATTR(handle, path, name, value, size,
                                       flags);
 
        do_log(SMB_VFS_OP_SETXATTR, (result >= 0), handle,
@@ -1875,13 +1930,13 @@ static int smb_full_audit_setxattr(struct vfs_handle_struct *handle,
 }
 
 static int smb_full_audit_lsetxattr(struct vfs_handle_struct *handle,
-                          struct connection_struct *conn, const char *path,
+                          const char *path,
                           const char *name, const void *value, size_t size,
                           int flags)
 {
        int result;
 
-       result = SMB_VFS_NEXT_LSETXATTR(handle, conn, path, name, value, size,
+       result = SMB_VFS_NEXT_LSETXATTR(handle, path, name, value, size,
                                        flags);
 
        do_log(SMB_VFS_OP_LSETXATTR, (result >= 0), handle,
@@ -2003,4 +2058,3 @@ NTSTATUS vfs_full_audit_init(void)
        
        return ret;
 }
-