X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=source3%2Finclude%2Fproto.h;h=d022a9d13266dfb28da0b91756791b64b8f15801;hb=82641814b287ddf135db55ae237f73f4989390c5;hp=cdc58437f00f33ee50d84f5d6145c4e060c13652;hpb=82c3f505fe2e50022b5102e6388dc3b830d235da;p=metze%2Fsamba%2Fwip.git diff --git a/source3/include/proto.h b/source3/include/proto.h index cdc58437f00f..d022a9d13266 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -440,10 +440,18 @@ int dbwrap_store_int32(struct db_context *db, const char *keystr, int32_t v); bool dbwrap_fetch_uint32(struct db_context *db, const char *keystr, uint32_t *val); int dbwrap_store_uint32(struct db_context *db, const char *keystr, uint32_t v); -uint32_t dbwrap_change_uint32_atomic(struct db_context *db, const char *keystr, +NTSTATUS dbwrap_change_uint32_atomic(struct db_context *db, const char *keystr, uint32_t *oldval, uint32_t change_val); -int32 dbwrap_change_int32_atomic(struct db_context *db, const char *keystr, - int32 *oldval, int32 change_val); +NTSTATUS dbwrap_trans_change_uint32_atomic(struct db_context *db, + const char *keystr, + uint32_t *oldval, + uint32_t change_val); +NTSTATUS dbwrap_change_int32_atomic(struct db_context *db, const char *keystr, + int32_t *oldval, int32_t change_val); +NTSTATUS dbwrap_trans_change_int32_atomic(struct db_context *db, + const char *keystr, + int32_t *oldval, + int32_t change_val); NTSTATUS dbwrap_trans_store(struct db_context *db, TDB_DATA key, TDB_DATA dbuf, int flag); NTSTATUS dbwrap_trans_delete(struct db_context *db, TDB_DATA key); @@ -1333,6 +1341,9 @@ bool is_broadcast_addr(const struct sockaddr *pss); bool interpret_string_addr(struct sockaddr_storage *pss, const char *str, int flags); +bool interpret_string_addr_prefer_ipv4(struct sockaddr_storage *pss, + const char *str, + int flags); bool is_loopback_ip_v4(struct in_addr ip); bool is_loopback_addr(const struct sockaddr *pss); bool is_zero_addr(const struct sockaddr *pss); @@ -3132,7 +3143,8 @@ NTSTATUS internal_resolve_name(const char *name, const char *resolve_order); bool resolve_name(const char *name, struct sockaddr_storage *return_ss, - int name_type); + int name_type, + bool prefer_ipv4); NTSTATUS resolve_name_list(TALLOC_CTX *ctx, const char *name, int name_type, @@ -4175,6 +4187,7 @@ bool lp_administrative_share(int ); bool lp_print_ok(int ); bool lp_map_hidden(int ); bool lp_map_archive(int ); +bool lp_store_create_time(int ); bool lp_store_dos_attributes(int ); bool lp_dmapi_support(int ); bool lp_locking(const struct share_params *p ); @@ -5262,10 +5275,6 @@ struct tevent_req *rpc_api_pipe_req_send(TALLOC_CTX *mem_ctx, prs_struct *req_data); NTSTATUS rpc_api_pipe_req_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, prs_struct *reply_pdu); -NTSTATUS rpc_api_pipe_req(TALLOC_CTX *mem_ctx, struct rpc_pipe_client *cli, - uint8 op_num, - prs_struct *in_data, - prs_struct *out_data); struct tevent_req *rpc_pipe_bind_send(TALLOC_CTX *mem_ctx, struct event_context *ev, struct rpc_pipe_client *cli, @@ -5615,6 +5624,13 @@ void init_samr_CryptPassword(const char *pwd, /* The following definitions come from rpc_client/ndr.c */ +struct tevent_req *cli_do_rpc_ndr_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const struct ndr_interface_table *table, + uint32_t opnum, + void *r); +NTSTATUS cli_do_rpc_ndr_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx); NTSTATUS cli_do_rpc_ndr(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, @@ -6129,9 +6145,7 @@ connection_struct *conn_new(struct smbd_server_connection *sconn); bool conn_close_all(struct smbd_server_connection *sconn); bool conn_idle_all(struct smbd_server_connection *sconn, time_t t); void conn_clear_vuid_caches(struct smbd_server_connection *sconn, uint16 vuid); -void conn_free_internal(connection_struct *conn); -void conn_free(struct smbd_server_connection *sconn, - connection_struct *conn); +void conn_free(connection_struct *conn); void msg_force_tdis(struct messaging_context *msg, void *private_data, uint32_t msg_type, @@ -6168,14 +6182,15 @@ bool make_dir_struct(TALLOC_CTX *ctx, uint32 mode, time_t date, bool uc); -void init_dptrs(void); -char *dptr_path(int key); -char *dptr_wcard(int key); -uint16 dptr_attr(int key); -void dptr_close(int *key); +bool init_dptrs(struct smbd_server_connection *sconn); +char *dptr_path(struct smbd_server_connection *sconn, int key); +char *dptr_wcard(struct smbd_server_connection *sconn, int key); +uint16 dptr_attr(struct smbd_server_connection *sconn, int key); +void dptr_close(struct smbd_server_connection *sconn, int *key); void dptr_closecnum(connection_struct *conn); void dptr_idlecnum(connection_struct *conn); -void dptr_closepath(char *path,uint16 spid); +void dptr_closepath(struct smbd_server_connection *sconn, + char *path,uint16 spid); NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, bool expect_close,uint16 spid, const char *wcard, bool wcard_has_wild, uint32 attr, struct dptr_struct **dptr_ret); int dptr_CloseDir(struct dptr_struct *dptr); @@ -6190,12 +6205,15 @@ char *dptr_ReadDirName(TALLOC_CTX *ctx, bool dptr_SearchDir(struct dptr_struct *dptr, const char *name, long *poffset, SMB_STRUCT_STAT *pst); void dptr_DirCacheAdd(struct dptr_struct *dptr, const char *name, long offset); void dptr_init_search_op(struct dptr_struct *dptr); -bool dptr_fill(char *buf1,unsigned int key); -struct dptr_struct *dptr_fetch(char *buf,int *num); -struct dptr_struct *dptr_fetch_lanman2(int dptr_num); +bool dptr_fill(struct smbd_server_connection *sconn, + char *buf1,unsigned int key); +struct dptr_struct *dptr_fetch(struct smbd_server_connection *sconn, + char *buf,int *num); +struct dptr_struct *dptr_fetch_lanman2(struct smbd_server_connection *sconn, + int dptr_num); bool dir_check_ftype(connection_struct *conn, uint32 mode, uint32 dirtype); bool get_dir_entry(TALLOC_CTX *ctx, - connection_struct *conn, + struct dptr_struct *dirptr, const char *mask, uint32 dirtype, char **pp_fname_out, @@ -6249,6 +6267,19 @@ bool set_sticky_write_time_fsp(struct files_struct *fsp, struct timespec mtime); bool update_write_time(struct files_struct *fsp); +NTSTATUS set_create_timespec_ea(connection_struct *conn, + struct files_struct *fsp, + const struct smb_filename *smb_fname, + struct timespec create_time); + +struct timespec get_create_timespec(connection_struct *conn, + struct files_struct *fsp, + const struct smb_filename *smb_fname); + +struct timespec get_change_timespec(connection_struct *conn, + struct files_struct *fsp, + const struct smb_filename *smb_fname); + /* The following definitions come from smbd/error.c */ bool use_nt_status(void); @@ -6266,11 +6297,12 @@ void reply_openerror(struct smb_request *req, NTSTATUS status); /* The following definitions come from smbd/fake_file.c */ -enum FAKE_FILE_TYPE is_fake_file(const char *fname); +enum FAKE_FILE_TYPE is_fake_file_path(const char *path); +enum FAKE_FILE_TYPE is_fake_file(const struct smb_filename *smb_fname); NTSTATUS open_fake_file(struct smb_request *req, connection_struct *conn, uint16_t current_vuid, enum FAKE_FILE_TYPE fake_file_type, - const char *fname, + const struct smb_filename *smb_fname, uint32 access_mask, files_struct **result); NTSTATUS close_fake_file(struct smb_request *req, files_struct *fsp); @@ -6307,6 +6339,25 @@ int fsp_stat(files_struct *fsp, SMB_STRUCT_STAT *pst); /* The following definitions come from smbd/filename.c */ +NTSTATUS unix_convert(TALLOC_CTX *ctx, + connection_struct *conn, + const char *orig_path, + struct smb_filename **smb_fname, + uint32_t ucf_flags); +NTSTATUS check_name(connection_struct *conn, const char *name); +int get_real_filename(connection_struct *conn, const char *path, + const char *name, TALLOC_CTX *mem_ctx, + char **found_name); +NTSTATUS filename_convert(TALLOC_CTX *mem_ctx, + connection_struct *conn, + bool dfs_path, + const char *name_in, + uint32_t ucf_flags, + bool *ppath_contains_wcard, + struct smb_filename **pp_smb_fname); + +/* The following definitions come from smbd/filename_utils.c */ + NTSTATUS get_full_smb_filename(TALLOC_CTX *ctx, const struct smb_filename *smb_fname, char **full_name); NTSTATUS create_synthetic_smb_fname(TALLOC_CTX *ctx, const char *base_name, @@ -6317,31 +6368,13 @@ NTSTATUS create_synthetic_smb_fname_split(TALLOC_CTX *ctx, const char *fname, const SMB_STRUCT_STAT *psbuf, struct smb_filename **smb_fname_out); -int vfs_stat_smb_fname(struct connection_struct *conn, const char *fname, - SMB_STRUCT_STAT *psbuf); -int vfs_lstat_smb_fname(struct connection_struct *conn, const char *fname, - SMB_STRUCT_STAT *psbuf); const char *smb_fname_str_dbg(const struct smb_filename *smb_fname); +const char *fsp_str_dbg(const struct files_struct *fsp); NTSTATUS copy_smb_filename(TALLOC_CTX *ctx, const struct smb_filename *smb_fname_in, struct smb_filename **smb_fname_out); bool is_ntfs_stream_smb_fname(const struct smb_filename *smb_fname); bool is_ntfs_default_stream_smb_fname(const struct smb_filename *smb_fname); -NTSTATUS unix_convert(TALLOC_CTX *ctx, - connection_struct *conn, - const char *orig_path, - struct smb_filename **smb_fname, - uint32_t ucf_flags); -NTSTATUS check_name(connection_struct *conn, const char *name); -int get_real_filename(connection_struct *conn, const char *path, - const char *name, TALLOC_CTX *mem_ctx, - char **found_name); -NTSTATUS filename_convert(TALLOC_CTX *mem_ctx, - connection_struct *conn, - bool dfs_path, - const char *name_in, - struct smb_filename **pp_smb_fname, - char **pp_name); /* The following definitions come from smbd/files.c */ @@ -6370,7 +6403,6 @@ files_struct *file_fsp(struct smb_request *req, uint16 fid); NTSTATUS dup_file_fsp(struct smb_request *req, files_struct *from, uint32 access_mask, uint32 share_access, uint32 create_options, files_struct *to); -const char *fsp_str_dbg(const struct files_struct *fsp); NTSTATUS fsp_set_smb_fname(struct files_struct *fsp, const struct smb_filename *smb_fname_in); @@ -6590,7 +6622,8 @@ NTSTATUS fcb_or_dos_open(struct smb_request *req, uint32 access_mask, uint32 share_access, uint32 create_options); -bool map_open_params_to_ntcreate(const char *fname, int deny_mode, int open_func, +bool map_open_params_to_ntcreate(const struct smb_filename *smb_fname, + int deny_mode, int open_func, uint32 *paccess_mask, uint32 *pshare_mode, uint32 *pcreate_disposition, @@ -6729,7 +6762,8 @@ int chmod_acl(connection_struct *conn, const char *name, mode_t mode); int inherit_access_posix_acl(connection_struct *conn, const char *inherit_from_dir, const char *name, mode_t mode); int fchmod_acl(files_struct *fsp, mode_t mode); -bool set_unix_posix_default_acl(connection_struct *conn, const char *fname, SMB_STRUCT_STAT *psbuf, +bool set_unix_posix_default_acl(connection_struct *conn, const char *fname, + const SMB_STRUCT_STAT *psbuf, uint16 num_def_acls, const char *pdata); bool set_unix_posix_acl(connection_struct *conn, files_struct *fsp, const char *fname, uint16 num_acls, const char *pdata); SEC_DESC *get_nt_acl_no_snum( TALLOC_CTX *ctx, const char *fname); @@ -6845,7 +6879,8 @@ void reply_ulogoffX(struct smb_request *req); void reply_mknew(struct smb_request *req); void reply_ctemp(struct smb_request *req); NTSTATUS unlink_internals(connection_struct *conn, struct smb_request *req, - uint32 dirtype, const char *name_in, bool has_wild); + uint32 dirtype, struct smb_filename *smb_fname, + bool has_wild); void reply_unlink(struct smb_request *req); void reply_readbraw(struct smb_request *req); void reply_lockread(struct smb_request *req); @@ -6883,8 +6918,8 @@ NTSTATUS rename_internals_fsp(connection_struct *conn, NTSTATUS rename_internals(TALLOC_CTX *ctx, connection_struct *conn, struct smb_request *req, - const char *name_in, - const char *newname_in, + struct smb_filename *smb_fname_src, + struct smb_filename *smb_fname_dst, uint32 attrs, bool replace_if_exists, bool src_has_wild, @@ -6966,8 +7001,7 @@ connection_struct *make_connection(struct smbd_server_connection *sconn, const char *service_in, DATA_BLOB password, const char *pdev, uint16 vuid, NTSTATUS *status); -void close_cnum(struct smbd_server_connection *sconn, - connection_struct *conn, uint16 vuid); +void close_cnum(connection_struct *conn, uint16 vuid); /* The following definitions come from smbd/session.c */ @@ -7087,7 +7121,8 @@ void sys_utmp_claim(const char *username, const char *hostname, /* The following definitions come from smbd/vfs.c */ -NTSTATUS smb_register_vfs(int version, const char *name, const vfs_op_tuple *vfs_op_tuples); +NTSTATUS smb_register_vfs(int version, const char *name, + const struct vfs_fn_pointers *fns); bool vfs_init_custom(connection_struct *conn, const char *vfs_object); void *vfs_add_fsp_extension_notype(vfs_handle_struct *handle, files_struct *fsp, size_t ext_size, @@ -7117,6 +7152,10 @@ char *vfs_readdirname(connection_struct *conn, void *p, SMB_STRUCT_STAT *sbuf); int vfs_ChDir(connection_struct *conn, const char *path); char *vfs_GetWd(TALLOC_CTX *ctx, connection_struct *conn); NTSTATUS check_reduced_name(connection_struct *conn, const char *fname); +int vfs_stat_smb_fname(struct connection_struct *conn, const char *fname, + SMB_STRUCT_STAT *psbuf); +int vfs_lstat_smb_fname(struct connection_struct *conn, const char *fname, + SMB_STRUCT_STAT *psbuf); /* The following definitions come from torture/denytest.c */