s3: VFS: catia: Add read_dfs_pathat().
authorJeremy Allison <jra@samba.org>
Tue, 11 Feb 2020 18:02:00 +0000 (10:02 -0800)
committerRalph Boehme <slow@samba.org>
Tue, 18 Feb 2020 21:08:33 +0000 (21:08 +0000)
Not yet used.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/modules/vfs_catia.c

index 1739fd77d5b566f06c3aac85e92780bb1e1d5737..5bb55cf89f602cc77621ae6f294dc09a2979c34b 100644 (file)
@@ -2404,6 +2404,47 @@ static NTSTATUS catia_create_dfs_pathat(struct vfs_handle_struct *handle,
        return status;
 }
 
+static NTSTATUS catia_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)
+{
+       char *mapped_name = NULL;
+       const char *path = smb_fname->base_name;
+       struct smb_filename *mapped_smb_fname = NULL;
+       NTSTATUS status;
+
+       status = catia_string_replace_allocate(handle->conn,
+                                       path,
+                                       &mapped_name,
+                                       vfs_translate_to_unix);
+       if (!NT_STATUS_IS_OK(status)) {
+               errno = map_errno_from_nt_status(status);
+               return status;
+       }
+       mapped_smb_fname = synthetic_smb_fname(talloc_tos(),
+                                       mapped_name,
+                                       NULL,
+                                       &smb_fname->st,
+                                       smb_fname->flags);
+       if (mapped_smb_fname == NULL) {
+               TALLOC_FREE(mapped_name);
+               return NT_STATUS_NO_MEMORY;
+       }
+
+       status = SMB_VFS_NEXT_READ_DFS_PATHAT(handle,
+                                       mem_ctx,
+                                       dirfsp,
+                                       mapped_smb_fname,
+                                       ppreflist,
+                                       preferral_count);
+       TALLOC_FREE(mapped_name);
+       TALLOC_FREE(mapped_smb_fname);
+       return status;
+}
+
 static struct vfs_fn_pointers vfs_catia_fns = {
        .connect_fn = catia_connect,
 
@@ -2455,6 +2496,7 @@ static struct vfs_fn_pointers vfs_catia_fns = {
        .get_compression_fn = catia_get_compression,
        .set_compression_fn = catia_set_compression,
        .create_dfs_pathat_fn = catia_create_dfs_pathat,
+       .read_dfs_pathat_fn = catia_read_dfs_pathat,
 
        /* NT ACL operations. */
        .get_nt_acl_fn = catia_get_nt_acl,