NTSTATUS smbd_do_locks_try(
struct files_struct *fsp,
- enum brl_flavour lock_flav,
uint16_t num_locks,
struct smbd_lock_element *locks,
uint16_t *blocker_idx,
struct files_struct *fsp,
uint32_t lock_timeout,
bool large_offset,
- enum brl_flavour lock_flav,
uint16_t num_locks,
struct smbd_lock_element *locks);
NTSTATUS smbd_smb1_do_locks_recv(struct tevent_req *req);
bool smbd_smb1_brl_finish_by_lock(
struct files_struct *fsp,
bool large_offset,
- enum brl_flavour lock_flav,
struct smbd_lock_element lock,
NTSTATUS finish_status);
bool smbd_smb1_brl_finish_by_mid(
/* The following definitions come from smbd/close.c */
void set_close_write_time(struct files_struct *fsp, struct timespec ts);
-NTSTATUS close_file(struct smb_request *req, files_struct *fsp,
- enum file_close_type close_type);
+NTSTATUS close_file_smb(struct smb_request *req,
+ struct files_struct *fsp,
+ enum file_close_type close_type);
+NTSTATUS close_file_free(struct smb_request *req,
+ struct files_struct **_fsp,
+ enum file_close_type close_type);
void msg_close_file(struct messaging_context *msg_ctx,
void *private_data,
uint32_t msg_type,
NTTIME twrp,
struct smb_filename **smb_fname,
uint32_t ucf_flags);
-NTSTATUS check_name(connection_struct *conn,
- const struct smb_filename *smb_fname);
NTSTATUS canonicalize_snapshot_path(struct smb_filename *smb_fname,
uint32_t ucf_flags,
NTTIME twrp);
uint32_t ucf_flags,
NTTIME twrp,
struct smb_filename **pp_smb_fname);
-NTSTATUS filename_convert_with_privilege(TALLOC_CTX *mem_ctx,
- connection_struct *conn,
- struct smb_request *smbreq,
- const char *name_in,
- uint32_t ucf_flags,
- struct smb_filename **pp_smb_fname);
+NTSTATUS filename_convert_smb1_search_path(TALLOC_CTX *ctx,
+ connection_struct *conn,
+ const char *name_in,
+ uint32_t ucf_flags,
+ struct smb_filename **_smb_fname_out,
+ char **_mask_out);
/* The following definitions come from smbd/files.c */
struct smbd_server_connection *sconn,
const struct smb2_lease_key *lease_key);
bool file_find_subpath(files_struct *dir_fsp);
+void fsp_unbind_smb(struct smb_request *req, files_struct *fsp);
void file_free(struct smb_request *req, files_struct *fsp);
files_struct *file_fsp(struct smb_request *req, uint16_t fid);
struct files_struct *file_fsp_get(struct smbd_smb2_request *smb2req,
const struct smb_filename *smb_fname_in);
size_t fsp_fullbasepath(struct files_struct *fsp, char *buf, size_t buflen);
void fsp_set_base_fsp(struct files_struct *fsp, struct files_struct *base_fsp);
+bool fsp_is_alternate_stream(const struct files_struct *fsp);
NTSTATUS create_internal_fsp(connection_struct *conn,
const struct smb_filename *smb_fname,
const char *name_in,
uint32_t ucf_flags,
bool allow_broken_path,
+ NTTIME *twrp,
char **pp_name_out);
struct connection_struct;
struct smb_filename;
bool req_is_in_chain(const struct smb_request *req);
void smbd_process(struct tevent_context *ev_ctx,
struct messaging_context *msg_ctx,
- struct dcesrv_context *dce_ctx,
int sock_fd,
bool interactive);
bool fork_echo_handler(struct smbXsrv_connection *xconn);
NTSTATUS unlink_internals(connection_struct *conn,
struct smb_request *req,
uint32_t dirtype,
- struct smb_filename *smb_fname,
- bool has_wcard);
+ struct smb_filename *smb_fname);
void reply_unlink(struct smb_request *req);
ssize_t fake_sendfile(struct smbXsrv_connection *xconn, files_struct *fsp,
off_t startpos, size_t nread);
connection_struct *conn,
struct smb_request *req,
struct smb_filename *smb_fname_src,
- const char *src_original_lcomp,
struct smb_filename *smb_fname_dst,
const char *dst_original_lcomp,
uint32_t attrs,
NTTIME twrp,
bool case_sensitive);
bool stat_cache_lookup(connection_struct *conn,
- bool posix_paths,
char **pp_name,
char **pp_dirpath,
char **pp_start,
void send_stat_cache_delete_message(struct messaging_context *msg_ctx,
const char *name);
void stat_cache_delete(const char *name);
-struct TDB_DATA;
-unsigned int fast_string_hash(struct TDB_DATA *key);
bool reset_stat_cache( void );
/* The following definitions come from smbd/statvfs.c */
size_t *pnum_names);
NTSTATUS set_ea(connection_struct *conn, files_struct *fsp,
struct ea_list *ea_list);
-struct ea_list *read_ea_list_entry(TALLOC_CTX *ctx, const char *pdata, size_t data_size, size_t *pbytes_used);
void send_trans2_replies(connection_struct *conn,
struct smb_request *req,
NTSTATUS status,
NTSTATUS check_reduced_name(connection_struct *conn,
const struct smb_filename *cwd_fname,
const struct smb_filename *smb_fname);
-NTSTATUS check_reduced_name_with_privilege(connection_struct *conn,
- const struct smb_filename *smb_fname,
- struct smb_request *smbreq);
int vfs_stat(struct connection_struct *conn,
struct smb_filename *smb_fname);
int vfs_stat_smb_basename(struct connection_struct *conn,
files_struct **result,
DATA_BLOB *new_cookie);
+/* The following definitions come from smbd/smb2_posix.c */
+DATA_BLOB smb2_posix_cc_info(TALLOC_CTX *mem_ctx,
+ connection_struct *conn,
+ uint32_t reparse_tag,
+ const SMB_STRUCT_STAT *psbuf);
+DATA_BLOB store_smb2_posix_info(TALLOC_CTX *mem_ctx,
+ connection_struct *conn,
+ const SMB_STRUCT_STAT *psbuf,
+ uint32_t reparse_tag,
+ uint32_t dos_attributes);
+
#endif /* _SMBD_PROTO_H_ */