diff options
Diffstat (limited to 'source3/modules/vfs_time_audit.c')
-rw-r--r-- | source3/modules/vfs_time_audit.c | 1266 |
1 files changed, 508 insertions, 758 deletions
diff --git a/source3/modules/vfs_time_audit.c b/source3/modules/vfs_time_audit.c index 365e3b1a6e..95b4148232 100644 --- a/source3/modules/vfs_time_audit.c +++ b/source3/modules/vfs_time_audit.c @@ -28,18 +28,95 @@ #include "includes.h" #include "smbd/smbd.h" #include "ntioctl.h" +#include "lib/util/tevent_unix.h" #undef DBGC_CLASS #define DBGC_CLASS DBGC_VFS static double audit_timeout; -static void smb_time_audit_log(const char *syscallname, double elapsed) +static void smb_time_audit_log_msg(const char *syscallname, double elapsed, + const char *msg) { - DEBUG(0, ("WARNING: System call \"%s\" took unexpectedly long " - "(%.2f seconds) -- Validate that file and storage " + DEBUG(0, ("WARNING: VFS call \"%s\" took unexpectedly long " + "(%.2f seconds) %s%s-- Validate that file and storage " "subsystems are operating normally\n", syscallname, - elapsed)); + elapsed, (msg != NULL) ? msg : "", + (msg != NULL) ? " " : "")); +} + +static void smb_time_audit_log(const char *syscallname, double elapsed) +{ + smb_time_audit_log_msg(syscallname, elapsed, NULL); +} + +static void smb_time_audit_log_fsp(const char *syscallname, double elapsed, + const struct files_struct *fsp) +{ + char *base_name = NULL; + char *connectpath = NULL; + char *msg = NULL; + + if (fsp == NULL) { + smb_time_audit_log(syscallname, elapsed); + return; + } + if (fsp->conn) + connectpath = fsp->conn->connectpath; + if (fsp->fsp_name) + base_name = fsp->fsp_name->base_name; + + if (connectpath != NULL && base_name != NULL) { + msg = talloc_asprintf(talloc_tos(), "filename = \"%s/%s\"", + connectpath, base_name); + } else if (connectpath != NULL && base_name == NULL) { + msg = talloc_asprintf(talloc_tos(), "connectpath = \"%s\", " + "base_name = <NULL>", + connectpath); + } else if (connectpath == NULL && base_name != NULL) { + msg = talloc_asprintf(talloc_tos(), "connectpath = <NULL>, " + "base_name = \"%s\"", + base_name); + } else { /* connectpath == NULL && base_name == NULL */ + msg = talloc_asprintf(talloc_tos(), "connectpath = <NULL>, " + "base_name = <NULL>"); + } + smb_time_audit_log_msg(syscallname, elapsed, msg); + TALLOC_FREE(msg); +} + +static void smb_time_audit_log_fname(const char *syscallname, double elapsed, + const char *fname) +{ + char cwd[PATH_MAX]; + char *msg = NULL; + + if (getcwd(cwd, sizeof(cwd)) == NULL) { + snprintf(cwd, sizeof(cwd), "<getcwd() error %d>", errno); + } + if (fname != NULL) { + msg = talloc_asprintf(talloc_tos(), + "cwd = \"%s\", filename = \"%s\"", + cwd, fname); + } else { + msg = talloc_asprintf(talloc_tos(), + "cwd = \"%s\", filename = <NULL>", + cwd); + } + smb_time_audit_log_msg(syscallname, elapsed, msg); + TALLOC_FREE(msg); +} + +static void smb_time_audit_log_smb_fname(const char *syscallname, double elapsed, + const struct smb_filename *smb_fname) +{ + if (smb_fname != NULL) { + smb_time_audit_log_fname(syscallname, elapsed, + smb_fname->base_name); + } else { + smb_time_audit_log_fname(syscallname, elapsed, + "smb_fname = <NULL>"); + } } static int smb_time_audit_connect(vfs_handle_struct *handle, @@ -58,7 +135,7 @@ static int smb_time_audit_connect(vfs_handle_struct *handle, clock_gettime_mono(&ts2); timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("connect", timediff); + smb_time_audit_log_msg("connect", timediff, user); } return result; } @@ -76,8 +153,6 @@ static void smb_time_audit_disconnect(vfs_handle_struct *handle) if (timediff > audit_timeout) { smb_time_audit_log("disconnect", timediff); } - - return; } static uint64_t smb_time_audit_disk_free(vfs_handle_struct *handle, @@ -97,7 +172,7 @@ static uint64_t smb_time_audit_disk_free(vfs_handle_struct *handle, /* Don't have a reasonable notion of failure here */ if (timediff > audit_timeout) { - smb_time_audit_log("disk_free", timediff); + smb_time_audit_log_fname("disk_free", timediff, path); } return result; @@ -158,7 +233,7 @@ static int smb_time_audit_get_shadow_copy_data(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("get_shadow_copy_data", timediff); + smb_time_audit_log_fsp("get_shadow_copy_data", timediff, fsp); } return result; @@ -178,7 +253,7 @@ static int smb_time_audit_statvfs(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("statvfs", timediff); + smb_time_audit_log_fname("statvfs", timediff, path); } return result; @@ -203,11 +278,11 @@ static uint32_t smb_time_audit_fs_capabilities(struct vfs_handle_struct *handle, return result; } -static SMB_STRUCT_DIR *smb_time_audit_opendir(vfs_handle_struct *handle, +static DIR *smb_time_audit_opendir(vfs_handle_struct *handle, const char *fname, const char *mask, uint32 attr) { - SMB_STRUCT_DIR *result; + DIR *result; struct timespec ts1,ts2; double timediff; @@ -217,17 +292,17 @@ static SMB_STRUCT_DIR *smb_time_audit_opendir(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("opendir", timediff); + smb_time_audit_log_fname("opendir", timediff, fname); } return result; } -static SMB_STRUCT_DIR *smb_time_audit_fdopendir(vfs_handle_struct *handle, +static DIR *smb_time_audit_fdopendir(vfs_handle_struct *handle, files_struct *fsp, const char *mask, uint32 attr) { - SMB_STRUCT_DIR *result; + DIR *result; struct timespec ts1,ts2; double timediff; @@ -237,17 +312,17 @@ static SMB_STRUCT_DIR *smb_time_audit_fdopendir(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("fdopendir", timediff); + smb_time_audit_log_fsp("fdopendir", timediff, fsp); } return result; } -static SMB_STRUCT_DIRENT *smb_time_audit_readdir(vfs_handle_struct *handle, - SMB_STRUCT_DIR *dirp, +static struct dirent *smb_time_audit_readdir(vfs_handle_struct *handle, + DIR *dirp, SMB_STRUCT_STAT *sbuf) { - SMB_STRUCT_DIRENT *result; + struct dirent *result; struct timespec ts1,ts2; double timediff; @@ -264,7 +339,7 @@ static SMB_STRUCT_DIRENT *smb_time_audit_readdir(vfs_handle_struct *handle, } static void smb_time_audit_seekdir(vfs_handle_struct *handle, - SMB_STRUCT_DIR *dirp, long offset) + DIR *dirp, long offset) { struct timespec ts1,ts2; double timediff; @@ -278,11 +353,10 @@ static void smb_time_audit_seekdir(vfs_handle_struct *handle, smb_time_audit_log("seekdir", timediff); } - return; } static long smb_time_audit_telldir(vfs_handle_struct *handle, - SMB_STRUCT_DIR *dirp) + DIR *dirp) { long result; struct timespec ts1,ts2; @@ -301,7 +375,7 @@ static long smb_time_audit_telldir(vfs_handle_struct *handle, } static void smb_time_audit_rewinddir(vfs_handle_struct *handle, - SMB_STRUCT_DIR *dirp) + DIR *dirp) { struct timespec ts1,ts2; double timediff; @@ -315,7 +389,6 @@ static void smb_time_audit_rewinddir(vfs_handle_struct *handle, smb_time_audit_log("rewinddir", timediff); } - return; } static int smb_time_audit_mkdir(vfs_handle_struct *handle, @@ -331,7 +404,7 @@ static int smb_time_audit_mkdir(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("mkdir", timediff); + smb_time_audit_log_fname("mkdir", timediff, path); } return result; @@ -350,14 +423,14 @@ static int smb_time_audit_rmdir(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("rmdir", timediff); + smb_time_audit_log_fname("rmdir", timediff, path); } return result; } static int smb_time_audit_closedir(vfs_handle_struct *handle, - SMB_STRUCT_DIR *dirp) + DIR *dirp) { int result; struct timespec ts1,ts2; @@ -376,7 +449,7 @@ static int smb_time_audit_closedir(vfs_handle_struct *handle, } static void smb_time_audit_init_search_op(vfs_handle_struct *handle, - SMB_STRUCT_DIR *dirp) + DIR *dirp) { struct timespec ts1,ts2; double timediff; @@ -389,7 +462,6 @@ static void smb_time_audit_init_search_op(vfs_handle_struct *handle, if (timediff > audit_timeout) { smb_time_audit_log("init_search_op", timediff); } - return; } static int smb_time_audit_open(vfs_handle_struct *handle, @@ -407,7 +479,7 @@ static int smb_time_audit_open(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("open", timediff); + smb_time_audit_log_fsp("open", timediff, fsp); } return result; @@ -456,7 +528,12 @@ static NTSTATUS smb_time_audit_create_file(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("create_file", timediff); + /* + * can't use result_fsp this time, may have + * invalid content causing smbd crash + */ + smb_time_audit_log_smb_fname("create_file", timediff, + fname); } return result; @@ -474,7 +551,7 @@ static int smb_time_audit_close(vfs_handle_struct *handle, files_struct *fsp) timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("close", timediff); + smb_time_audit_log_fsp("close", timediff, fsp); } return result; @@ -493,7 +570,7 @@ static ssize_t smb_time_audit_read(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("read", timediff); + smb_time_audit_log_fsp("read", timediff, fsp); } return result; @@ -501,7 +578,7 @@ static ssize_t smb_time_audit_read(vfs_handle_struct *handle, static ssize_t smb_time_audit_pread(vfs_handle_struct *handle, files_struct *fsp, - void *data, size_t n, SMB_OFF_T offset) + void *data, size_t n, off_t offset) { ssize_t result; struct timespec ts1,ts2; @@ -513,12 +590,79 @@ static ssize_t smb_time_audit_pread(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("pread", timediff); + smb_time_audit_log_fsp("pread", timediff, fsp); } return result; } +struct smb_time_audit_pread_state { + struct files_struct *fsp; + struct timespec ts1; + ssize_t ret; + int err; +}; + +static void smb_time_audit_pread_done(struct tevent_req *subreq); + +static struct tevent_req *smb_time_audit_pread_send( + struct vfs_handle_struct *handle, TALLOC_CTX *mem_ctx, + struct tevent_context *ev, struct files_struct *fsp, + void *data, size_t n, off_t offset) +{ + struct tevent_req *req, *subreq; + struct smb_time_audit_pread_state *state; + + req = tevent_req_create(mem_ctx, &state, + struct smb_time_audit_pread_state); + if (req == NULL) { + return NULL; + } + clock_gettime_mono(&state->ts1); + state->fsp = fsp; + + subreq = SMB_VFS_NEXT_PREAD_SEND(state, ev, handle, fsp, data, + n, offset); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, smb_time_audit_pread_done, req); + return req; +} + +static void smb_time_audit_pread_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct smb_time_audit_pread_state *state = tevent_req_data( + req, struct smb_time_audit_pread_state); + + state->ret = SMB_VFS_PREAD_RECV(subreq, &state->err); + TALLOC_FREE(subreq); + tevent_req_done(req); +} + +static ssize_t smb_time_audit_pread_recv(struct tevent_req *req, int *err) +{ + struct smb_time_audit_pread_state *state = tevent_req_data( + req, struct smb_time_audit_pread_state); + struct timespec ts2; + double timediff; + + clock_gettime_mono(&ts2); + timediff = nsec_time_diff(&ts2,&state->ts1)*1.0e-9; + + if (timediff > audit_timeout) { + smb_time_audit_log_fsp("pread", timediff, state->fsp); + } + + if (tevent_req_is_unix_error(req, err)) { + return -1; + } + *err = state->err; + return state->ret; +} + static ssize_t smb_time_audit_write(vfs_handle_struct *handle, files_struct *fsp, const void *data, size_t n) @@ -533,7 +677,7 @@ static ssize_t smb_time_audit_write(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("write", timediff); + smb_time_audit_log_fsp("write", timediff, fsp); } return result; @@ -542,7 +686,7 @@ static ssize_t smb_time_audit_write(vfs_handle_struct *handle, static ssize_t smb_time_audit_pwrite(vfs_handle_struct *handle, files_struct *fsp, const void *data, size_t n, - SMB_OFF_T offset) + off_t offset) { ssize_t result; struct timespec ts1,ts2; @@ -554,17 +698,84 @@ static ssize_t smb_time_audit_pwrite(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("pwrite", timediff); + smb_time_audit_log_fsp("pwrite", timediff, fsp); } return result; } -static SMB_OFF_T smb_time_audit_lseek(vfs_handle_struct *handle, +struct smb_time_audit_pwrite_state { + struct files_struct *fsp; + struct timespec ts1; + ssize_t ret; + int err; +}; + +static void smb_time_audit_pwrite_done(struct tevent_req *subreq); + +static struct tevent_req *smb_time_audit_pwrite_send( + struct vfs_handle_struct *handle, TALLOC_CTX *mem_ctx, + struct tevent_context *ev, struct files_struct *fsp, + const void *data, size_t n, off_t offset) +{ + struct tevent_req *req, *subreq; + struct smb_time_audit_pwrite_state *state; + + req = tevent_req_create(mem_ctx, &state, + struct smb_time_audit_pwrite_state); + if (req == NULL) { + return NULL; + } + clock_gettime_mono(&state->ts1); + state->fsp = fsp; + + subreq = SMB_VFS_NEXT_PWRITE_SEND(state, ev, handle, fsp, data, + n, offset); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, smb_time_audit_pwrite_done, req); + return req; +} + +static void smb_time_audit_pwrite_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct smb_time_audit_pwrite_state *state = tevent_req_data( + req, struct smb_time_audit_pwrite_state); + + state->ret = SMB_VFS_PWRITE_RECV(subreq, &state->err); + TALLOC_FREE(subreq); + tevent_req_done(req); +} + +static ssize_t smb_time_audit_pwrite_recv(struct tevent_req *req, int *err) +{ + struct smb_time_audit_pwrite_state *state = tevent_req_data( + req, struct smb_time_audit_pwrite_state); + struct timespec ts2; + double timediff; + + clock_gettime_mono(&ts2); + timediff = nsec_time_diff(&ts2,&state->ts1)*1.0e-9; + + if (timediff > audit_timeout) { + smb_time_audit_log_fsp("pwrite", timediff, state->fsp); + } + + if (tevent_req_is_unix_error(req, err)) { + return -1; + } + *err = state->err; + return state->ret; +} + +static off_t smb_time_audit_lseek(vfs_handle_struct *handle, files_struct *fsp, - SMB_OFF_T offset, int whence) + off_t offset, int whence) { - SMB_OFF_T result; + off_t result; struct timespec ts1,ts2; double timediff; @@ -574,7 +785,7 @@ static SMB_OFF_T smb_time_audit_lseek(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("lseek", timediff); + smb_time_audit_log_fsp("lseek", timediff, fsp); } return result; @@ -582,7 +793,7 @@ static SMB_OFF_T smb_time_audit_lseek(vfs_handle_struct *handle, static ssize_t smb_time_audit_sendfile(vfs_handle_struct *handle, int tofd, files_struct *fromfsp, - const DATA_BLOB *hdr, SMB_OFF_T offset, + const DATA_BLOB *hdr, off_t offset, size_t n) { ssize_t result; @@ -595,7 +806,7 @@ static ssize_t smb_time_audit_sendfile(vfs_handle_struct *handle, int tofd, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("sendfile", timediff); + smb_time_audit_log_fsp("sendfile", timediff, fromfsp); } return result; @@ -603,7 +814,7 @@ static ssize_t smb_time_audit_sendfile(vfs_handle_struct *handle, int tofd, static ssize_t smb_time_audit_recvfile(vfs_handle_struct *handle, int fromfd, files_struct *tofsp, - SMB_OFF_T offset, + off_t offset, size_t n) { ssize_t result; @@ -616,7 +827,7 @@ static ssize_t smb_time_audit_recvfile(vfs_handle_struct *handle, int fromfd, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("recvfile", timediff); + smb_time_audit_log_fsp("recvfile", timediff, tofsp); } return result; @@ -636,7 +847,7 @@ static int smb_time_audit_rename(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("rename", timediff); + smb_time_audit_log_smb_fname("rename", timediff, newname); } return result; @@ -654,12 +865,77 @@ static int smb_time_audit_fsync(vfs_handle_struct *handle, files_struct *fsp) timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("fsync", timediff); + smb_time_audit_log_fsp("fsync", timediff, fsp); } return result; } +struct smb_time_audit_fsync_state { + struct files_struct *fsp; + struct timespec ts1; + int ret; + int err; +}; + +static void smb_time_audit_fsync_done(struct tevent_req *subreq); + +static struct tevent_req *smb_time_audit_fsync_send( + struct vfs_handle_struct *handle, TALLOC_CTX *mem_ctx, + struct tevent_context *ev, struct files_struct *fsp) +{ + struct tevent_req *req, *subreq; + struct smb_time_audit_fsync_state *state; + + req = tevent_req_create(mem_ctx, &state, + struct smb_time_audit_fsync_state); + if (req == NULL) { + return NULL; + } + clock_gettime_mono(&state->ts1); + state->fsp = fsp; + + subreq = SMB_VFS_NEXT_FSYNC_SEND(state, ev, handle, fsp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, smb_time_audit_fsync_done, req); + return req; +} + +static void smb_time_audit_fsync_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct smb_time_audit_fsync_state *state = tevent_req_data( + req, struct smb_time_audit_fsync_state); + + state->ret = SMB_VFS_FSYNC_RECV(subreq, &state->err); + TALLOC_FREE(subreq); + tevent_req_done(req); +} + +static int smb_time_audit_fsync_recv(struct tevent_req *req, int *err) +{ + struct smb_time_audit_fsync_state *state = tevent_req_data( + req, struct smb_time_audit_fsync_state); + struct timespec ts2; + double timediff; + + clock_gettime_mono(&ts2); + timediff = nsec_time_diff(&ts2,&state->ts1)*1.0e-9; + + if (timediff > audit_timeout) { + smb_time_audit_log_fsp("fsync", timediff, state->fsp); + } + + if (tevent_req_is_unix_error(req, err)) { + return -1; + } + *err = state->err; + return state->ret; +} + static int smb_time_audit_stat(vfs_handle_struct *handle, struct smb_filename *fname) { @@ -673,7 +949,7 @@ static int smb_time_audit_stat(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("stat", timediff); + smb_time_audit_log_smb_fname("stat", timediff, fname); } return result; @@ -692,7 +968,7 @@ static int smb_time_audit_fstat(vfs_handle_struct *handle, files_struct *fsp, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("fstat", timediff); + smb_time_audit_log_fsp("fstat", timediff, fsp); } return result; @@ -711,7 +987,7 @@ static int smb_time_audit_lstat(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("lstat", timediff); + smb_time_audit_log_smb_fname("lstat", timediff, path); } return result; @@ -731,7 +1007,7 @@ static uint64_t smb_time_audit_get_alloc_size(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("get_alloc_size", timediff); + smb_time_audit_log_fsp("get_alloc_size", timediff, fsp); } return result; @@ -750,7 +1026,7 @@ static int smb_time_audit_unlink(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("unlink", timediff); + smb_time_audit_log_smb_fname("unlink", timediff, path); } return result; @@ -769,7 +1045,7 @@ static int smb_time_audit_chmod(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("chmod", timediff); + smb_time_audit_log_fname("chmod", timediff, path); } return result; @@ -788,7 +1064,7 @@ static int smb_time_audit_fchmod(vfs_handle_struct *handle, files_struct *fsp, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("fchmod", timediff); + smb_time_audit_log_fsp("fchmod", timediff, fsp); } return result; @@ -807,7 +1083,7 @@ static int smb_time_audit_chown(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("chown", timediff); + smb_time_audit_log_fname("chown", timediff, path); } return result; @@ -826,7 +1102,7 @@ static int smb_time_audit_fchown(vfs_handle_struct *handle, files_struct *fsp, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("fchown", timediff); + smb_time_audit_log_fsp("fchown", timediff, fsp); } return result; @@ -845,7 +1121,7 @@ static int smb_time_audit_lchown(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("lchown", timediff); + smb_time_audit_log_fname("lchown", timediff, path); } return result; @@ -863,20 +1139,20 @@ static int smb_time_audit_chdir(vfs_handle_struct *handle, const char *path) timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("chdir", timediff); + smb_time_audit_log_fname("chdir", timediff, path); } return result; } -static char *smb_time_audit_getwd(vfs_handle_struct *handle, char *path) +static char *smb_time_audit_getwd(vfs_handle_struct *handle) { char *result; struct timespec ts1,ts2; double timediff; clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_GETWD(handle, path); + result = SMB_VFS_NEXT_GETWD(handle); clock_gettime_mono(&ts2); timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; @@ -901,7 +1177,7 @@ static int smb_time_audit_ntimes(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("ntimes", timediff); + smb_time_audit_log_smb_fname("ntimes", timediff, path); } return result; @@ -909,7 +1185,7 @@ static int smb_time_audit_ntimes(vfs_handle_struct *handle, static int smb_time_audit_ftruncate(vfs_handle_struct *handle, files_struct *fsp, - SMB_OFF_T len) + off_t len) { int result; struct timespec ts1,ts2; @@ -921,7 +1197,7 @@ static int smb_time_audit_ftruncate(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("ftruncate", timediff); + smb_time_audit_log_fsp("ftruncate", timediff, fsp); } return result; @@ -930,8 +1206,8 @@ static int smb_time_audit_ftruncate(vfs_handle_struct *handle, static int smb_time_audit_fallocate(vfs_handle_struct *handle, files_struct *fsp, enum vfs_fallocate_mode mode, - SMB_OFF_T offset, - SMB_OFF_T len) + off_t offset, + off_t len) { int result; struct timespec ts1,ts2; @@ -943,14 +1219,14 @@ static int smb_time_audit_fallocate(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("fallocate", timediff); + smb_time_audit_log_fsp("fallocate", timediff, fsp); } return result; } static bool smb_time_audit_lock(vfs_handle_struct *handle, files_struct *fsp, - int op, SMB_OFF_T offset, SMB_OFF_T count, + int op, off_t offset, off_t count, int type) { bool result; @@ -963,7 +1239,7 @@ static bool smb_time_audit_lock(vfs_handle_struct *handle, files_struct *fsp, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("lock", timediff); + smb_time_audit_log_fsp("lock", timediff, fsp); } return result; @@ -984,7 +1260,7 @@ static int smb_time_audit_kernel_flock(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("kernel_flock", timediff); + smb_time_audit_log_fsp("kernel_flock", timediff, fsp); } return result; @@ -1004,7 +1280,7 @@ static int smb_time_audit_linux_setlease(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("linux_setlease", timediff); + smb_time_audit_log_fsp("linux_setlease", timediff, fsp); } return result; @@ -1012,7 +1288,7 @@ static int smb_time_audit_linux_setlease(vfs_handle_struct *handle, static bool smb_time_audit_getlock(vfs_handle_struct *handle, files_struct *fsp, - SMB_OFF_T *poffset, SMB_OFF_T *pcount, + off_t *poffset, off_t *pcount, int *ptype, pid_t *ppid) { bool result; @@ -1026,7 +1302,7 @@ static bool smb_time_audit_getlock(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("getlock", timediff); + smb_time_audit_log_fsp("getlock", timediff, fsp); } return result; @@ -1045,7 +1321,7 @@ static int smb_time_audit_symlink(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("symlink", timediff); + smb_time_audit_log_fname("symlink", timediff, newpath); } return result; @@ -1064,7 +1340,7 @@ static int smb_time_audit_readlink(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("readlink", timediff); + smb_time_audit_log_fname("readlink", timediff, path); } return result; @@ -1083,7 +1359,7 @@ static int smb_time_audit_link(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("link", timediff); + smb_time_audit_log_fname("link", timediff, newpath); } return result; @@ -1103,7 +1379,7 @@ static int smb_time_audit_mknod(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("mknod", timediff); + smb_time_audit_log_fname("mknod", timediff, pathname); } return result; @@ -1122,7 +1398,7 @@ static char *smb_time_audit_realpath(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("realpath", timediff); + smb_time_audit_log_fname("realpath", timediff, path); } return result; @@ -1130,7 +1406,9 @@ static char *smb_time_audit_realpath(vfs_handle_struct *handle, static NTSTATUS smb_time_audit_notify_watch(struct vfs_handle_struct *handle, struct sys_notify_context *ctx, - struct notify_entry *e, + const char *path, + uint32_t *filter, + uint32_t *subdir_filter, void (*callback)(struct sys_notify_context *ctx, void *private_data, struct notify_event *ev), @@ -1141,13 +1419,14 @@ static NTSTATUS smb_time_audit_notify_watch(struct vfs_handle_struct *handle, double timediff; clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_NOTIFY_WATCH(handle, ctx, e, callback, + result = SMB_VFS_NEXT_NOTIFY_WATCH(handle, ctx, path, + filter, subdir_filter, callback, private_data, handle_p); clock_gettime_mono(&ts2); timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("notify_watch", timediff); + smb_time_audit_log_fname("notify_watch", timediff, path); } return result; @@ -1166,7 +1445,7 @@ static int smb_time_audit_chflags(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("chflags", timediff); + smb_time_audit_log_fname("chflags", timediff, path); } return result; @@ -1212,7 +1491,7 @@ static NTSTATUS smb_time_audit_streaminfo(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("streaminfo", timediff); + smb_time_audit_log_fsp("streaminfo", timediff, fsp); } return result; @@ -1235,7 +1514,7 @@ static int smb_time_audit_get_real_filename(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("get_real_filename", timediff); + smb_time_audit_log_fname("get_real_filename", timediff, path); } return result; @@ -1254,7 +1533,7 @@ static const char *smb_time_audit_connectpath(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("connectpath", timediff); + smb_time_audit_log_fname("connectpath", timediff, fname); } return result; @@ -1277,7 +1556,8 @@ static NTSTATUS smb_time_audit_brl_lock_windows(struct vfs_handle_struct *handle timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("brl_lock_windows", timediff); + smb_time_audit_log_fsp("brl_lock_windows", timediff, + br_lck->fsp); } return result; @@ -1299,7 +1579,8 @@ static bool smb_time_audit_brl_unlock_windows(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("brl_unlock_windows", timediff); + smb_time_audit_log_fsp("brl_unlock_windows", timediff, + br_lck->fsp); } return result; @@ -1320,7 +1601,8 @@ static bool smb_time_audit_brl_cancel_windows(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("brl_cancel_windows", timediff); + smb_time_audit_log_fsp("brl_cancel_windows", timediff, + br_lck->fsp); } return result; @@ -1340,7 +1622,7 @@ static bool smb_time_audit_strict_lock(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("strict_lock", timediff); + smb_time_audit_log_fsp("strict_lock", timediff, fsp); } return result; @@ -1359,10 +1641,8 @@ static void smb_time_audit_strict_unlock(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("strict_unlock", timediff); + smb_time_audit_log_fsp("strict_unlock", timediff, fsp); } - - return; } static NTSTATUS smb_time_audit_translate_name(struct vfs_handle_struct *handle, @@ -1382,7 +1662,7 @@ static NTSTATUS smb_time_audit_translate_name(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("translate_name", timediff); + smb_time_audit_log_fname("translate_name", timediff, name); } return result; @@ -1391,6 +1671,7 @@ static NTSTATUS smb_time_audit_translate_name(struct vfs_handle_struct *handle, static NTSTATUS smb_time_audit_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp, uint32 security_info, + TALLOC_CTX *mem_ctx, struct security_descriptor **ppdesc) { NTSTATUS result; @@ -1398,12 +1679,13 @@ static NTSTATUS smb_time_audit_fget_nt_acl(vfs_handle_struct *handle, double timediff; clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_FGET_NT_ACL(handle, fsp, security_info, ppdesc); + result = SMB_VFS_NEXT_FGET_NT_ACL(handle, fsp, security_info, + mem_ctx, ppdesc); clock_gettime_mono(&ts2); timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("fget_nt_acl", timediff); + smb_time_audit_log_fsp("fget_nt_acl", timediff, fsp); } return result; @@ -1412,6 +1694,7 @@ static NTSTATUS smb_time_audit_fget_nt_acl(vfs_handle_struct *handle, static NTSTATUS smb_time_audit_get_nt_acl(vfs_handle_struct *handle, const char *name, uint32 security_info, + TALLOC_CTX *mem_ctx, struct security_descriptor **ppdesc) { NTSTATUS result; @@ -1419,12 +1702,13 @@ static NTSTATUS smb_time_audit_get_nt_acl(vfs_handle_struct *handle, double timediff; clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_GET_NT_ACL(handle, name, security_info, ppdesc); + result = SMB_VFS_NEXT_GET_NT_ACL(handle, name, security_info, + mem_ctx, ppdesc); clock_gettime_mono(&ts2); timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("get_nt_acl", timediff); + smb_time_audit_log_fname("get_nt_acl", timediff, name); } return result; @@ -1446,7 +1730,7 @@ static NTSTATUS smb_time_audit_fset_nt_acl(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("fset_nt_acl", timediff); + smb_time_audit_log_fsp("fset_nt_acl", timediff, fsp); } return result; @@ -1465,7 +1749,7 @@ static int smb_time_audit_chmod_acl(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("chmod_acl", timediff); + smb_time_audit_log_fname("chmod_acl", timediff, path); } return result; @@ -1484,89 +1768,7 @@ static int smb_time_audit_fchmod_acl(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("fchmod_acl", timediff); - } - - return result; -} - -static int smb_time_audit_sys_acl_get_entry(vfs_handle_struct *handle, - SMB_ACL_T theacl, int entry_id, - SMB_ACL_ENTRY_T *entry_p) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_GET_ENTRY(handle, theacl, entry_id, - entry_p); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_get_entry", timediff); - } - - return result; -} - -static int smb_time_audit_sys_acl_get_tag_type(vfs_handle_struct *handle, - SMB_ACL_ENTRY_T entry_d, - SMB_ACL_TAG_T *tag_type_p) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_GET_TAG_TYPE(handle, entry_d, - tag_type_p); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_get_tag_type", timediff); - } - - return result; -} - -static int smb_time_audit_sys_acl_get_permset(vfs_handle_struct *handle, - SMB_ACL_ENTRY_T entry_d, - SMB_ACL_PERMSET_T *permset_p) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_GET_PERMSET(handle, entry_d, - permset_p); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_get_permset", timediff); - } - - return result; -} - -static void * smb_time_audit_sys_acl_get_qualifier(vfs_handle_struct *handle, - SMB_ACL_ENTRY_T entry_d) -{ - void *result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_GET_QUALIFIER(handle, entry_d); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_get_qualifier", timediff); + smb_time_audit_log_fsp("fchmod_acl", timediff, fsp); } return result; @@ -1574,216 +1776,85 @@ static void * smb_time_audit_sys_acl_get_qualifier(vfs_handle_struct *handle, static SMB_ACL_T smb_time_audit_sys_acl_get_file(vfs_handle_struct *handle, const char *path_p, - SMB_ACL_TYPE_T type) + SMB_ACL_TYPE_T type, + TALLOC_CTX *mem_ctx) { SMB_ACL_T result; struct timespec ts1,ts2; double timediff; clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_GET_FILE(handle, path_p, type); + result = SMB_VFS_NEXT_SYS_ACL_GET_FILE(handle, path_p, type, mem_ctx); clock_gettime_mono(&ts2); timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_get_file", timediff); + smb_time_audit_log_fname("sys_acl_get_file", timediff, path_p); } return result; } static SMB_ACL_T smb_time_audit_sys_acl_get_fd(vfs_handle_struct *handle, - files_struct *fsp) + files_struct *fsp, + TALLOC_CTX *mem_ctx) { SMB_ACL_T result; struct timespec ts1,ts2; double timediff; clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_GET_FD(handle, fsp); + result = SMB_VFS_NEXT_SYS_ACL_GET_FD(handle, fsp, mem_ctx); clock_gettime_mono(&ts2); timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_get_fd", timediff); + smb_time_audit_log_fsp("sys_acl_get_fd", timediff, fsp); } return result; } -static int smb_time_audit_sys_acl_clear_perms(vfs_handle_struct *handle, - SMB_ACL_PERMSET_T permset) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_CLEAR_PERMS(handle, permset); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_clear_perms", timediff); - } - - return result; -} - -static int smb_time_audit_sys_acl_add_perm(vfs_handle_struct *handle, - SMB_ACL_PERMSET_T permset, - SMB_ACL_PERM_T perm) +static int smb_time_audit_sys_acl_blob_get_file(vfs_handle_struct *handle, + const char *path_p, + TALLOC_CTX *mem_ctx, + char **blob_description, + DATA_BLOB *blob) { int result; struct timespec ts1,ts2; double timediff; clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_ADD_PERM(handle, permset, perm); + result = SMB_VFS_NEXT_SYS_ACL_BLOB_GET_FILE(handle, path_p, mem_ctx, blob_description, blob); clock_gettime_mono(&ts2); timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_add_perm", timediff); + smb_time_audit_log("sys_acl_blob_get_file", timediff); } return result; } -static char * smb_time_audit_sys_acl_to_text(vfs_handle_struct *handle, - SMB_ACL_T theacl, - ssize_t *plen) -{ - char * result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_TO_TEXT(handle, theacl, plen); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_to_text", timediff); - } - - return result; -} - -static SMB_ACL_T smb_time_audit_sys_acl_init(vfs_handle_struct *handle, - int count) -{ - SMB_ACL_T result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_INIT(handle, count); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_init", timediff); - } - - return result; -} - -static int smb_time_audit_sys_acl_create_entry(vfs_handle_struct *handle, - SMB_ACL_T *pacl, - SMB_ACL_ENTRY_T *pentry) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_CREATE_ENTRY(handle, pacl, pentry); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_create_entry", timediff); - } - - return result; -} - -static int smb_time_audit_sys_acl_set_tag_type(vfs_handle_struct *handle, - SMB_ACL_ENTRY_T entry, - SMB_ACL_TAG_T tagtype) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_SET_TAG_TYPE(handle, entry, - tagtype); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_set_tag_type", timediff); - } - - return result; -} - -static int smb_time_audit_sys_acl_set_qualifier(vfs_handle_struct *handle, - SMB_ACL_ENTRY_T entry, - void *qual) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_SET_QUALIFIER(handle, entry, qual); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_set_qualifier", timediff); - } - - return result; -} - -static int smb_time_audit_sys_acl_set_permset(vfs_handle_struct *handle, - SMB_ACL_ENTRY_T entry, - SMB_ACL_PERMSET_T permset) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_SET_PERMSET(handle, entry, permset); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_set_permset", timediff); - } - - return result; -} - -static int smb_time_audit_sys_acl_valid(vfs_handle_struct *handle, - SMB_ACL_T theacl) +static int smb_time_audit_sys_acl_blob_get_fd(vfs_handle_struct *handle, + files_struct *fsp, + TALLOC_CTX *mem_ctx, + char **blob_description, + DATA_BLOB *blob) { int result; struct timespec ts1,ts2; double timediff; clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_VALID(handle, theacl); + result = SMB_VFS_NEXT_SYS_ACL_BLOB_GET_FD(handle, fsp, mem_ctx, blob_description, blob); clock_gettime_mono(&ts2); timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_valid", timediff); + smb_time_audit_log("sys_acl_blob_get_fd", timediff); } return result; @@ -1805,7 +1876,7 @@ static int smb_time_audit_sys_acl_set_file(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_set_file", timediff); + smb_time_audit_log_fname("sys_acl_set_file", timediff, name); } return result; @@ -1825,7 +1896,7 @@ static int smb_time_audit_sys_acl_set_fd(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_set_fd", timediff); + smb_time_audit_log_fsp("sys_acl_set_fd", timediff, fsp); } return result; @@ -1844,86 +1915,7 @@ static int smb_time_audit_sys_acl_delete_def_file(vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_delete_def_file", timediff); - } - - return result; -} - -static int smb_time_audit_sys_acl_get_perm(vfs_handle_struct *handle, - SMB_ACL_PERMSET_T permset, - SMB_ACL_PERM_T perm) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_GET_PERM(handle, permset, perm); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_get_perm", timediff); - } - - return result; -} - -static int smb_time_audit_sys_acl_free_text(vfs_handle_struct *handle, - char *text) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_FREE_TEXT(handle, text); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_free_text", timediff); - } - - return result; -} - -static int smb_time_audit_sys_acl_free_acl(vfs_handle_struct *handle, - SMB_ACL_T posix_acl) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_FREE_ACL(handle, posix_acl); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_free_acl", timediff); - } - - return result; -} - -static int smb_time_audit_sys_acl_free_qualifier(vfs_handle_struct *handle, - void *qualifier, - SMB_ACL_TAG_T tagtype) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_SYS_ACL_FREE_QUALIFIER(handle, qualifier, - tagtype); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("sys_acl_free_qualifier", timediff); + smb_time_audit_log_fname("sys_acl_delete_def_file", timediff, path); } return result; @@ -1943,27 +1935,7 @@ static ssize_t smb_time_audit_getxattr(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("getxattr", timediff); - } - - return result; -} - -static ssize_t smb_time_audit_lgetxattr(struct vfs_handle_struct *handle, - const char *path, const char *name, - void *value, size_t size) -{ - ssize_t result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_LGETXATTR(handle, path, name, value, size); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("lgetxattr", timediff); + smb_time_audit_log_fname("getxattr", timediff, path); } return result; @@ -1984,7 +1956,7 @@ static ssize_t smb_time_audit_fgetxattr(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("fgetxattr", timediff); + smb_time_audit_log_fsp("fgetxattr", timediff, fsp); } return result; @@ -2004,27 +1976,7 @@ static ssize_t smb_time_audit_listxattr(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("listxattr", timediff); - } - - return result; -} - -static ssize_t smb_time_audit_llistxattr(struct vfs_handle_struct *handle, - const char *path, char *list, - size_t size) -{ - ssize_t result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_LLISTXATTR(handle, path, list, size); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("llistxattr", timediff); + smb_time_audit_log_fname("listxattr", timediff, path); } return result; @@ -2044,7 +1996,7 @@ static ssize_t smb_time_audit_flistxattr(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("flistxattr", timediff); + smb_time_audit_log_fsp("flistxattr", timediff, fsp); } return result; @@ -2063,26 +2015,7 @@ static int smb_time_audit_removexattr(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("removexattr", timediff); - } - - return result; -} - -static int smb_time_audit_lremovexattr(struct vfs_handle_struct *handle, - const char *path, const char *name) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_LREMOVEXATTR(handle, path, name); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("lremovexattr", timediff); + smb_time_audit_log_fname("removexattr", timediff, path); } return result; @@ -2102,7 +2035,7 @@ static int smb_time_audit_fremovexattr(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("fremovexattr", timediff); + smb_time_audit_log_fsp("fremovexattr", timediff, fsp); } return result; @@ -2124,29 +2057,7 @@ static int smb_time_audit_setxattr(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("setxattr", timediff); - } - - return result; -} - -static int smb_time_audit_lsetxattr(struct vfs_handle_struct *handle, - const char *path, const char *name, - const void *value, size_t size, - int flags) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_LSETXATTR(handle, path, name, value, size, - flags); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("lsetxattr", timediff); + smb_time_audit_log_fname("setxattr", timediff, path); } return result; @@ -2166,148 +2077,7 @@ static int smb_time_audit_fsetxattr(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("fsetxattr", timediff); - } - - return result; -} - -static int smb_time_audit_aio_read(struct vfs_handle_struct *handle, - struct files_struct *fsp, - SMB_STRUCT_AIOCB *aiocb) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_AIO_READ(handle, fsp, aiocb); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("aio_read", timediff); - } - - return result; -} - -static int smb_time_audit_aio_write(struct vfs_handle_struct *handle, - struct files_struct *fsp, - SMB_STRUCT_AIOCB *aiocb) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_AIO_WRITE(handle, fsp, aiocb); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("aio_write", timediff); - } - - return result; -} - -static ssize_t smb_time_audit_aio_return(struct vfs_handle_struct *handle, - struct files_struct *fsp, - SMB_STRUCT_AIOCB *aiocb) -{ - ssize_t result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_AIO_RETURN(handle, fsp, aiocb); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("aio_return", timediff); - } - - return result; -} - -static int smb_time_audit_aio_cancel(struct vfs_handle_struct *handle, - struct files_struct *fsp, - SMB_STRUCT_AIOCB *aiocb) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_AIO_CANCEL(handle, fsp, aiocb); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("aio_cancel", timediff); - } - - return result; -} - -static int smb_time_audit_aio_error(struct vfs_handle_struct *handle, - struct files_struct *fsp, - SMB_STRUCT_AIOCB *aiocb) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_AIO_ERROR(handle, fsp, aiocb); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("aio_error", timediff); - } - - return result; -} - -static int smb_time_audit_aio_fsync(struct vfs_handle_struct *handle, - struct files_struct *fsp, int op, - SMB_STRUCT_AIOCB *aiocb) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_AIO_FSYNC(handle, fsp, op, aiocb); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("aio_fsync", timediff); - } - - return result; -} - -static int smb_time_audit_aio_suspend(struct vfs_handle_struct *handle, - struct files_struct *fsp, - const SMB_STRUCT_AIOCB * const aiocb[], - int n, const struct timespec *ts) -{ - int result; - struct timespec ts1,ts2; - double timediff; - - clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_AIO_SUSPEND(handle, fsp, aiocb, n, ts); - clock_gettime_mono(&ts2); - timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; - - if (timediff > audit_timeout) { - smb_time_audit_log("aio_suspend", timediff); + smb_time_audit_log_fsp("fsetxattr", timediff, fsp); } return result; @@ -2326,7 +2096,7 @@ static bool smb_time_audit_aio_force(struct vfs_handle_struct *handle, timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; if (timediff > audit_timeout) { - smb_time_audit_log("aio_force", timediff); + smb_time_audit_log_fsp("aio_force", timediff, fsp); } return result; @@ -2338,118 +2108,98 @@ static bool smb_time_audit_aio_force(struct vfs_handle_struct *handle, static struct vfs_fn_pointers vfs_time_audit_fns = { .connect_fn = smb_time_audit_connect, - .disconnect = smb_time_audit_disconnect, - .disk_free = smb_time_audit_disk_free, - .get_quota = smb_time_audit_get_quota, - .set_quota = smb_time_audit_set_quota, - .get_shadow_copy_data = smb_time_audit_get_shadow_copy_data, - .statvfs = smb_time_audit_statvfs, - .fs_capabilities = smb_time_audit_fs_capabilities, - .opendir = smb_time_audit_opendir, - .fdopendir = smb_time_audit_fdopendir, - .readdir = smb_time_audit_readdir, - .seekdir = smb_time_audit_seekdir, - .telldir = smb_time_audit_telldir, - .rewind_dir = smb_time_audit_rewinddir, - .mkdir = smb_time_audit_mkdir, - .rmdir = smb_time_audit_rmdir, - .closedir = smb_time_audit_closedir, - .init_search_op = smb_time_audit_init_search_op, + .disconnect_fn = smb_time_audit_disconnect, + .disk_free_fn = smb_time_audit_disk_free, + .get_quota_fn = smb_time_audit_get_quota, + .set_quota_fn = smb_time_audit_set_quota, + .get_shadow_copy_data_fn = smb_time_audit_get_shadow_copy_data, + .statvfs_fn = smb_time_audit_statvfs, + .fs_capabilities_fn = smb_time_audit_fs_capabilities, + .opendir_fn = smb_time_audit_opendir, + .fdopendir_fn = smb_time_audit_fdopendir, + .readdir_fn = smb_time_audit_readdir, + .seekdir_fn = smb_time_audit_seekdir, + .telldir_fn = smb_time_audit_telldir, + .rewind_dir_fn = smb_time_audit_rewinddir, + .mkdir_fn = smb_time_audit_mkdir, + .rmdir_fn = smb_time_audit_rmdir, + .closedir_fn = smb_time_audit_closedir, + .init_search_op_fn = smb_time_audit_init_search_op, .open_fn = smb_time_audit_open, - .create_file = smb_time_audit_create_file, + .create_file_fn = smb_time_audit_create_file, .close_fn = smb_time_audit_close, - .vfs_read = smb_time_audit_read, - .pread = smb_time_audit_pread, - .write = smb_time_audit_write, - .pwrite = smb_time_audit_pwrite, - .lseek = smb_time_audit_lseek, - .sendfile = smb_time_audit_sendfile, - .recvfile = smb_time_audit_recvfile, - .rename = smb_time_audit_rename, - .fsync = smb_time_audit_fsync, - .stat = smb_time_audit_stat, - .fstat = smb_time_audit_fstat, - .lstat = smb_time_audit_lstat, - .get_alloc_size = smb_time_audit_get_alloc_size, - .unlink = smb_time_audit_unlink, - .chmod = smb_time_audit_chmod, - .fchmod = smb_time_audit_fchmod, - .chown = smb_time_audit_chown, - .fchown = smb_time_audit_fchown, - .lchown = smb_time_audit_lchown, - .chdir = smb_time_audit_chdir, - .getwd = smb_time_audit_getwd, - .ntimes = smb_time_audit_ntimes, - .ftruncate = smb_time_audit_ftruncate, - .fallocate = smb_time_audit_fallocate, - .lock = smb_time_audit_lock, - .kernel_flock = smb_time_audit_kernel_flock, - .linux_setlease = smb_time_audit_linux_setlease, - .getlock = smb_time_audit_getlock, - .symlink = smb_time_audit_symlink, - .vfs_readlink = smb_time_audit_readlink, - .link = smb_time_audit_link, - .mknod = smb_time_audit_mknod, - .realpath = smb_time_audit_realpath, - .notify_watch = smb_time_audit_notify_watch, - .chflags = smb_time_audit_chflags, - .file_id_create = smb_time_audit_file_id_create, - .streaminfo = smb_time_audit_streaminfo, - .get_real_filename = smb_time_audit_get_real_filename, - .connectpath = smb_time_audit_connectpath, - .brl_lock_windows = smb_time_audit_brl_lock_windows, - .brl_unlock_windows = smb_time_audit_brl_unlock_windows, - .brl_cancel_windows = smb_time_audit_brl_cancel_windows, - .strict_lock = smb_time_audit_strict_lock, - .strict_unlock = smb_time_audit_strict_unlock, - .translate_name = smb_time_audit_translate_name, - .fget_nt_acl = smb_time_audit_fget_nt_acl, - .get_nt_acl = smb_time_audit_get_nt_acl, - .fset_nt_acl = smb_time_audit_fset_nt_acl, - .chmod_acl = smb_time_audit_chmod_acl, - .fchmod_acl = smb_time_audit_fchmod_acl, - .sys_acl_get_entry = smb_time_audit_sys_acl_get_entry, - .sys_acl_get_tag_type = smb_time_audit_sys_acl_get_tag_type, - .sys_acl_get_permset = smb_time_audit_sys_acl_get_permset, - .sys_acl_get_qualifier = smb_time_audit_sys_acl_get_qualifier, - .sys_acl_get_file = smb_time_audit_sys_acl_get_file, - .sys_acl_get_fd = smb_time_audit_sys_acl_get_fd, - .sys_acl_clear_perms = smb_time_audit_sys_acl_clear_perms, - .sys_acl_add_perm = smb_time_audit_sys_acl_add_perm, - .sys_acl_to_text = smb_time_audit_sys_acl_to_text, - .sys_acl_init = smb_time_audit_sys_acl_init, - .sys_acl_create_entry = smb_time_audit_sys_acl_create_entry, - .sys_acl_set_tag_type = smb_time_audit_sys_acl_set_tag_type, - .sys_acl_set_qualifier = smb_time_audit_sys_acl_set_qualifier, - .sys_acl_set_permset = smb_time_audit_sys_acl_set_permset, - .sys_acl_valid = smb_time_audit_sys_acl_valid, - .sys_acl_set_file = smb_time_audit_sys_acl_set_file, - .sys_acl_set_fd = smb_time_audit_sys_acl_set_fd, - .sys_acl_delete_def_file = smb_time_audit_sys_acl_delete_def_file, - .sys_acl_get_perm = smb_time_audit_sys_acl_get_perm, - .sys_acl_free_text = smb_time_audit_sys_acl_free_text, - .sys_acl_free_acl = smb_time_audit_sys_acl_free_acl, - .sys_acl_free_qualifier = smb_time_audit_sys_acl_free_qualifier, - .getxattr = smb_time_audit_getxattr, - .lgetxattr = smb_time_audit_lgetxattr, - .fgetxattr = smb_time_audit_fgetxattr, - .listxattr = smb_time_audit_listxattr, - .llistxattr = smb_time_audit_llistxattr, - .flistxattr = smb_time_audit_flistxattr, - .removexattr = smb_time_audit_removexattr, - .lremovexattr = smb_time_audit_lremovexattr, - .fremovexattr = smb_time_audit_fremovexattr, - .setxattr = smb_time_audit_setxattr, - .lsetxattr = smb_time_audit_lsetxattr, - .fsetxattr = smb_time_audit_fsetxattr, - .aio_read = smb_time_audit_aio_read, - .aio_write = smb_time_audit_aio_write, - .aio_return_fn = smb_time_audit_aio_return, - .aio_cancel = smb_time_audit_aio_cancel, - .aio_error_fn = smb_time_audit_aio_error, - .aio_fsync = smb_time_audit_aio_fsync, - .aio_suspend = smb_time_audit_aio_suspend, - .aio_force = smb_time_audit_aio_force, + .read_fn = smb_time_audit_read, + .pread_fn = smb_time_audit_pread, + .pread_send_fn = smb_time_audit_pread_send, + .pread_recv_fn = smb_time_audit_pread_recv, + .write_fn = smb_time_audit_write, + .pwrite_fn = smb_time_audit_pwrite, + .pwrite_send_fn = smb_time_audit_pwrite_send, + .pwrite_recv_fn = smb_time_audit_pwrite_recv, + .lseek_fn = smb_time_audit_lseek, + .sendfile_fn = smb_time_audit_sendfile, + .recvfile_fn = smb_time_audit_recvfile, + .rename_fn = smb_time_audit_rename, + .fsync_fn = smb_time_audit_fsync, + .fsync_send_fn = smb_time_audit_fsync_send, + .fsync_recv_fn = smb_time_audit_fsync_recv, + .stat_fn = smb_time_audit_stat, + .fstat_fn = smb_time_audit_fstat, + .lstat_fn = smb_time_audit_lstat, + .get_alloc_size_fn = smb_time_audit_get_alloc_size, + .unlink_fn = smb_time_audit_unlink, + .chmod_fn = smb_time_audit_chmod, + .fchmod_fn = smb_time_audit_fchmod, + .chown_fn = smb_time_audit_chown, + .fchown_fn = smb_time_audit_fchown, + .lchown_fn = smb_time_audit_lchown, + .chdir_fn = smb_time_audit_chdir, + .getwd_fn = smb_time_audit_getwd, + .ntimes_fn = smb_time_audit_ntimes, + .ftruncate_fn = smb_time_audit_ftruncate, + .fallocate_fn = smb_time_audit_fallocate, + .lock_fn = smb_time_audit_lock, + .kernel_flock_fn = smb_time_audit_kernel_flock, + .linux_setlease_fn = smb_time_audit_linux_setlease, + .getlock_fn = smb_time_audit_getlock, + .symlink_fn = smb_time_audit_symlink, + .readlink_fn = smb_time_audit_readlink, + .link_fn = smb_time_audit_link, + .mknod_fn = smb_time_audit_mknod, + .realpath_fn = smb_time_audit_realpath, + .notify_watch_fn = smb_time_audit_notify_watch, + .chflags_fn = smb_time_audit_chflags, + .file_id_create_fn = smb_time_audit_file_id_create, + .streaminfo_fn = smb_time_audit_streaminfo, + .get_real_filename_fn = smb_time_audit_get_real_filename, + .connectpath_fn = smb_time_audit_connectpath, + .brl_lock_windows_fn = smb_time_audit_brl_lock_windows, + .brl_unlock_windows_fn = smb_time_audit_brl_unlock_windows, + .brl_cancel_windows_fn = smb_time_audit_brl_cancel_windows, + .strict_lock_fn = smb_time_audit_strict_lock, + .strict_unlock_fn = smb_time_audit_strict_unlock, + .translate_name_fn = smb_time_audit_translate_name, + .fget_nt_acl_fn = smb_time_audit_fget_nt_acl, + .get_nt_acl_fn = smb_time_audit_get_nt_acl, + .fset_nt_acl_fn = smb_time_audit_fset_nt_acl, + .chmod_acl_fn = smb_time_audit_chmod_acl, + .fchmod_acl_fn = smb_time_audit_fchmod_acl, + .sys_acl_get_file_fn = smb_time_audit_sys_acl_get_file, + .sys_acl_get_fd_fn = smb_time_audit_sys_acl_get_fd, + .sys_acl_blob_get_file_fn = smb_time_audit_sys_acl_blob_get_file, + .sys_acl_blob_get_fd_fn = smb_time_audit_sys_acl_blob_get_fd, + .sys_acl_set_file_fn = smb_time_audit_sys_acl_set_file, + .sys_acl_set_fd_fn = smb_time_audit_sys_acl_set_fd, + .sys_acl_delete_def_file_fn = smb_time_audit_sys_acl_delete_def_file, + .getxattr_fn = smb_time_audit_getxattr, + .fgetxattr_fn = smb_time_audit_fgetxattr, + .listxattr_fn = smb_time_audit_listxattr, + .flistxattr_fn = smb_time_audit_flistxattr, + .removexattr_fn = smb_time_audit_removexattr, + .fremovexattr_fn = smb_time_audit_fremovexattr, + .setxattr_fn = smb_time_audit_setxattr, + .fsetxattr_fn = smb_time_audit_fsetxattr, + .aio_force_fn = smb_time_audit_aio_force, }; |