pacl);
}
+static NTSTATUS aixjfs2_get_nt_acl_at(vfs_handle_struct *handle,
+ struct files_struct *dirfsp,
+ const struct smb_filename *smb_fname,
+ uint32_t security_info,
+ TALLOC_CTX *mem_ctx,
+ struct security_descriptor **ppdesc)
+{
+ struct SMB4ACL_T *pacl = NULL;
+ bool result;
+ bool retryPosix = False;
+
+ SMB_ASSERT(dirfsp == handle->conn->cwd_fsp);
+
+ *ppdesc = NULL;
+ result = aixjfs2_get_nfs4_acl(mem_ctx,
+ smb_fname->base_name,
+ &pacl,
+ &retryPosix);
+ if (retryPosix)
+ {
+ DEBUG(10, ("retrying with posix acl...\n"));
+ return posix_get_nt_acl(handle->conn,
+ smb_fname,
+ security_info,
+ mem_ctx,
+ ppdesc);
+ }
+ if (result==False)
+ return NT_STATUS_ACCESS_DENIED;
+
+ return smb_get_nt_acl_nfs4(handle->conn,
+ smb_fname,
+ NULL,
+ security_info,
+ mem_ctx,
+ ppdesc,
+ pacl);
+}
+
+
static int aixjfs2_sys_acl_blob_get_file(vfs_handle_struct *handle,
const struct smb_filename *smb_fname,
TALLOC_CTX *mem_ctx,
static struct vfs_fn_pointers vfs_aixacl2_fns = {
.fget_nt_acl_fn = aixjfs2_fget_nt_acl,
.get_nt_acl_fn = aixjfs2_get_nt_acl,
+ .get_nt_acl_at_fn = aixjfs2_get_nt_acl_at,
.fset_nt_acl_fn = aixjfs2_fset_nt_acl,
.sys_acl_get_file_fn = aixjfs2_sys_acl_get_file,
.sys_acl_get_fd_fn = aixjfs2_sys_acl_get_fd,