X-Git-Url: http://git.samba.org/samba.git/?p=kai%2Fsamba-autobuild%2F.git;a=blobdiff_plain;f=source3%2Fsmbd%2Fproto.h;h=a5c55c6ec502069d1144dd823c73fc394bcba048;hp=262338d81e4625266bca2c125e00571977d4aae0;hb=b656ebf54afcd322cc7dcaa1a913a557027840fd;hpb=ec2a40831359ae93f437ef76f8ba76bbd95bc6dc diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h index 262338d81e4..a5c55c6ec50 100644 --- a/source3/smbd/proto.h +++ b/source3/smbd/proto.h @@ -146,6 +146,9 @@ NTSTATUS delete_all_streams(connection_struct *conn, bool recursive_rmdir(TALLOC_CTX *ctx, connection_struct *conn, struct smb_filename *smb_dname); +bool has_other_nonposix_opens(struct share_mode_lock *lck, + struct files_struct *fsp, + struct server_id self); /* The following definitions come from smbd/conn.c */ @@ -173,6 +176,7 @@ uint64_t sys_disk_free(connection_struct *conn, struct smb_filename *fname, uint64_t *bsize, uint64_t *dfree, uint64_t *dsize); uint64_t get_dfree_info(connection_struct *conn, struct smb_filename *fname, uint64_t *bsize, uint64_t *dfree, uint64_t *dsize); +void flush_dfree_cache(void); /* The following definitions come from smbd/dir.c */ @@ -259,6 +263,11 @@ mode_t unix_mode(connection_struct *conn, int dosmode, uint32_t dos_mode_msdfs(connection_struct *conn, const struct smb_filename *smb_fname); uint32_t dos_mode(connection_struct *conn, struct smb_filename *smb_fname); +struct tevent_req *dos_mode_at_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + files_struct *dir_fsp, + struct smb_filename *smb_fname); +NTSTATUS dos_mode_at_recv(struct tevent_req *req, uint32_t *dosmode); int file_set_dosmode(connection_struct *conn, struct smb_filename *smb_fname, uint32_t dosmode, const char *parent_dir, bool newfile); NTSTATUS file_set_sparse(connection_struct *conn, @@ -289,6 +298,10 @@ struct timespec get_change_timespec(connection_struct *conn, struct files_struct *fsp, const struct smb_filename *smb_fname); +NTSTATUS parse_dos_attribute_blob(struct smb_filename *smb_fname, + DATA_BLOB blob, + uint32_t *pattr); + /* The following definitions come from smbd/error.c */ bool use_nt_status(void); @@ -319,10 +332,7 @@ NTSTATUS can_set_delete_on_close(files_struct *fsp, uint32_t dosmode); /* The following definitions come from smbd/fileio.c */ ssize_t read_file(files_struct *fsp,char *data,off_t pos,size_t n); -void update_write_time_handler(struct tevent_context *ctx, - struct tevent_timer *te, - struct timeval now, - void *private_data); +void fsp_flush_write_time_update(struct files_struct *fsp); void trigger_write_time_update(struct files_struct *fsp); void trigger_write_time_update_immediate(struct files_struct *fsp); void mark_file_modified(files_struct *fsp); @@ -355,6 +365,7 @@ NTSTATUS filename_convert(TALLOC_CTX *mem_ctx, connection_struct *conn, const char *name_in, uint32_t ucf_flags, + time_t *twrp, bool *ppath_contains_wcard, struct smb_filename **pp_smb_fname); NTSTATUS filename_convert_with_privilege(TALLOC_CTX *mem_ctx, @@ -392,7 +403,6 @@ 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 file_sync_all(connection_struct *conn); void fsp_free(files_struct *fsp); void file_free(struct smb_request *req, files_struct *fsp); files_struct *file_fsp(struct smb_request *req, uint16_t fid); @@ -498,21 +508,22 @@ NTSTATUS resolve_dfspath_wcard(TALLOC_CTX *ctx, bool allow_broken_path, char **pp_name_out, bool *ppath_contains_wcard); -NTSTATUS create_conn_struct(TALLOC_CTX *ctx, - struct tevent_context *ev, - struct messaging_context *msg, - connection_struct **pconn, - int snum, - const char *path, - const struct auth_session_info *session_info); -NTSTATUS create_conn_struct_cwd(TALLOC_CTX *ctx, - struct tevent_context *ev, - struct messaging_context *msg, - connection_struct **pconn, +struct connection_struct; +struct smb_filename; +struct conn_struct_tos { + struct connection_struct *conn; + struct smb_filename *oldcwd_fname; +}; +NTSTATUS create_conn_struct_tos(struct messaging_context *msg, int snum, const char *path, const struct auth_session_info *session_info, - struct smb_filename **poldcwd_fname); + struct conn_struct_tos **_c); +NTSTATUS create_conn_struct_tos_cwd(struct messaging_context *msg, + int snum, + const char *path, + const struct auth_session_info *session_info, + struct conn_struct_tos **_c); /* The following definitions come from smbd/negprot.c */ @@ -531,7 +542,9 @@ void change_notify_reply(struct smb_request *req, void notify_callback(struct smbd_server_connection *sconn, void *private_data, struct timespec when, const struct notify_event *e); -NTSTATUS change_notify_create(struct files_struct *fsp, uint32_t filter, +NTSTATUS change_notify_create(struct files_struct *fsp, + uint32_t max_buffer_size, + uint32_t filter, bool recursive); NTSTATUS change_notify_add_request(struct smb_request *req, uint32_t max_param, @@ -587,7 +600,6 @@ int fam_watch(TALLOC_CTX *mem_ctx, struct notify_context *notify_init( TALLOC_CTX *mem_ctx, struct messaging_context *msg, - struct tevent_context *ev, struct smbd_server_connection *sconn, void (*callback)(struct smbd_server_connection *sconn, void *, struct timespec, @@ -633,6 +645,20 @@ NTSTATUS smbd_do_query_security_desc(connection_struct *conn, uint32_t max_data_count, uint8_t **ppmarshalled_sd, size_t *psd_size); +#ifdef HAVE_SYS_QUOTAS + +struct smb2_query_quota_info; + +NTSTATUS smbd_do_query_getinfo_quota(TALLOC_CTX *mem_ctx, + files_struct *fsp, + bool restart_scan, + bool return_single, + uint32_t sid_list_length, + DATA_BLOB *sidbuffer, + uint32_t max_data_count, + uint8_t **p_data, + uint32_t *p_data_size); +#endif void reply_nttrans(struct smb_request *req); void reply_nttranss(struct smb_request *req); @@ -665,13 +691,16 @@ void msg_file_was_renamed(struct messaging_context *msg, uint32_t msg_type, struct server_id server_id, DATA_BLOB *data); -int find_share_mode_lease(struct share_mode_data *d, - const struct GUID *client_guid, - const struct smb2_lease_key *key); struct share_mode_lease; -struct fsp_lease *find_fsp_lease(files_struct *new_fsp, +NTSTATUS update_share_mode_lease_from_db( + struct share_mode_data *d, + const struct GUID *client_guid, + const struct smb2_lease_key *lease_key); +struct fsp_lease *find_fsp_lease(struct files_struct *new_fsp, const struct smb2_lease_key *key, - const struct share_mode_lease *l); + uint32_t current_state, + uint16_t lease_version, + uint16_t lease_epoch); NTSTATUS create_file_default(connection_struct *conn, struct smb_request *req, uint16_t root_dir_fid, @@ -733,10 +762,6 @@ void message_to_share_mode_entry(struct file_id *id, bool init_oplocks(struct smbd_server_connection *sconn); void init_kernel_oplocks(struct smbd_server_connection *sconn); -/* The following definitions come from smbd/oplock_irix.c */ - -struct kernel_oplocks *irix_init_kernel_oplocks(struct smbd_server_connection *sconn); - /* The following definitions come from smbd/oplock_linux.c */ void linux_set_lease_capability(void); @@ -762,6 +787,8 @@ void reply_pipe_read_and_X(struct smb_request *req); /* The following definitions come from smbd/posix_acls.c */ +mode_t unix_perms_to_acl_perms(mode_t mode, int r_mask, int w_mask, int x_mask); +int map_acl_perms_to_permset(mode_t mode, SMB_ACL_PERMSET_T *p_permset); uint32_t map_canon_ace_perms(int snum, enum security_ace_type *pacl_type, mode_t perms, @@ -782,14 +809,10 @@ NTSTATUS set_nt_acl(files_struct *fsp, uint32_t security_info_sent, const struct int get_acl_group_bits( connection_struct *conn, const struct smb_filename *smb_fname, mode_t *mode); -int chmod_acl(connection_struct *conn, - const struct smb_filename *smb_fname, - mode_t mode); int inherit_access_posix_acl(connection_struct *conn, const char *inherit_from_dir, const struct smb_filename *smb_fname, mode_t mode); -int fchmod_acl(files_struct *fsp, mode_t mode); bool set_unix_posix_default_acl(connection_struct *conn, const struct smb_filename *smb_fname, uint16_t num_def_acls, const char *pdata); @@ -824,8 +847,6 @@ NTSTATUS make_default_filesystem_acl( /* The following definitions come from smbd/process.c */ -void smbd_setup_sig_term_handler(struct smbd_server_connection *sconn); -void smbd_setup_sig_hup_handler(struct smbd_server_connection *sconn); bool srv_send_smb(struct smbXsrv_connection *xconn, char *buffer, bool no_signing, uint32_t seqnum, bool do_encrypt, @@ -1052,8 +1073,7 @@ const struct security_token *sec_ctx_active_token(void); struct memcache *smbd_memcache(void); bool snum_is_shared_printer(int snum); -void delete_and_reload_printers(struct tevent_context *ev, - struct messaging_context *msg_ctx); +void delete_and_reload_printers(void); bool reload_services(struct smbd_server_connection *sconn, bool (*snumused) (struct smbd_server_connection *, int), bool test); @@ -1067,7 +1087,8 @@ void smbd_exit_server_cleanly(const char *const reason) _NORETURN_; bool set_conn_connectpath(connection_struct *conn, const char *connectpath); NTSTATUS set_conn_force_user_group(connection_struct *conn, int snum); -bool set_current_service(connection_struct *conn, uint16_t flags, bool do_chdir); +void set_current_case_sensitive(connection_struct *conn, uint16_t flags); +bool chdir_current_service(connection_struct *conn); void load_registry_shares(void); int add_home_service(const char *service, const char *username, const char *homedir); int find_service(TALLOC_CTX *ctx, const char *service, char **p_service_out); @@ -1201,6 +1222,7 @@ NTSTATUS check_user_share_access(connection_struct *conn, uint32_t *p_share_access, bool *p_readonly_share); bool change_to_user(connection_struct *conn, uint64_t vuid); +bool change_to_user_by_fsp(struct files_struct *fsp); bool smbd_change_to_root_user(void); bool smbd_become_authenticated_pipe_user(struct auth_session_info *session_info); bool smbd_unbecome_authenticated_pipe_user(void); @@ -1209,6 +1231,7 @@ void unbecome_root(void); void smbd_become_root(void); void smbd_unbecome_root(void); bool become_user(connection_struct *conn, uint64_t vuid); +bool become_user_by_fsp(struct files_struct *fsp); bool become_user_by_session(connection_struct *conn, const struct auth_session_info *session_info); bool unbecome_user(void);