}
static uint64_t skel_disk_free(vfs_handle_struct *handle, const char *path,
- bool small_query, uint64_t *bsize,
+ uint64_t *bsize,
uint64_t *dfree, uint64_t *dsize)
{
*bsize = 0;
return 0;
}
-static int skel_get_quota(vfs_handle_struct *handle, enum SMB_QUOTA_TYPE qtype,
- unid_t id, SMB_DISK_QUOTA *dq)
+static int skel_get_quota(vfs_handle_struct *handle, const char *path,
+ enum SMB_QUOTA_TYPE qtype, unid_t id,
+ SMB_DISK_QUOTA *dq)
{
errno = ENOSYS;
return -1;
return NT_STATUS_NOT_IMPLEMENTED;
}
-static DIR *skel_opendir(vfs_handle_struct *handle, const char *fname,
- const char *mask, uint32 attr)
+static DIR *skel_opendir(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
+ const char *mask,
+ uint32_t attr)
{
return NULL;
}
+static NTSTATUS skel_snap_check_path(struct vfs_handle_struct *handle,
+ TALLOC_CTX *mem_ctx,
+ const char *service_path,
+ char **base_volume)
+{
+ return NT_STATUS_NOT_SUPPORTED;
+}
+
+static NTSTATUS skel_snap_create(struct vfs_handle_struct *handle,
+ TALLOC_CTX *mem_ctx,
+ const char *base_volume,
+ time_t *tstamp,
+ bool rw,
+ char **base_path,
+ char **snap_path)
+{
+ return NT_STATUS_NOT_SUPPORTED;
+}
+
+static NTSTATUS skel_snap_delete(struct vfs_handle_struct *handle,
+ TALLOC_CTX *mem_ctx,
+ char *base_path,
+ char *snap_path)
+{
+ return NT_STATUS_NOT_SUPPORTED;
+}
+
static DIR *skel_fdopendir(vfs_handle_struct *handle, files_struct *fsp,
- const char *mask, uint32 attr)
+ const char *mask, uint32_t attr)
{
return NULL;
}
;
}
-static int skel_mkdir(vfs_handle_struct *handle, const char *path, mode_t mode)
+static int skel_mkdir(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
+ mode_t mode)
{
errno = ENOSYS;
return -1;
}
-static int skel_rmdir(vfs_handle_struct *handle, const char *path)
+static int skel_rmdir(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname)
{
errno = ENOSYS;
return -1;
uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
- files_struct **result, int *pinfo)
+ files_struct **result, int *pinfo,
+ const struct smb2_create_blobs *in_context_blobs,
+ struct smb2_create_blobs *out_context_blobs)
{
return NT_STATUS_NOT_IMPLEMENTED;
}
return NULL;
}
-static ssize_t skel_pread_recv(struct tevent_req *req, int *err)
+static ssize_t skel_pread_recv(struct tevent_req *req,
+ struct vfs_aio_state *vfs_aio_state)
{
- *err = ENOSYS;
+ vfs_aio_state->error = ENOSYS;
return -1;
}
return NULL;
}
-static ssize_t skel_pwrite_recv(struct tevent_req *req, int *err)
+static ssize_t skel_pwrite_recv(struct tevent_req *req,
+ struct vfs_aio_state *vfs_aio_state)
{
- *err = ENOSYS;
+ vfs_aio_state->error = ENOSYS;
return -1;
}
return NULL;
}
-static int skel_fsync_recv(struct tevent_req *req, int *err)
+static int skel_fsync_recv(struct tevent_req *req,
+ struct vfs_aio_state *vfs_aio_state)
{
- *err = ENOSYS;
+ vfs_aio_state->error = ENOSYS;
return -1;
}
return -1;
}
-static int skel_chmod(vfs_handle_struct *handle, const char *path, mode_t mode)
+static int skel_chmod(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
+ mode_t mode)
{
errno = ENOSYS;
return -1;
return -1;
}
-static int skel_chown(vfs_handle_struct *handle, const char *path,
- uid_t uid, gid_t gid)
+static int skel_chown(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
+ uid_t uid,
+ gid_t gid)
{
errno = ENOSYS;
return -1;
return -1;
}
-static int skel_lchown(vfs_handle_struct *handle, const char *path,
- uid_t uid, gid_t gid)
+static int skel_lchown(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
+ uid_t uid,
+ gid_t gid)
{
errno = ENOSYS;
return -1;
}
static int skel_fallocate(vfs_handle_struct *handle, files_struct *fsp,
- enum vfs_fallocate_mode mode, off_t offset, off_t len)
+ uint32_t mode, off_t offset, off_t len)
{
errno = ENOSYS;
return -1;
static int skel_kernel_flock(struct vfs_handle_struct *handle,
struct files_struct *fsp,
- uint32 share_mode, uint32 access_mask)
+ uint32_t share_mode, uint32_t access_mask)
{
errno = ENOSYS;
return -1;
return -1;
}
-static int skel_mknod(vfs_handle_struct *handle, const char *path, mode_t mode,
- SMB_DEV_T dev)
+static int skel_mknod(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
+ mode_t mode,
+ SMB_DEV_T dev)
{
errno = ENOSYS;
return -1;
return NULL;
}
-static NTSTATUS skel_notify_watch(struct vfs_handle_struct *handle,
- struct sys_notify_context *ctx,
- const char *path,
- uint32_t *filter,
- uint32_t *subdir_filter,
- void (*callback) (struct sys_notify_context *
- ctx, void *private_data,
- struct notify_event *ev),
- void *private_data, void *handle_p)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static int skel_chflags(vfs_handle_struct *handle, const char *path,
+static int skel_chflags(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
uint flags)
{
errno = ENOSYS;
off_t src_off,
struct files_struct *dest_fsp,
off_t dest_off,
- off_t num)
+ off_t num,
+ uint32_t flags)
{
struct tevent_req *req;
struct skel_cc_state *cc_state;
static NTSTATUS skel_streaminfo(struct vfs_handle_struct *handle,
struct files_struct *fsp,
- const char *fname,
+ const struct smb_filename *smb_fname,
TALLOC_CTX *mem_ctx,
unsigned int *num_streams,
struct stream_struct **streams)
return NT_STATUS_NOT_IMPLEMENTED;
}
+static NTSTATUS skel_readdir_attr(struct vfs_handle_struct *handle,
+ const struct smb_filename *fname,
+ TALLOC_CTX *mem_ctx,
+ struct readdir_attr_data **pattr_data)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS skel_get_dos_attributes(struct vfs_handle_struct *handle,
+ struct smb_filename *smb_fname,
+ uint32_t *dosmode)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS skel_fget_dos_attributes(struct vfs_handle_struct *handle,
+ struct files_struct *fsp,
+ uint32_t *dosmode)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS skel_set_dos_attributes(struct vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
+ uint32_t dosmode)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
+static NTSTATUS skel_fset_dos_attributes(struct vfs_handle_struct *handle,
+ struct files_struct *fsp,
+ uint32_t dosmode)
+{
+ return NT_STATUS_NOT_IMPLEMENTED;
+}
+
static NTSTATUS skel_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
- uint32 security_info,
+ uint32_t security_info,
TALLOC_CTX *mem_ctx,
struct security_descriptor **ppdesc)
{
}
static NTSTATUS skel_get_nt_acl(vfs_handle_struct *handle,
- const char *name, uint32 security_info,
+ const struct smb_filename *smb_fname,
+ uint32_t security_info,
TALLOC_CTX *mem_ctx,
struct security_descriptor **ppdesc)
{
}
static NTSTATUS skel_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
- uint32 security_info_sent,
+ uint32_t security_info_sent,
const struct security_descriptor *psd)
{
return NT_STATUS_NOT_IMPLEMENTED;
}
-static int skel_chmod_acl(vfs_handle_struct *handle, const char *name,
- mode_t mode)
+static int skel_chmod_acl(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
+ mode_t mode)
{
errno = ENOSYS;
return -1;
}
static SMB_ACL_T skel_sys_acl_get_file(vfs_handle_struct *handle,
- const char *path_p,
+ const struct smb_filename *smb_fname,
SMB_ACL_TYPE_T type,
TALLOC_CTX *mem_ctx)
{
}
static int skel_sys_acl_blob_get_file(vfs_handle_struct *handle,
- const char *path_p, TALLOC_CTX *mem_ctx,
- char **blob_description, DATA_BLOB *blob)
+ const struct smb_filename *smb_fname,
+ TALLOC_CTX *mem_ctx,
+ char **blob_description,
+ DATA_BLOB *blob)
{
errno = ENOSYS;
return -1;
return -1;
}
-static int skel_sys_acl_set_file(vfs_handle_struct *handle, const char *name,
- SMB_ACL_TYPE_T acltype, SMB_ACL_T theacl)
+static int skel_sys_acl_set_file(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
+ SMB_ACL_TYPE_T acltype,
+ SMB_ACL_T theacl)
{
errno = ENOSYS;
return -1;
}
static int skel_sys_acl_delete_def_file(vfs_handle_struct *handle,
- const char *path)
+ const struct smb_filename *smb_fname)
{
errno = ENOSYS;
return -1;
}
-static ssize_t skel_getxattr(vfs_handle_struct *handle, const char *path,
- const char *name, void *value, size_t size)
+static ssize_t skel_getxattr(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
+ const char *name,
+ void *value,
+ size_t size)
{
errno = ENOSYS;
return -1;
return -1;
}
-static ssize_t skel_listxattr(vfs_handle_struct *handle, const char *path,
- char *list, size_t size)
+static ssize_t skel_listxattr(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
+ char *list,
+ size_t size)
{
errno = ENOSYS;
return -1;
return -1;
}
-static int skel_removexattr(vfs_handle_struct *handle, const char *path,
- const char *name)
+static int skel_removexattr(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
+ const char *name)
{
errno = ENOSYS;
return -1;
return SMB_VFS_NEXT_FREMOVEXATTR(handle, fsp, name);
}
-static int skel_setxattr(vfs_handle_struct *handle, const char *path,
- const char *name, const void *value, size_t size,
- int flags)
+static int skel_setxattr(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
+ const char *name,
+ const void *value,
+ size_t size,
+ int flags)
{
errno = ENOSYS;
return -1;
return false;
}
-static bool skel_is_offline(struct vfs_handle_struct *handle,
- const struct smb_filename *fname,
- SMB_STRUCT_STAT *sbuf)
-{
- errno = ENOSYS;
- return false;
-}
-
-static int skel_set_offline(struct vfs_handle_struct *handle,
- const struct smb_filename *fname)
-{
- errno = ENOSYS;
- return -1;
-}
-
/* VFS operations structure */
struct vfs_fn_pointers skel_opaque_fns = {
.statvfs_fn = skel_statvfs,
.fs_capabilities_fn = skel_fs_capabilities,
.get_dfs_referrals_fn = skel_get_dfs_referrals,
+ .snap_check_path_fn = skel_snap_check_path,
+ .snap_create_fn = skel_snap_create,
+ .snap_delete_fn = skel_snap_delete,
/* Directory operations */
.link_fn = skel_link,
.mknod_fn = skel_mknod,
.realpath_fn = skel_realpath,
- .notify_watch_fn = skel_notify_watch,
.chflags_fn = skel_chflags,
.file_id_create_fn = skel_file_id_create,
.copy_chunk_send_fn = skel_copy_chunk_send,
.strict_unlock_fn = skel_strict_unlock,
.translate_name_fn = skel_translate_name,
.fsctl_fn = skel_fsctl,
+ .readdir_attr_fn = skel_readdir_attr,
+
+ /* DOS attributes. */
+ .get_dos_attributes_fn = skel_get_dos_attributes,
+ .fget_dos_attributes_fn = skel_fget_dos_attributes,
+ .set_dos_attributes_fn = skel_set_dos_attributes,
+ .fset_dos_attributes_fn = skel_fset_dos_attributes,
/* NT ACL operations. */
/* aio operations */
.aio_force_fn = skel_aio_force,
-
- /* offline operations */
- .is_offline_fn = skel_is_offline,
- .set_offline_fn = skel_set_offline
};
-NTSTATUS vfs_skel_opaque_init(void)
+static_decl_vfs;
+NTSTATUS vfs_skel_opaque_init(TALLOC_CTX *ctx)
{
return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "skel_opaque",
&skel_opaque_fns);