/* If you take this file as template for your module
* please make sure that you remove all skel_XXX() functions you don't
* want to implement!! The passthrough operations are not
- * neccessary in a real module.
+ * necessary in a real module.
*
* --metze
*/
return SMB_VFS_NEXT_GET_DFS_REFERRALS(handle, r);
}
-static DIR *skel_opendir(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname,
- const char *mask,
- uint32_t attr)
+static NTSTATUS skel_create_dfs_pathat(struct vfs_handle_struct *handle,
+ struct files_struct *dirfsp,
+ const struct smb_filename *smb_fname,
+ const struct referral *reflist,
+ size_t referral_count)
+{
+ return SMB_VFS_NEXT_CREATE_DFS_PATHAT(handle,
+ dirfsp,
+ smb_fname,
+ reflist,
+ referral_count);
+}
+
+static NTSTATUS skel_read_dfs_pathat(struct vfs_handle_struct *handle,
+ TALLOC_CTX *mem_ctx,
+ struct files_struct *dirfsp,
+ const struct smb_filename *smb_fname,
+ struct referral **ppreflist,
+ size_t *preferral_count)
{
- return SMB_VFS_NEXT_OPENDIR(handle, smb_fname, mask, attr);
+ return SMB_VFS_NEXT_READ_DFS_PATHAT(handle,
+ mem_ctx,
+ dirfsp,
+ smb_fname,
+ ppreflist,
+ preferral_count);
}
static NTSTATUS skel_snap_check_path(struct vfs_handle_struct *handle,
SMB_VFS_NEXT_REWINDDIR(handle, dirp);
}
-static int skel_mkdir(vfs_handle_struct *handle,
+static int skel_mkdirat(vfs_handle_struct *handle,
+ struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
mode_t mode)
{
- return SMB_VFS_NEXT_MKDIR(handle, smb_fname, mode);
-}
-
-static int skel_rmdir(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname)
-{
- return SMB_VFS_NEXT_RMDIR(handle, smb_fname);
+ return SMB_VFS_NEXT_MKDIRAT(handle,
+ dirfsp,
+ smb_fname,
+ mode);
}
static int skel_closedir(vfs_handle_struct *handle, DIR *dir)
return SMB_VFS_NEXT_GET_ALLOC_SIZE(handle, fsp, sbuf);
}
-static int skel_unlink(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname)
+static int skel_unlinkat(vfs_handle_struct *handle,
+ struct files_struct *dirfsp,
+ const struct smb_filename *smb_fname,
+ int flags)
{
- return SMB_VFS_NEXT_UNLINK(handle, smb_fname);
+ return SMB_VFS_NEXT_UNLINKAT(handle,
+ dirfsp,
+ smb_fname,
+ flags);
}
static int skel_chmod(vfs_handle_struct *handle,
return SMB_VFS_NEXT_FCHMOD(handle, fsp, mode);
}
-static int skel_chown(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname,
- uid_t uid,
- gid_t gid)
-{
- return SMB_VFS_NEXT_CHOWN(handle, smb_fname, uid, gid);
-}
-
static int skel_fchown(vfs_handle_struct *handle, files_struct *fsp,
uid_t uid, gid_t gid)
{
return SMB_VFS_NEXT_KERNEL_FLOCK(handle, fsp, share_mode, access_mask);
}
+static int skel_fcntl(struct vfs_handle_struct *handle,
+ struct files_struct *fsp, int cmd, va_list cmd_arg)
+{
+ void *arg;
+ va_list dup_cmd_arg;
+ int result;
+
+ va_copy(dup_cmd_arg, cmd_arg);
+ arg = va_arg(dup_cmd_arg, void *);
+ result = SMB_VFS_NEXT_FCNTL(handle, fsp, cmd, arg);
+ va_end(dup_cmd_arg);
+
+ return result;
+}
+
static int skel_linux_setlease(struct vfs_handle_struct *handle,
struct files_struct *fsp, int leasetype)
{
}
static int skel_symlinkat(vfs_handle_struct *handle,
- const char *link_contents,
+ const struct smb_filename *link_contents,
struct files_struct *dirfsp,
const struct smb_filename *new_smb_fname)
{
}
static int skel_get_real_filename(struct vfs_handle_struct *handle,
- const char *path,
+ const struct smb_filename *path,
const char *name,
TALLOC_CTX *mem_ctx, char **found_name)
{
.statvfs_fn = skel_statvfs,
.fs_capabilities_fn = skel_fs_capabilities,
.get_dfs_referrals_fn = skel_get_dfs_referrals,
+ .create_dfs_pathat_fn = skel_create_dfs_pathat,
+ .read_dfs_pathat_fn = skel_read_dfs_pathat,
.snap_check_path_fn = skel_snap_check_path,
.snap_create_fn = skel_snap_create,
.snap_delete_fn = skel_snap_delete,
/* Directory operations */
- .opendir_fn = skel_opendir,
.fdopendir_fn = skel_fdopendir,
.readdir_fn = skel_readdir,
.seekdir_fn = skel_seekdir,
.telldir_fn = skel_telldir,
.rewind_dir_fn = skel_rewind_dir,
- .mkdir_fn = skel_mkdir,
- .rmdir_fn = skel_rmdir,
+ .mkdirat_fn = skel_mkdirat,
.closedir_fn = skel_closedir,
/* File operations */
.fstat_fn = skel_fstat,
.lstat_fn = skel_lstat,
.get_alloc_size_fn = skel_get_alloc_size,
- .unlink_fn = skel_unlink,
+ .unlinkat_fn = skel_unlinkat,
.chmod_fn = skel_chmod,
.fchmod_fn = skel_fchmod,
- .chown_fn = skel_chown,
.fchown_fn = skel_fchown,
.lchown_fn = skel_lchown,
.chdir_fn = skel_chdir,
.fallocate_fn = skel_fallocate,
.lock_fn = skel_lock,
.kernel_flock_fn = skel_kernel_flock,
+ .fcntl_fn = skel_fcntl,
.linux_setlease_fn = skel_linux_setlease,
.getlock_fn = skel_getlock,
.symlinkat_fn = skel_symlinkat,