smbd: Introduce fsp_is_alternate_stream()
[gd/samba-autobuild/.git] / source3 / smbd / proto.h
index ea86515a9253a0bd155526ed92c9abca7fe1a6fc..f9aa1f2a39e20345f8b10e6d4a29a4498e661858 100644 (file)
@@ -99,7 +99,6 @@ bool aio_add_req_to_fsp(files_struct *fsp, struct tevent_req *req);
 
 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,
@@ -112,7 +111,6 @@ struct tevent_req *smbd_smb1_do_locks_send(
        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);
@@ -124,7 +122,6 @@ void smbd_smb1_brl_finish_by_req(struct tevent_req *req, NTSTATUS status);
 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(
@@ -133,8 +130,12 @@ 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,
@@ -359,8 +360,6 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx,
                      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);
@@ -380,12 +379,12 @@ NTSTATUS filename_convert(TALLOC_CTX *mem_ctx,
                        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  */
 
@@ -416,6 +415,7 @@ struct files_struct *file_find_one_fsp_from_lease_key(
        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,
@@ -436,6 +436,7 @@ NTSTATUS fsp_set_smb_fname(struct files_struct *fsp,
                           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,
@@ -571,6 +572,7 @@ NTSTATUS dfs_redirect(TALLOC_CTX *ctx,
                        const char *name_in,
                        uint32_t ucf_flags,
                        bool allow_broken_path,
+                       NTTIME *twrp,
                        char **pp_name_out);
 struct connection_struct;
 struct smb_filename;
@@ -931,7 +933,6 @@ bool smb1_parse_chain(TALLOC_CTX *mem_ctx, const uint8_t *buf,
 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);
@@ -991,8 +992,7 @@ void reply_ctemp(struct smb_request *req);
 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);
@@ -1038,7 +1038,6 @@ NTSTATUS rename_internals(TALLOC_CTX *ctx,
                        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,
@@ -1169,7 +1168,6 @@ void stat_cache_add( const char *full_orig_name,
                NTTIME twrp,
                bool case_sensitive);
 bool stat_cache_lookup(connection_struct *conn,
-                       bool posix_paths,
                        char **pp_name,
                        char **pp_dirpath,
                        char **pp_start,
@@ -1180,8 +1178,6 @@ void smbd_send_stat_cache_delete_message(struct messaging_context *msg_ctx,
 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  */
@@ -1205,7 +1201,6 @@ NTSTATUS get_ea_names_from_fsp(TALLOC_CTX *mem_ctx,
                        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,
@@ -1306,9 +1301,6 @@ struct smb_filename *vfs_GetWd(TALLOC_CTX *ctx, connection_struct *conn);
 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,
@@ -1345,4 +1337,15 @@ NTSTATUS vfs_default_durable_reconnect(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_ */