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_freaddir_attr(struct vfs_handle_struct *handle,
struct files_struct *fsp,
TALLOC_CTX *mem_ctx,
.strict_lock_check_fn = skel_strict_lock_check,
.translate_name_fn = skel_translate_name,
.fsctl_fn = skel_fsctl,
- .readdir_attr_fn = skel_readdir_attr,
.freaddir_attr_fn = skel_freaddir_attr,
.audit_file_fn = skel_audit_file,
in_len, _out_data, max_out_len, out_len);
}
-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 SMB_VFS_NEXT_READDIR_ATTR(handle, fname, mem_ctx, pattr_data);
-}
-
static NTSTATUS skel_freaddir_attr(struct vfs_handle_struct *handle,
struct files_struct *fsp,
TALLOC_CTX *mem_ctx,
.strict_lock_check_fn = skel_strict_lock_check,
.translate_name_fn = skel_translate_name,
.fsctl_fn = skel_fsctl,
- .readdir_attr_fn = skel_readdir_attr,
.freaddir_attr_fn = skel_freaddir_attr,
.audit_file_fn = skel_audit_file,
* Version 45 - Remove SMB_VFS_NTIMES
* Version 45 - ADD SMB_VFS_FSTREAMINFO
* Version 45 - Add SMB_VFS_FREADDIR_ATTR
+ * Version 45 - Remove SMB_VFS_READDIR_ATTR
*/
#define SMB_VFS_INTERFACE_VERSION 45
struct files_struct **fsp,
DATA_BLOB *new_cookie);
- NTSTATUS (*readdir_attr_fn)(struct vfs_handle_struct *handle,
- const struct smb_filename *fname,
- TALLOC_CTX *mem_ctx,
- struct readdir_attr_data **attr_data);
NTSTATUS (*freaddir_attr_fn)(struct vfs_handle_struct *handle,
struct files_struct *fsp,
TALLOC_CTX *mem_ctx,
TALLOC_CTX *mem_ctx,
struct files_struct **fsp,
DATA_BLOB *new_cookie);
-NTSTATUS smb_vfs_call_readdir_attr(struct vfs_handle_struct *handle,
- const struct smb_filename *fname,
- TALLOC_CTX *mem_ctx,
- struct readdir_attr_data **attr_data);
NTSTATUS smb_vfs_call_freaddir_attr(struct vfs_handle_struct *handle,
struct files_struct *fsp,
TALLOC_CTX *mem_ctx,
uint32_t in_len,
uint8_t **_out_data,
uint32_t max_out_len, uint32_t *out_len);
-NTSTATUS vfs_not_implemented_readdir_attr(struct vfs_handle_struct *handle,
- const struct smb_filename *fname,
- TALLOC_CTX *mem_ctx,
- struct readdir_attr_data **pattr_data);
NTSTATUS vfs_not_implemented_freaddir_attr(struct vfs_handle_struct *handle,
struct files_struct *dirfsp,
TALLOC_CTX *mem_ctx,
(smb1req), (op), (old_cookie), \
(mem_ctx), (fsp), (new_cookie))
-#define SMB_VFS_READDIR_ATTR(conn, fname, mem_ctx, attr_data) \
- smb_vfs_call_readdir_attr((conn)->vfs_handles, (fname), (mem_ctx), (attr_data))
-#define SMB_VFS_NEXT_READDIR_ATTR(conn, fname, mem_ctx, attr_data) \
- smb_vfs_call_readdir_attr((handle)->next, (fname), (mem_ctx), (attr_data))
-
#define SMB_VFS_FREADDIR_ATTR(fsp, mem_ctx, attr_data) \
smb_vfs_call_freaddir_attr((fsp)->conn->vfs_handles, (fsp), (mem_ctx), (attr_data))
#define SMB_VFS_NEXT_FREADDIR_ATTR(handle, fsp, mem_ctx, attr_data) \
| SMB_VFS_PWRITE_SEND() | [[fsp][fsp]] | - |
| SMB_VFS_READ_DFS_PATHAT() | [[Symlink][Symlink]] | Todo |
| SMB_VFS_READDIR() | [[fsp][fsp]] | - |
-| SMB_VFS_READDIR_ATTR() | [[Path][Path]] | Todo |
+| SMB_VFS_READDIR_ATTR() | [[Path][Path]] | - |
| SMB_VFS_READLINKAT() | [[Symlink][Symlink]] | - |
| SMB_VFS_REALPATH() | [[P2px][P2px]] | - |
| SMB_VFS_RECVFILE() | [[fsp][fsp]] | - |
| VFS Function | Group | Status |
|---------------------------------+----------+--------|
| SMB_VFS_SYS_ACL_DELETE_DEF_FD() | [[xpathref][xpathref]] | Todo |
-| SMB_VFS_READDIR_ATTRAT() | [[Enum][Enum]] | Todo |
| SMB_VFS_FNTIMENS() | [[fsp][fsp]] | - |
|---------------------------------+----------+--------|
*** AT VFS functions needed for directory enumeration <<Enum>>
- SMB_VFS_GET_DOS_ATTRIBUTES_SEND()
- SMB_VFS_GETXATTRAT_SEND()
- - SMB_VFS_READDIR_ATTRAT() (NEW)
*** Handle based VFS functions not allowed on O_PATH opened handles <<xpathref>>
- SMB_VFS_FGETXATTR()
- SMB_VFS_FLISTXATTR()
SMB_VFS_PWRITE_SEND() [fsp] -
SMB_VFS_READ_DFS_PATHAT() [Symlink] Todo
SMB_VFS_READDIR() [fsp] -
- SMB_VFS_READDIR_ATTR() [Path] Todo
+ SMB_VFS_READDIR_ATTR() [Path] -
SMB_VFS_READLINKAT() [Symlink] -
SMB_VFS_REALPATH() [P2px] -
SMB_VFS_RECVFILE() [fsp] -
VFS Function Group Status
─────────────────────────────────────────────────────
SMB_VFS_SYS_ACL_DELETE_DEF_FD() [xpathref] Todo
- SMB_VFS_READDIR_ATTRAT() [Enum] Todo
SMB_VFS_FNTIMENS() [fsp] -
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• SMB_VFS_GET_DOS_ATTRIBUTES_SEND()
• SMB_VFS_GETXATTRAT_SEND()
- • SMB_VFS_READDIR_ATTRAT() (NEW)
2.2.7 Handle based VFS functions not allowed on O_PATH opened handles
return result;
}
-static NTSTATUS vfswrap_readdir_attr(struct vfs_handle_struct *handle,
- const struct smb_filename *fname,
- TALLOC_CTX *mem_ctx,
- struct readdir_attr_data **attr_data)
-{
- return NT_STATUS_NOT_SUPPORTED;
-}
-
static NTSTATUS vfswrap_freaddir_attr(struct vfs_handle_struct *handle,
struct files_struct *fsp,
TALLOC_CTX *mem_ctx,
.fdopendir_fn = vfswrap_fdopendir,
.readdir_fn = vfswrap_readdir,
- .readdir_attr_fn = vfswrap_readdir_attr,
.freaddir_attr_fn = vfswrap_freaddir_attr,
.seekdir_fn = vfswrap_seekdir,
.telldir_fn = vfswrap_telldir,
SMB_VFS_OP_DURABLE_DISCONNECT,
SMB_VFS_OP_DURABLE_RECONNECT,
- SMB_VFS_OP_READDIR_ATTR,
SMB_VFS_OP_FREADDIR_ATTR,
/* This should always be last enum value */
{ SMB_VFS_OP_DURABLE_COOKIE, "durable_cookie" },
{ SMB_VFS_OP_DURABLE_DISCONNECT, "durable_disconnect" },
{ SMB_VFS_OP_DURABLE_RECONNECT, "durable_reconnect" },
- { SMB_VFS_OP_READDIR_ATTR, "readdir_attr" },
{ SMB_VFS_OP_FREADDIR_ATTR, "freaddir_attr" },
{ SMB_VFS_OP_LAST, NULL }
};
return result;
}
-static NTSTATUS smb_full_audit_readdir_attr(struct vfs_handle_struct *handle,
- const struct smb_filename *fname,
- TALLOC_CTX *mem_ctx,
- struct readdir_attr_data **pattr_data)
-{
- NTSTATUS status;
-
- status = SMB_VFS_NEXT_READDIR_ATTR(handle, fname, mem_ctx, pattr_data);
-
- do_log(SMB_VFS_OP_READDIR_ATTR, NT_STATUS_IS_OK(status), handle, "%s",
- smb_fname_str_do_log(handle->conn, fname));
-
- return status;
-}
-
static NTSTATUS smb_full_audit_freaddir_attr(struct vfs_handle_struct *handle,
struct files_struct *fsp,
TALLOC_CTX *mem_ctx,
.durable_cookie_fn = smb_full_audit_durable_cookie,
.durable_disconnect_fn = smb_full_audit_durable_disconnect,
.durable_reconnect_fn = smb_full_audit_durable_reconnect,
- .readdir_attr_fn = smb_full_audit_readdir_attr,
.freaddir_attr_fn = smb_full_audit_freaddir_attr,
};
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS vfs_not_implemented_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;
-}
-
NTSTATUS vfs_not_implemented_freaddir_attr(struct vfs_handle_struct *handle,
struct files_struct *fsp,
TALLOC_CTX *mem_ctx,
.strict_lock_check_fn = vfs_not_implemented_strict_lock_check,
.translate_name_fn = vfs_not_implemented_translate_name,
.fsctl_fn = vfs_not_implemented_fsctl,
- .readdir_attr_fn = vfs_not_implemented_readdir_attr,
.freaddir_attr_fn = vfs_not_implemented_freaddir_attr,
.audit_file_fn = vfs_not_implemented_audit_file,
return result;
}
-static NTSTATUS smb_time_audit_readdir_attr(struct vfs_handle_struct *handle,
- const struct smb_filename *fname,
- TALLOC_CTX *mem_ctx,
- struct readdir_attr_data **pattr_data)
-{
- NTSTATUS status;
- struct timespec ts1,ts2;
- double timediff;
-
- clock_gettime_mono(&ts1);
- status = SMB_VFS_NEXT_READDIR_ATTR(handle, fname, mem_ctx, pattr_data);
- clock_gettime_mono(&ts2);
- timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9;
-
- if (timediff > audit_timeout) {
- smb_time_audit_log_smb_fname("readdir_attr", timediff, fname);
- }
-
- return status;
-}
-
static NTSTATUS smb_time_audit_freaddir_attr(struct vfs_handle_struct *handle,
struct files_struct *fsp,
TALLOC_CTX *mem_ctx,
.durable_cookie_fn = smb_time_audit_durable_cookie,
.durable_disconnect_fn = smb_time_audit_durable_disconnect,
.durable_reconnect_fn = smb_time_audit_durable_reconnect,
- .readdir_attr_fn = smb_time_audit_readdir_attr,
.freaddir_attr_fn = smb_time_audit_freaddir_attr,
};
new_cookie);
}
-NTSTATUS smb_vfs_call_readdir_attr(struct vfs_handle_struct *handle,
- const struct smb_filename *fname,
- TALLOC_CTX *mem_ctx,
- struct readdir_attr_data **attr_data)
-{
- VFS_FIND(readdir_attr);
- return handle->fns->readdir_attr_fn(handle, fname, mem_ctx, attr_data);
-}
-
NTSTATUS smb_vfs_call_freaddir_attr(struct vfs_handle_struct *handle,
struct files_struct *fsp,
TALLOC_CTX *mem_ctx,