return NULL;
}
-static int skel_chflags(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname,
- uint flags)
-{
- errno = ENOSYS;
- return -1;
-}
-
static int skel_fchflags(vfs_handle_struct *handle,
struct files_struct *fsp,
uint flags)
.linkat_fn = skel_linkat,
.mknodat_fn = skel_mknodat,
.realpath_fn = skel_realpath,
- .chflags_fn = skel_chflags,
.fchflags_fn = skel_fchflags,
.file_id_create_fn = skel_file_id_create,
.fs_file_id_fn = skel_fs_file_id,
return SMB_VFS_NEXT_REALPATH(handle, ctx, smb_fname);
}
-static int skel_chflags(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname,
- uint flags)
-{
- return SMB_VFS_NEXT_CHFLAGS(handle, smb_fname, flags);
-}
-
static int skel_fchflags(vfs_handle_struct *handle,
struct files_struct *fsp,
uint flags)
.linkat_fn = skel_linkat,
.mknodat_fn = skel_mknodat,
.realpath_fn = skel_realpath,
- .chflags_fn = skel_chflags,
.fchflags_fn = skel_fchflags,
.file_id_create_fn = skel_file_id_create,
.fs_file_id_fn = skel_fs_file_id,
struct smb_filename *(*realpath_fn)(struct vfs_handle_struct *handle,
TALLOC_CTX *ctx,
const struct smb_filename *smb_fname);
- int (*chflags_fn)(struct vfs_handle_struct *handle,
- const struct smb_filename *smb_fname,
- unsigned int flags);
int (*fchflags_fn)(struct vfs_handle_struct *handle,
struct files_struct *fsp,
unsigned int flags);
#define SMB_VFS_NEXT_REALPATH(handle, ctx, smb_fname) \
smb_vfs_call_realpath((handle)->next, (ctx), (smb_fname))
-#define SMB_VFS_CHFLAGS(conn, smb_fname, flags) \
- smb_vfs_call_chflags((conn)->vfs_handles, (smb_fname), (flags))
-#define SMB_VFS_NEXT_CHFLAGS(handle, smb_fname, flags) \
- smb_vfs_call_chflags((handle)->next, (smb_fname), (flags))
-
#define SMB_VFS_FCHFLAGS(fsp, flags) \
smb_vfs_call_fchflags((fsp)->conn->vfs_handles, (fsp), (flags))
#define SMB_VFS_NEXT_FCHFLAGS(handle, fsp, flags) \
return result_fname;
}
-static int vfswrap_chflags(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname,
- unsigned int flags)
-{
-#ifdef HAVE_CHFLAGS
- return chflags(smb_fname->base_name, flags);
-#else
- errno = ENOSYS;
- return -1;
-#endif
-}
-
static int vfswrap_fchflags(vfs_handle_struct *handle,
struct files_struct *fsp,
unsigned int flags)
.linkat_fn = vfswrap_linkat,
.mknodat_fn = vfswrap_mknodat,
.realpath_fn = vfswrap_realpath,
- .chflags_fn = vfswrap_chflags,
.fchflags_fn = vfswrap_fchflags,
.file_id_create_fn = vfswrap_file_id_create,
.fs_file_id_fn = vfswrap_fs_file_id,
SMB_VFS_OP_LINKAT,
SMB_VFS_OP_MKNODAT,
SMB_VFS_OP_REALPATH,
- SMB_VFS_OP_CHFLAGS,
SMB_VFS_OP_FCHFLAGS,
SMB_VFS_OP_FILE_ID_CREATE,
SMB_VFS_OP_FS_FILE_ID,
{ SMB_VFS_OP_LINKAT, "linkat" },
{ SMB_VFS_OP_MKNODAT, "mknodat" },
{ SMB_VFS_OP_REALPATH, "realpath" },
- { SMB_VFS_OP_CHFLAGS, "chflags" },
{ SMB_VFS_OP_FCHFLAGS, "fchflags" },
{ SMB_VFS_OP_FILE_ID_CREATE, "file_id_create" },
{ SMB_VFS_OP_FS_FILE_ID, "fs_file_id" },
return result_fname;
}
-static int smb_full_audit_chflags(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname,
- unsigned int flags)
-{
- int result;
-
- result = SMB_VFS_NEXT_CHFLAGS(handle, smb_fname, flags);
-
- do_log(SMB_VFS_OP_CHFLAGS,
- (result != 0),
- handle,
- "%s",
- smb_fname_str_do_log(handle->conn, smb_fname));
-
- return result;
-}
-
static int smb_full_audit_fchflags(vfs_handle_struct *handle,
struct files_struct *fsp,
unsigned int flags)
.linkat_fn = smb_full_audit_linkat,
.mknodat_fn = smb_full_audit_mknodat,
.realpath_fn = smb_full_audit_realpath,
- .chflags_fn = smb_full_audit_chflags,
.fchflags_fn = smb_full_audit_fchflags,
.file_id_create_fn = smb_full_audit_file_id_create,
.fs_file_id_fn = smb_full_audit_fs_file_id,
return NULL;
}
-int vfs_not_implemented_chflags(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname,
- uint flags)
-{
- errno = ENOSYS;
- return -1;
-}
-
int vfs_not_implemented_fchflags(vfs_handle_struct *handle,
struct files_struct *fsp,
uint flags)
.linkat_fn = vfs_not_implemented_linkat,
.mknodat_fn = vfs_not_implemented_mknodat,
.realpath_fn = vfs_not_implemented_realpath,
- .chflags_fn = vfs_not_implemented_chflags,
.fchflags_fn = vfs_not_implemented_fchflags,
.file_id_create_fn = vfs_not_implemented_file_id_create,
.fs_file_id_fn = vfs_not_implemented_fs_file_id,
return result_fname;
}
-static int smb_time_audit_chflags(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname,
- unsigned int flags)
-{
- int result;
- struct timespec ts1,ts2;
- double timediff;
-
- clock_gettime_mono(&ts1);
- result = SMB_VFS_NEXT_CHFLAGS(handle, smb_fname, flags);
- clock_gettime_mono(&ts2);
- timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9;
-
- if (timediff > audit_timeout) {
- smb_time_audit_log_smb_fname("chflags", timediff, smb_fname);
- }
-
- return result;
-}
-
static int smb_time_audit_fchflags(vfs_handle_struct *handle,
struct files_struct *fsp,
unsigned int flags)
.linkat_fn = smb_time_audit_linkat,
.mknodat_fn = smb_time_audit_mknodat,
.realpath_fn = smb_time_audit_realpath,
- .chflags_fn = smb_time_audit_chflags,
.fchflags_fn = smb_time_audit_fchflags,
.file_id_create_fn = smb_time_audit_file_id_create,
.fs_file_id_fn = smb_time_audit_fs_file_id,
return handle->fns->realpath_fn(handle, ctx, smb_fname);
}
-int smb_vfs_call_chflags(struct vfs_handle_struct *handle,
- const struct smb_filename *smb_fname,
- unsigned int flags)
-{
- VFS_FIND(chflags);
- return handle->fns->chflags_fn(handle, smb_fname, flags);
-}
-
int smb_vfs_call_fchflags(struct vfs_handle_struct *handle,
struct files_struct *fsp,
unsigned int flags)