X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=source3%2Finclude%2Fproto.h;h=ffc90ffd2c0e62a3b3bf2d3ffb46abe12b181a3b;hb=7d33ec3dfe78723d62f4941684060baeb9c4bda6;hp=36f0235b02f67e43da3fc67e9bd5a2c2502eab88;hpb=bb65187b8978c418bff9cca0881b31b5ad9bb93e;p=samba.git diff --git a/source3/include/proto.h b/source3/include/proto.h index 36f0235b02f..ffc90ffd2c0 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -46,7 +46,7 @@ char *afs_createtoken_str(const char *username, const char *cell); /* The following definitions come from lib/afs_settoken.c */ int afs_syscall( int subcall, - char * path, + const char * path, int cmd, char * cmarg, int follow); @@ -61,31 +61,9 @@ const char *audit_description_str(uint32 category); bool get_audit_category_from_param(const char *param, uint32 *audit_category); const char *audit_policy_str(TALLOC_CTX *mem_ctx, uint32 policy); -/* The following definitions come from lib/bitmap.c */ - -struct bitmap *bitmap_talloc(TALLOC_CTX *mem_ctx, int n); -int bitmap_copy(struct bitmap * const dst, const struct bitmap * const src); -bool bitmap_set(struct bitmap *bm, unsigned i); -bool bitmap_clear(struct bitmap *bm, unsigned i); -bool bitmap_query(struct bitmap *bm, unsigned i); -int bitmap_find(struct bitmap *bm, unsigned ofs); - /* The following definitions come from lib/charcnv.c */ void gfree_charcnv(void); -void init_iconv(void); -bool convert_string(charset_t from, charset_t to, - void const *src, size_t srclen, - void *dest, size_t destlen, - size_t *converted_size); -bool convert_string_error(charset_t from, charset_t to, - void const *src, size_t srclen, - void *dest, size_t destlen, - size_t *converted_size); -char *talloc_strdup_upper(TALLOC_CTX *ctx, const char *s); -char *strupper_talloc(TALLOC_CTX *ctx, const char *s); -char *talloc_strdup_lower(TALLOC_CTX *ctx, const char *s); -char *strlower_talloc(TALLOC_CTX *ctx, const char *s); size_t ucs2_align(const void *base_ptr, const void *p, int flags); size_t push_ascii(void *dest, const char *src, size_t dest_len, int flags); size_t push_ascii_fstring(void *dest, const char *src); @@ -93,17 +71,6 @@ size_t push_ascii_nstring(void *dest, const char *src); size_t pull_ascii(char *dest, const void *src, size_t dest_len, size_t src_len, int flags); size_t pull_ascii_fstring(char *dest, const void *src); size_t pull_ascii_nstring(char *dest, size_t dest_len, const void *src); -size_t push_ucs2(const void *base_ptr, void *dest, const char *src, size_t dest_len, int flags); -bool push_utf8_talloc(TALLOC_CTX *ctx, char **dest, const char *src, - size_t *converted_size); -bool push_ucs2_talloc(TALLOC_CTX *ctx, smb_ucs2_t **dest, const char *src, - size_t *converted_size); -bool pull_utf8_talloc(TALLOC_CTX *ctx, char **dest, const char *src, - size_t *converted_size); -bool pull_ucs2_talloc(TALLOC_CTX *ctx, char **dest, const smb_ucs2_t *src, - size_t *converted_size); -bool pull_ascii_talloc(TALLOC_CTX *ctx, char **dest, const char *src, - size_t *converted_size); size_t push_string_check_fn(void *dest, const char *src, size_t dest_len, int flags); size_t push_string_base(const char *base, uint16 flags2, @@ -218,21 +185,10 @@ void init_ldap_debugging(void); char *escape_ldap_string(TALLOC_CTX *mem_ctx, const char *s); char *escape_rdn_val_string_alloc(const char *s); -/* The following definitions come from lib/module.c */ - -NTSTATUS smb_load_module(const char *module_name); -int smb_load_modules(const char **modules); -NTSTATUS smb_probe_module(const char *subsystem, const char *module); -NTSTATUS smb_load_module(const char *module_name); -int smb_load_modules(const char **modules); -NTSTATUS smb_probe_module(const char *subsystem, const char *module); -void init_modules(void); - /* The following definitions come from lib/ms_fnmatch.c */ int ms_fnmatch(const char *pattern, const char *string, bool translate_pattern, bool is_case_sensitive); -int gen_fnmatch(const char *pattern, const char *string); /* The following definitions come from lib/pidfile.c */ @@ -252,47 +208,6 @@ ssize_t sys_recvfile(int fromfd, size_t count); ssize_t drain_socket(int sockfd, size_t count); -/* The following definitions come from lib/secdesc.c */ - -uint32_t get_sec_info(const struct security_descriptor *sd); -struct security_descriptor *sec_desc_merge(TALLOC_CTX *ctx, struct security_descriptor *new_sdb, struct security_descriptor *old_sdb); -struct sec_desc_buf *sec_desc_merge_buf(TALLOC_CTX *ctx, struct sec_desc_buf *new_sdb, struct sec_desc_buf *old_sdb); -struct security_descriptor *make_sec_desc(TALLOC_CTX *ctx, - enum security_descriptor_revision revision, - uint16 type, - const struct dom_sid *owner_sid, const struct dom_sid *grp_sid, - struct security_acl *sacl, struct security_acl *dacl, size_t *sd_size); -struct security_descriptor *dup_sec_desc(TALLOC_CTX *ctx, const struct security_descriptor *src); -NTSTATUS marshall_sec_desc(TALLOC_CTX *mem_ctx, - struct security_descriptor *secdesc, - uint8 **data, size_t *len); -NTSTATUS marshall_sec_desc_buf(TALLOC_CTX *mem_ctx, - struct sec_desc_buf *secdesc_buf, - uint8_t **data, size_t *len); -NTSTATUS unmarshall_sec_desc(TALLOC_CTX *mem_ctx, uint8 *data, size_t len, - struct security_descriptor **psecdesc); -NTSTATUS unmarshall_sec_desc_buf(TALLOC_CTX *mem_ctx, uint8_t *data, size_t len, - struct sec_desc_buf **psecdesc_buf); -struct security_descriptor *make_standard_sec_desc(TALLOC_CTX *ctx, const struct dom_sid *owner_sid, const struct dom_sid *grp_sid, - struct security_acl *dacl, size_t *sd_size); -struct sec_desc_buf *make_sec_desc_buf(TALLOC_CTX *ctx, size_t len, struct security_descriptor *sec_desc); -struct sec_desc_buf *dup_sec_desc_buf(TALLOC_CTX *ctx, struct sec_desc_buf *src); -NTSTATUS sec_desc_add_sid(TALLOC_CTX *ctx, struct security_descriptor **psd, const struct dom_sid *sid, uint32 mask, size_t *sd_size); -NTSTATUS sec_desc_mod_sid(struct security_descriptor *sd, struct dom_sid *sid, uint32 mask); -NTSTATUS sec_desc_del_sid(TALLOC_CTX *ctx, struct security_descriptor **psd, struct dom_sid *sid, size_t *sd_size); -bool sd_has_inheritable_components(const struct security_descriptor *parent_ctr, bool container); -NTSTATUS se_create_child_secdesc(TALLOC_CTX *ctx, - struct security_descriptor **ppsd, - size_t *psize, - const struct security_descriptor *parent_ctr, - const struct dom_sid *owner_sid, - const struct dom_sid *group_sid, - bool container); -NTSTATUS se_create_child_secdesc_buf(TALLOC_CTX *ctx, - struct sec_desc_buf **ppsdb, - const struct security_descriptor *parent_ctr, - bool container); - /* The following definitions come from lib/sendfile.c */ ssize_t sys_sendfile(int tofd, int fromfd, const DATA_BLOB *header, SMB_OFF_T offset, size_t count); @@ -310,8 +225,10 @@ struct security_descriptor *get_share_security( TALLOC_CTX *ctx, const char *ser size_t *psize); bool set_share_security(const char *share_name, struct security_descriptor *psd); bool delete_share_security(const char *servicename); -bool share_access_check(const struct security_token *token, const char *sharename, - uint32 desired_access); +bool share_access_check(const struct security_token *token, + const char *sharename, + uint32 desired_access, + uint32_t *pgranted); bool parse_usershare_acl(TALLOC_CTX *ctx, const char *acl_str, struct security_descriptor **ppsd); /* The following definitions come from lib/smbrun.c */ @@ -380,60 +297,6 @@ int sys_acl_valid(SMB_ACL_T acl_d); SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, const char *path_p, SMB_ACL_TYPE_T type); SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); -int sys_acl_set_file(vfs_handle_struct *handle, - const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); -int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, - SMB_ACL_T acl_d); -int sys_acl_delete_def_file(vfs_handle_struct *handle, - const char *path); -SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type); -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); -int sys_acl_set_file(vfs_handle_struct *handle, - const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); -int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, - SMB_ACL_T acl_d); -int sys_acl_delete_def_file(vfs_handle_struct *handle, - const char *path); -SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type); -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); -int sys_acl_set_file(vfs_handle_struct *handle, - const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); -int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, - SMB_ACL_T acl_d); -int sys_acl_delete_def_file(vfs_handle_struct *handle, - const char *path); -SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type); -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); -int sys_acl_set_file(vfs_handle_struct *handle, - const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); -int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, - SMB_ACL_T acl_d); -int sys_acl_delete_def_file(vfs_handle_struct *handle, - const char *path); -SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type); -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); -int sys_acl_set_file(vfs_handle_struct *handle, - const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); -int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, - SMB_ACL_T acl_d); -int sys_acl_delete_def_file(vfs_handle_struct *handle, - const char *path); -SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type); -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); -int sys_acl_set_file(vfs_handle_struct *handle, - const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); -int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, - SMB_ACL_T acl_d); -int sys_acl_delete_def_file(vfs_handle_struct *handle, - const char *path); -SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type); -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); int sys_acl_set_file(vfs_handle_struct *handle, const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, @@ -464,7 +327,6 @@ int sys_set_nfs_quota(const char *path, const char *bdev, /* The following definitions come from lib/system.c */ -void *sys_memalign( size_t align, size_t size ); int sys_usleep(long usecs); ssize_t sys_read(int fd, void *buf, size_t count); ssize_t sys_write(int fd, const void *buf, size_t count); @@ -504,7 +366,7 @@ void sys_rewinddir(SMB_STRUCT_DIR *dirp); int sys_closedir(SMB_STRUCT_DIR *dirp); int sys_mknod(const char *path, mode_t mode, SMB_DEV_T dev); int sys_waitpid(pid_t pid,int *status,int options); -char *sys_getwd(char *s); +char *sys_getwd(void); void set_effective_capability(enum smbd_capability capability); void drop_effective_capability(enum smbd_capability capability); long sys_random(void); @@ -542,15 +404,18 @@ int sys_aio_cancel(int fd, SMB_STRUCT_AIOCB *aiocb); int sys_aio_error(const SMB_STRUCT_AIOCB *aiocb); int sys_aio_fsync(int op, SMB_STRUCT_AIOCB *aiocb); int sys_aio_suspend(const SMB_STRUCT_AIOCB * const cblist[], int n, const struct timespec *timeout); -int sys_getpeereid( int s, uid_t *uid); -int sys_getnameinfo(const struct sockaddr *psa, - socklen_t salen, - char *host, - size_t hostlen, - char *service, - size_t servlen, - int flags); -int sys_connect(int fd, const struct sockaddr * addr); + +#if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T) && defined(HAVE_STAT64) +struct stat64; +void init_stat_ex_from_stat (struct stat_ex *dst, + const struct stat64 *src, + bool fake_dir_create_times); +#else +struct stat; +void init_stat_ex_from_stat (struct stat_ex *dst, + const struct stat *src, + bool fake_dir_create_times); +#endif /* The following definitions come from lib/system_smbd.c */ @@ -588,22 +453,12 @@ time_t make_unix_date3(const void *date_ptr, int zone_offset); time_t srv_make_unix_date(const void *date_ptr); time_t srv_make_unix_date2(const void *date_ptr); time_t srv_make_unix_date3(const void *date_ptr); -struct timespec convert_time_t_to_timespec(time_t t); -struct timespec convert_timeval_to_timespec(const struct timeval tv); -struct timeval convert_timespec_to_timeval(const struct timespec ts); -struct timespec timespec_current(void); -struct timespec timespec_min(const struct timespec *ts1, - const struct timespec *ts2); -int timespec_compare(const struct timespec *ts1, const struct timespec *ts2); -void round_timespec_to_sec(struct timespec *ts); -void round_timespec_to_usec(struct timespec *ts); struct timespec interpret_long_date(const char *p); void TimeInit(void); void get_process_uptime(struct timeval *ret_time); void get_startup_time(struct timeval *ret_time); time_t nt_time_to_unix_abs(const NTTIME *nt); time_t uint64s_nt_time_to_unix_abs(const uint64_t *src); -void unix_timespec_to_nt_time(NTTIME *nt, struct timespec ts); void unix_to_nt_time_abs(NTTIME *nt, time_t t); const char *time_to_asc(const time_t t); const char *display_time(NTTIME nttime); @@ -616,11 +471,6 @@ char *get_user_home_dir(TALLOC_CTX *mem_ctx, const char *user); struct passwd *Get_Pwnam_alloc(TALLOC_CTX *mem_ctx, const char *user); /* The following definitions come from lib/util_names.c */ -void gfree_netbios_names(void); -bool set_global_myname(const char *myname); -const char *global_myname(void); -bool set_global_myworkgroup(const char *myworkgroup); -const char *lp_workgroup(void); const char *get_global_sam_name(void); /* The following definitions come from lib/util.c */ @@ -628,8 +478,6 @@ const char *get_global_sam_name(void); enum protocol_types get_Protocol(void); void set_Protocol(enum protocol_types p); bool all_zero(const uint8_t *ptr, size_t size); -bool set_global_scope(const char *scope); -const char *global_scope(void); void gfree_names(void); void gfree_all( void ); const char *my_netbios_names(int i); @@ -640,8 +488,7 @@ bool file_exist_stat(const char *fname,SMB_STRUCT_STAT *sbuf, bool socket_exist(const char *fname); uint64_t get_file_size_stat(const SMB_STRUCT_STAT *sbuf); SMB_OFF_T get_file_size(char *file_name); -char *attrib_string(uint16 mode); -void show_msg(char *buf); +void show_msg(const char *buf); void smb_set_enclen(char *buf,int len,uint16 enc_ctx_num); void smb_setlen(char *buf,int len); int set_message_bcc(char *buf,int num_bytes); @@ -692,14 +539,11 @@ int set_maxfiles(int requested_max); int smb_mkstemp(char *name_template); void *smb_xmalloc_array(size_t size, unsigned int count); char *myhostname(void); +char *myhostname_upper(void); char *lock_path(const char *name); char *pid_path(const char *name); -char *lib_path(const char *name); -char *modules_path(const char *name); -char *data_path(const char *name); char *state_path(const char *name); char *cache_path(const char *name); -const char *shlib_ext(void); bool parent_dirname(TALLOC_CTX *mem_ctx, const char *dir, char **parent, const char **name); bool ms_has_wild(const char *s); @@ -722,7 +566,6 @@ bool cluster_id_equal(const struct server_id *id1, const struct server_id *id2); bool procid_is_me(const struct server_id *pid); struct server_id interpret_pid(const char *pid_string); -char *procid_str(TALLOC_CTX *mem_ctx, const struct server_id *pid); char *procid_str_static(const struct server_id *pid); bool procid_valid(const struct server_id *pid); bool procid_is_local(const struct server_id *pid); @@ -736,17 +579,22 @@ void split_domain_user(TALLOC_CTX *mem_ctx, const char *full_name, char **domain, char **user); -void *_talloc_zero_zeronull(const void *ctx, size_t size, const char *name); -void *_talloc_memdup_zeronull(const void *t, const void *p, size_t size, const char *name); -void *_talloc_array_zeronull(const void *ctx, size_t el_size, unsigned count, const char *name); -void *_talloc_zero_array_zeronull(const void *ctx, size_t el_size, unsigned count, const char *name); -void *talloc_zeronull(const void *context, size_t size, const char *name); const char *strip_hostname(const char *s); bool tevent_req_poll_ntstatus(struct tevent_req *req, struct tevent_context *ev, NTSTATUS *status); bool any_nt_status_not_ok(NTSTATUS err1, NTSTATUS err2, NTSTATUS *result); int timeval_to_msec(struct timeval t); +char *valid_share_pathname(TALLOC_CTX *ctx, const char *dos_pathname); +bool is_executable(const char *fname); +bool map_open_params_to_ntcreate(const char *smb_base_fname, + int deny_mode, int open_func, + uint32 *paccess_mask, + uint32 *pshare_mode, + uint32 *pcreate_disposition, + uint32 *pcreate_options, + uint32_t *pprivate_flags); +void init_modules(void); /* The following definitions come from lib/util_cmdline.c */ @@ -778,8 +626,6 @@ void set_cmdline_auth_info_use_machine_account(struct user_auth_info *auth_info) bool get_cmdline_auth_info_got_pass(const struct user_auth_info *auth_info); bool get_cmdline_auth_info_smb_encrypt(const struct user_auth_info *auth_info); bool get_cmdline_auth_info_use_machine_account(const struct user_auth_info *auth_info); -struct user_auth_info *get_cmdline_auth_info_copy(TALLOC_CTX *mem_ctx, - const struct user_auth_info *info); bool set_cmdline_auth_info_machine_account_creds(struct user_auth_info *auth_info); void set_cmdline_auth_info_getpass(struct user_auth_info *auth_info); @@ -872,10 +718,6 @@ int get_socket_port(int fd); const char *client_addr(int fd, char *addr, size_t addrlen); const char *client_socket_addr(int fd, char *addr, size_t addr_len); int client_socket_port(int fd); -void set_smb_read_error(enum smb_read_errors *pre, - enum smb_read_errors newerr); -void cond_set_smb_read_error(enum smb_read_errors *pre, - enum smb_read_errors newerr); bool is_a_socket(int fd); void set_socket_options(int fd, const char *options); ssize_t read_udp_v4_socket(int fd, @@ -922,9 +764,17 @@ NTSTATUS open_socket_out_defer_recv(struct tevent_req *req, int *pfd); int open_udp_socket(const char *host, int port); const char *get_peer_name(int fd, bool force_lookup); const char *get_peer_addr(int fd, char *addr, size_t addr_len); + +struct tsocket_address; + +int get_remote_hostname(const struct tsocket_address *remote_address, + char **name, + TALLOC_CTX *mem_ctx); + int create_pipe_sock(const char *socket_dir, const char *socket_name, mode_t dir_perms); +int create_tcpip_socket(const struct sockaddr_storage *ifss, uint16_t *port); const char *get_mydnsfullname(void); bool is_myname_or_ipaddr(const char *s); struct tevent_req *getaddrinfo_send(TALLOC_CTX *mem_ctx, @@ -936,6 +786,7 @@ struct tevent_req *getaddrinfo_send(TALLOC_CTX *mem_ctx, int getaddrinfo_recv(struct tevent_req *req, struct addrinfo **res); int poll_one_fd(int fd, int events, int timeout, int *revents); int poll_intr_one_fd(int fd, int events, int timeout, int *revents); +struct tstream_context; struct tevent_req *tstream_read_packet_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct tstream_context *stream, @@ -950,8 +801,6 @@ ssize_t tstream_read_packet_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, /* The following definitions come from lib/util_str.c */ bool next_token(const char **ptr, char *buff, const char *sep, size_t bufsize); -int StrCaseCmp(const char *s, const char *t); -int StrnCaseCmp(const char *s, const char *t, size_t len); bool strnequal(const char *s1,const char *s2,size_t n); bool strcsequal(const char *s1,const char *s2); void strnorm(char *s, int case_default); @@ -961,22 +810,10 @@ size_t str_charnum(const char *s); bool trim_char(char *s,char cfront,char cback); bool strhasupper(const char *s); bool strhaslower(const char *s); -char *safe_strcpy_fn(char *dest, - const char *src, - size_t maxlength); -char *safe_strcat_fn(char *dest, - const char *src, - size_t maxlength); char *StrnCpy(char *dest,const char *src,size_t n); bool in_list(const char *s, const char *list, bool casesensitive); void string_free(char **s); bool string_set(char **dest,const char *src); -void string_sub2(char *s,const char *pattern, const char *insert, size_t len, - bool remove_unsafe_characters, bool replace_once, - bool allow_trailing_dollar); -void string_sub_once(char *s, const char *pattern, - const char *insert, size_t len); -void string_sub(char *s,const char *pattern, const char *insert, size_t len); void fstring_sub(char *s,const char *pattern,const char *insert); char *realloc_string_sub2(char *string, const char *pattern, @@ -1023,7 +860,7 @@ char *ipstr_list_make(char **ipstr_list, int ipstr_list_parse(const char *ipstr_list, struct ip_service **ip_list); void ipstr_list_free(char* ipstr_list); uint64_t STR_TO_SMB_BIG_UINT(const char *nptr, const char **entptr); -SMB_OFF_T conv_str_size(const char * str); +uint64_t conv_str_size(const char * str); bool add_string_to_array(TALLOC_CTX *mem_ctx, const char *str, const char ***strings, int *num); @@ -1032,13 +869,11 @@ void sprintf_append(TALLOC_CTX *mem_ctx, char **string, ssize_t *len, int asprintf_strupper_m(char **strp, const char *fmt, ...); char *talloc_asprintf_strupper_m(TALLOC_CTX *t, const char *fmt, ...); char *talloc_asprintf_strlower_m(TALLOC_CTX *t, const char *fmt, ...); -char *sstring_sub(const char *src, char front, char back); bool validate_net_name( const char *name, const char *invalid_chars, int max_len); char *escape_shell_string(const char *src); char **str_list_make_v3(TALLOC_CTX *mem_ctx, const char *string, const char *sep); -char *sanitize_username(TALLOC_CTX *mem_ctx, const char *username); /* The following definitions come from lib/version.c */ @@ -1053,746 +888,10 @@ unsigned wins_srv_count(void); char **wins_srv_tags(void); void wins_srv_tags_free(char **list); struct in_addr wins_srv_ip_tag(const char *tag, struct in_addr src_ip); +bool wins_server_tag_ips(const char *tag, TALLOC_CTX *mem_ctx, + struct in_addr **pservers, int *pnum_servers); unsigned wins_srv_count_tag(const char *tag); -/* The following definitions come from libsmb/cliconnect.c */ - -ADS_STATUS cli_session_setup_spnego(struct cli_state *cli, const char *user, - const char *pass, const char *user_domain, - const char * dest_realm); - -NTSTATUS cli_session_setup(struct cli_state *cli, - const char *user, - const char *pass, int passlen, - const char *ntpass, int ntpasslen, - const char *workgroup); -struct tevent_req *cli_session_setup_guest_create(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - struct tevent_req **psmbreq); -struct tevent_req *cli_session_setup_guest_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli); -NTSTATUS cli_session_setup_guest_recv(struct tevent_req *req); -struct tevent_req *cli_ulogoff_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli); -NTSTATUS cli_ulogoff_recv(struct tevent_req *req); -NTSTATUS cli_ulogoff(struct cli_state *cli); -struct tevent_req *cli_tcon_andx_create(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *share, const char *dev, - const char *pass, int passlen, - struct tevent_req **psmbreq); -struct tevent_req *cli_tcon_andx_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *share, const char *dev, - const char *pass, int passlen); -NTSTATUS cli_tcon_andx_recv(struct tevent_req *req); -NTSTATUS cli_tcon_andx(struct cli_state *cli, const char *share, - const char *dev, const char *pass, int passlen); -struct tevent_req *cli_tdis_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli); -NTSTATUS cli_tdis_recv(struct tevent_req *req); -NTSTATUS cli_tdis(struct cli_state *cli); -NTSTATUS cli_negprot(struct cli_state *cli); -struct tevent_req *cli_negprot_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli); -NTSTATUS cli_negprot_recv(struct tevent_req *req); -bool cli_session_request(struct cli_state *cli, - struct nmb_name *calling, struct nmb_name *called); -NTSTATUS cli_connect(struct cli_state *cli, - const char *host, - struct sockaddr_storage *dest_ss); -NTSTATUS cli_start_connection(struct cli_state **output_cli, - const char *my_name, - const char *dest_host, - struct sockaddr_storage *dest_ss, int port, - int signing_state, int flags); -NTSTATUS cli_full_connection(struct cli_state **output_cli, - const char *my_name, - const char *dest_host, - struct sockaddr_storage *dest_ss, int port, - const char *service, const char *service_type, - const char *user, const char *domain, - const char *password, int flags, - int signing_state); -bool attempt_netbios_session_request(struct cli_state **ppcli, const char *srchost, const char *desthost, - struct sockaddr_storage *pdest_ss); -NTSTATUS cli_raw_tcon(struct cli_state *cli, - const char *service, const char *pass, const char *dev, - uint16 *max_xmit, uint16 *tid); -struct cli_state *get_ipc_connect(char *server, - struct sockaddr_storage *server_ss, - const struct user_auth_info *user_info); -struct cli_state *get_ipc_connect_master_ip(TALLOC_CTX *ctx, - struct ip_service *mb_ip, - const struct user_auth_info *user_info, - char **pp_workgroup_out); -struct cli_state *get_ipc_connect_master_ip_bcast(TALLOC_CTX *ctx, - const struct user_auth_info *user_info, - char **pp_workgroup_out); - -/* The following definitions come from libsmb/clidfs.c */ - -NTSTATUS cli_cm_force_encryption(struct cli_state *c, - const char *username, - const char *password, - const char *domain, - const char *sharename); -struct cli_state *cli_cm_open(TALLOC_CTX *ctx, - struct cli_state *referring_cli, - const char *server, - const char *share, - const struct user_auth_info *auth_info, - bool show_hdr, - bool force_encrypt, - int max_protocol, - int port, - int name_type); -void cli_cm_display(const struct cli_state *c); -struct client_dfs_referral; -NTSTATUS cli_dfs_get_referral(TALLOC_CTX *ctx, - struct cli_state *cli, - const char *path, - struct client_dfs_referral **refs, - size_t *num_refs, - size_t *consumed); -bool cli_resolve_path(TALLOC_CTX *ctx, - const char *mountpt, - const struct user_auth_info *dfs_auth_info, - struct cli_state *rootcli, - const char *path, - struct cli_state **targetcli, - char **pp_targetpath); - -bool cli_check_msdfs_proxy(TALLOC_CTX *ctx, - struct cli_state *cli, - const char *sharename, - char **pp_newserver, - char **pp_newshare, - bool force_encrypt, - const char *username, - const char *password, - const char *domain); - -/* The following definitions come from libsmb/clientgen.c */ - -int cli_set_message(char *buf,int num_words,int num_bytes,bool zero); -unsigned int cli_set_timeout(struct cli_state *cli, unsigned int timeout); -void cli_set_port(struct cli_state *cli, int port); -bool cli_state_seqnum_persistent(struct cli_state *cli, - uint16_t mid); -bool cli_state_seqnum_remove(struct cli_state *cli, - uint16_t mid); -bool cli_receive_smb(struct cli_state *cli); -bool cli_send_smb(struct cli_state *cli); -bool cli_send_smb_direct_writeX(struct cli_state *cli, - const char *p, - size_t extradata); -void cli_setup_packet_buf(struct cli_state *cli, char *buf); -void cli_setup_packet(struct cli_state *cli); -void cli_setup_bcc(struct cli_state *cli, void *p); -NTSTATUS cli_set_domain(struct cli_state *cli, const char *domain); -NTSTATUS cli_set_username(struct cli_state *cli, const char *username); -NTSTATUS cli_set_password(struct cli_state *cli, const char *password); -NTSTATUS cli_init_creds(struct cli_state *cli, const char *username, const char *domain, const char *password); -struct cli_state *cli_initialise(void); -struct cli_state *cli_initialise_ex(int signing_state); -void cli_nt_pipes_close(struct cli_state *cli); -void cli_shutdown(struct cli_state *cli); -void cli_sockopt(struct cli_state *cli, const char *options); -uint16 cli_setpid(struct cli_state *cli, uint16 pid); -bool cli_set_case_sensitive(struct cli_state *cli, bool case_sensitive); -struct tevent_req *cli_echo_send(TALLOC_CTX *mem_ctx, struct event_context *ev, - struct cli_state *cli, uint16_t num_echos, - DATA_BLOB data); -NTSTATUS cli_echo_recv(struct tevent_req *req); -NTSTATUS cli_echo(struct cli_state *cli, uint16_t num_echos, DATA_BLOB data); -bool cli_ucs2(struct cli_state *cli); -bool is_andx_req(uint8_t cmd); -NTSTATUS cli_smb(TALLOC_CTX *mem_ctx, struct cli_state *cli, - uint8_t smb_command, uint8_t additional_flags, - uint8_t wct, uint16_t *vwv, - uint32_t num_bytes, const uint8_t *bytes, - struct tevent_req **result_parent, - uint8_t min_wct, uint8_t *pwct, uint16_t **pvwv, - uint32_t *pnum_bytes, uint8_t **pbytes); - -/* The following definitions come from libsmb/clierror.c */ - -const char *cli_errstr(struct cli_state *cli); -NTSTATUS cli_nt_error(struct cli_state *cli); -void cli_dos_error(struct cli_state *cli, uint8 *eclass, uint32 *ecode); -int cli_errno(struct cli_state *cli); -bool cli_is_error(struct cli_state *cli); -bool cli_is_nt_error(struct cli_state *cli); -bool cli_is_dos_error(struct cli_state *cli); -NTSTATUS cli_get_nt_error(struct cli_state *cli); -void cli_set_nt_error(struct cli_state *cli, NTSTATUS status); -void cli_reset_error(struct cli_state *cli); -bool cli_state_is_connected(struct cli_state *cli); - -/* The following definitions come from libsmb/clifile.c */ - -struct tevent_req *cli_setpathinfo_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli, - uint16_t level, - const char *path, - uint8_t *data, - size_t data_len); -NTSTATUS cli_setpathinfo_recv(struct tevent_req *req); -NTSTATUS cli_setpathinfo(struct cli_state *cli, - uint16_t level, - const char *path, - uint8_t *data, - size_t data_len); - -struct tevent_req *cli_posix_symlink_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *oldname, - const char *newname); -NTSTATUS cli_posix_symlink_recv(struct tevent_req *req); -NTSTATUS cli_posix_symlink(struct cli_state *cli, - const char *oldname, - const char *newname); -struct tevent_req *cli_posix_readlink_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - size_t len); -NTSTATUS cli_posix_readlink_recv(struct tevent_req *req, struct cli_state *cli, - char *retpath, size_t len); -NTSTATUS cli_posix_readlink(struct cli_state *cli, const char *fname, - char *linkpath, size_t len); -struct tevent_req *cli_posix_hardlink_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *oldname, - const char *newname); -NTSTATUS cli_posix_hardlink_recv(struct tevent_req *req); -NTSTATUS cli_posix_hardlink(struct cli_state *cli, - const char *oldname, - const char *newname); -uint32_t unix_perms_to_wire(mode_t perms); -mode_t wire_perms_to_unix(uint32_t perms); -struct tevent_req *cli_posix_getfacl_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname); -NTSTATUS cli_posix_getfacl_recv(struct tevent_req *req, - TALLOC_CTX *mem_ctx, - size_t *prb_size, - char **retbuf); -NTSTATUS cli_posix_getfacl(struct cli_state *cli, - const char *fname, - TALLOC_CTX *mem_ctx, - size_t *prb_size, - char **retbuf); -struct tevent_req *cli_posix_stat_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname); -NTSTATUS cli_posix_stat_recv(struct tevent_req *req, - SMB_STRUCT_STAT *sbuf); -NTSTATUS cli_posix_stat(struct cli_state *cli, - const char *fname, - SMB_STRUCT_STAT *sbuf); -struct tevent_req *cli_posix_chmod_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - mode_t mode); -NTSTATUS cli_posix_chmod_recv(struct tevent_req *req); -NTSTATUS cli_posix_chmod(struct cli_state *cli, const char *fname, mode_t mode); -struct tevent_req *cli_posix_chown_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - uid_t uid, - gid_t gid); -NTSTATUS cli_posix_chown_recv(struct tevent_req *req); -NTSTATUS cli_posix_chown(struct cli_state *cli, - const char *fname, - uid_t uid, - gid_t gid); -struct tevent_req *cli_rename_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname_src, - const char *fname_dst); -NTSTATUS cli_rename_recv(struct tevent_req *req); -NTSTATUS cli_rename(struct cli_state *cli, const char *fname_src, const char *fname_dst); -struct tevent_req *cli_ntrename_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname_src, - const char *fname_dst); -NTSTATUS cli_ntrename_recv(struct tevent_req *req); -NTSTATUS cli_ntrename(struct cli_state *cli, const char *fname_src, const char *fname_dst); - -struct tevent_req *cli_nt_hardlink_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname_src, - const char *fname_dst); -NTSTATUS cli_nt_hardlink_recv(struct tevent_req *req); -NTSTATUS cli_nt_hardlink(struct cli_state *cli, const char *fname_src, const char *fname_dst); - -struct tevent_req *cli_unlink_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - uint16_t mayhave_attrs); -NTSTATUS cli_unlink_recv(struct tevent_req *req); -NTSTATUS cli_unlink(struct cli_state *cli, const char *fname, uint16_t mayhave_attrs); - -struct tevent_req *cli_mkdir_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *dname); -NTSTATUS cli_mkdir_recv(struct tevent_req *req); -NTSTATUS cli_mkdir(struct cli_state *cli, const char *dname); -struct tevent_req *cli_rmdir_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *dname); -NTSTATUS cli_rmdir_recv(struct tevent_req *req); -NTSTATUS cli_rmdir(struct cli_state *cli, const char *dname); -struct tevent_req *cli_nt_delete_on_close_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, - bool flag); -NTSTATUS cli_nt_delete_on_close_recv(struct tevent_req *req); -NTSTATUS cli_nt_delete_on_close(struct cli_state *cli, uint16_t fnum, bool flag); -struct tevent_req *cli_ntcreate_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - uint32_t CreatFlags, - uint32_t DesiredAccess, - uint32_t FileAttributes, - uint32_t ShareAccess, - uint32_t CreateDisposition, - uint32_t CreateOptions, - uint8_t SecurityFlags); -NTSTATUS cli_ntcreate_recv(struct tevent_req *req, uint16_t *pfnum); -NTSTATUS cli_ntcreate(struct cli_state *cli, - const char *fname, - uint32_t CreatFlags, - uint32_t DesiredAccess, - uint32_t FileAttributes, - uint32_t ShareAccess, - uint32_t CreateDisposition, - uint32_t CreateOptions, - uint8_t SecurityFlags, - uint16_t *pfid); -uint8_t *smb_bytes_push_str(uint8_t *buf, bool ucs2, const char *str, - size_t str_len, size_t *pconverted_size); -uint8_t *smb_bytes_push_bytes(uint8_t *buf, uint8_t prefix, - const uint8_t *bytes, size_t num_bytes); -struct tevent_req *cli_open_create(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, const char *fname, - int flags, int share_mode, - struct tevent_req **psmbreq); -struct tevent_req *cli_open_send(TALLOC_CTX *mem_ctx, struct event_context *ev, - struct cli_state *cli, const char *fname, - int flags, int share_mode); -NTSTATUS cli_open_recv(struct tevent_req *req, uint16_t *fnum); -NTSTATUS cli_open(struct cli_state *cli, const char *fname, int flags, int share_mode, uint16_t *pfnum); -struct tevent_req *cli_close_create(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, uint16_t fnum, - struct tevent_req **psubreq); -struct tevent_req *cli_close_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, uint16_t fnum); -NTSTATUS cli_close_recv(struct tevent_req *req); -NTSTATUS cli_close(struct cli_state *cli, uint16_t fnum); -struct tevent_req *cli_ftruncate_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, - uint64_t size); -NTSTATUS cli_ftruncate_recv(struct tevent_req *req); -NTSTATUS cli_ftruncate(struct cli_state *cli, uint16_t fnum, uint64_t size); -NTSTATUS cli_locktype(struct cli_state *cli, uint16_t fnum, - uint32_t offset, uint32_t len, - int timeout, unsigned char locktype); -bool cli_lock(struct cli_state *cli, uint16_t fnum, - uint32_t offset, uint32_t len, int timeout, enum brl_type lock_type); -struct tevent_req *cli_unlock_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, - uint64_t offset, - uint64_t len); -NTSTATUS cli_unlock_recv(struct tevent_req *req); -NTSTATUS cli_unlock(struct cli_state *cli, uint16_t fnum, uint32_t offset, uint32_t len); -bool cli_lock64(struct cli_state *cli, uint16_t fnum, - uint64_t offset, uint64_t len, int timeout, enum brl_type lock_type); -struct tevent_req *cli_unlock64_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, - uint64_t offset, - uint64_t len); -NTSTATUS cli_unlock64_recv(struct tevent_req *req); -NTSTATUS cli_unlock64(struct cli_state *cli, uint16_t fnum, uint64_t offset, uint64_t len); -struct tevent_req *cli_posix_lock_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, - uint64_t offset, - uint64_t len, - bool wait_lock, - enum brl_type lock_type); -NTSTATUS cli_posix_lock_recv(struct tevent_req *req); -NTSTATUS cli_posix_lock(struct cli_state *cli, uint16_t fnum, - uint64_t offset, uint64_t len, - bool wait_lock, enum brl_type lock_type); -struct tevent_req *cli_posix_unlock_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, - uint64_t offset, - uint64_t len); -NTSTATUS cli_posix_unlock_recv(struct tevent_req *req); -NTSTATUS cli_posix_unlock(struct cli_state *cli, uint16_t fnum, uint64_t offset, uint64_t len); -struct tevent_req *cli_getattrE_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum); -NTSTATUS cli_getattrE_recv(struct tevent_req *req, - uint16_t *attr, - SMB_OFF_T *size, - time_t *change_time, - time_t *access_time, - time_t *write_time); -NTSTATUS cli_getattrE(struct cli_state *cli, - uint16_t fnum, - uint16_t *attr, - SMB_OFF_T *size, - time_t *change_time, - time_t *access_time, - time_t *write_time); -struct tevent_req *cli_setattrE_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, - time_t change_time, - time_t access_time, - time_t write_time); -NTSTATUS cli_setattrE_recv(struct tevent_req *req); -NTSTATUS cli_setattrE(struct cli_state *cli, - uint16_t fnum, - time_t change_time, - time_t access_time, - time_t write_time); -struct tevent_req *cli_getatr_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname); -NTSTATUS cli_getatr_recv(struct tevent_req *req, - uint16_t *attr, - SMB_OFF_T *size, - time_t *write_time); -NTSTATUS cli_getatr(struct cli_state *cli, - const char *fname, - uint16_t *attr, - SMB_OFF_T *size, - time_t *write_time); -struct tevent_req *cli_setatr_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - uint16_t attr, - time_t mtime); -NTSTATUS cli_setatr_recv(struct tevent_req *req); -NTSTATUS cli_setatr(struct cli_state *cli, - const char *fname, - uint16_t attr, - time_t mtime); -struct tevent_req *cli_chkpath_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname); -NTSTATUS cli_chkpath_recv(struct tevent_req *req); -NTSTATUS cli_chkpath(struct cli_state *cli, const char *path); -struct tevent_req *cli_dskattr_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli); -NTSTATUS cli_dskattr_recv(struct tevent_req *req, int *bsize, int *total, - int *avail); -NTSTATUS cli_dskattr(struct cli_state *cli, int *bsize, int *total, int *avail); -struct tevent_req *cli_ctemp_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *path); -NTSTATUS cli_ctemp_recv(struct tevent_req *req, - TALLOC_CTX *ctx, - uint16_t *pfnum, - char **outfile); -NTSTATUS cli_ctemp(struct cli_state *cli, - TALLOC_CTX *ctx, - const char *path, - uint16_t *pfnum, - char **out_path); -NTSTATUS cli_raw_ioctl(struct cli_state *cli, uint16_t fnum, uint32_t code, DATA_BLOB *blob); -NTSTATUS cli_set_ea_path(struct cli_state *cli, const char *path, - const char *ea_name, const char *ea_val, - size_t ea_len); -NTSTATUS cli_set_ea_fnum(struct cli_state *cli, uint16_t fnum, - const char *ea_name, const char *ea_val, - size_t ea_len); -struct tevent_req *cli_get_ea_list_path_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli, - const char *fname); -NTSTATUS cli_get_ea_list_path_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, - size_t *pnum_eas, struct ea_struct **peas); -NTSTATUS cli_get_ea_list_path(struct cli_state *cli, const char *path, - TALLOC_CTX *ctx, - size_t *pnum_eas, - struct ea_struct **pea_list); -struct tevent_req *cli_posix_open_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - int flags, - mode_t mode); -NTSTATUS cli_posix_open_recv(struct tevent_req *req, uint16_t *pfnum); -NTSTATUS cli_posix_open(struct cli_state *cli, const char *fname, - int flags, mode_t mode, uint16_t *fnum); -struct tevent_req *cli_posix_mkdir_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - mode_t mode); -NTSTATUS cli_posix_mkdir_recv(struct tevent_req *req); -NTSTATUS cli_posix_mkdir(struct cli_state *cli, const char *fname, mode_t mode); - -struct tevent_req *cli_posix_unlink_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname); -NTSTATUS cli_posix_unlink_recv(struct tevent_req *req); -NTSTATUS cli_posix_unlink(struct cli_state *cli, const char *fname); - -struct tevent_req *cli_posix_rmdir_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname); -NTSTATUS cli_posix_rmdir_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx); -NTSTATUS cli_posix_rmdir(struct cli_state *cli, const char *fname); -struct tevent_req *cli_notify_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli, uint16_t fnum, - uint32_t buffer_size, - uint32_t completion_filter, bool recursive); -NTSTATUS cli_notify_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, - uint32_t *pnum_changes, - struct notify_change **pchanges); - -/* The following definitions come from libsmb/clifsinfo.c */ - -struct tevent_req *cli_unix_extensions_version_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli); -NTSTATUS cli_unix_extensions_version_recv(struct tevent_req *req, - uint16_t *pmajor, uint16_t *pminor, - uint32_t *pcaplow, - uint32_t *pcaphigh); -NTSTATUS cli_unix_extensions_version(struct cli_state *cli, uint16 *pmajor, - uint16 *pminor, uint32 *pcaplow, - uint32 *pcaphigh); -struct tevent_req *cli_set_unix_extensions_capabilities_send( - TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct cli_state *cli, - uint16_t major, uint16_t minor, uint32_t caplow, uint32_t caphigh); -NTSTATUS cli_set_unix_extensions_capabilities_recv(struct tevent_req *req); -NTSTATUS cli_set_unix_extensions_capabilities(struct cli_state *cli, - uint16 major, uint16 minor, - uint32 caplow, uint32 caphigh); -struct tevent_req *cli_get_fs_attr_info_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli); -NTSTATUS cli_get_fs_attr_info_recv(struct tevent_req *req, uint32_t *fs_attr); -NTSTATUS cli_get_fs_attr_info(struct cli_state *cli, uint32_t *fs_attr); -NTSTATUS cli_get_fs_volume_info(struct cli_state *cli, fstring volume_name, - uint32 *pserial_number, time_t *pdate); -NTSTATUS cli_get_fs_full_size_info(struct cli_state *cli, - uint64_t *total_allocation_units, - uint64_t *caller_allocation_units, - uint64_t *actual_allocation_units, - uint64_t *sectors_per_allocation_unit, - uint64_t *bytes_per_sector); -NTSTATUS cli_get_posix_fs_info(struct cli_state *cli, - uint32 *optimal_transfer_size, - uint32 *block_size, - uint64_t *total_blocks, - uint64_t *blocks_available, - uint64_t *user_blocks_available, - uint64_t *total_file_nodes, - uint64_t *free_file_nodes, - uint64_t *fs_identifier); -NTSTATUS cli_raw_ntlm_smb_encryption_start(struct cli_state *cli, - const char *user, - const char *pass, - const char *domain); -NTSTATUS cli_gss_smb_encryption_start(struct cli_state *cli); -NTSTATUS cli_force_encryption(struct cli_state *c, - const char *username, - const char *password, - const char *domain); - -/* The following definitions come from libsmb/clikrb5.c */ - -bool unwrap_edata_ntstatus(TALLOC_CTX *mem_ctx, - DATA_BLOB *edata, - DATA_BLOB *edata_out); -bool unwrap_pac(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, DATA_BLOB *unwrapped_pac_data); - -/* The following definitions come from libsmb/clilist.c */ - -NTSTATUS cli_list_old(struct cli_state *cli,const char *Mask,uint16 attribute, - NTSTATUS (*fn)(const char *, struct file_info *, - const char *, void *), void *state); -NTSTATUS cli_list_trans(struct cli_state *cli, const char *mask, - uint16_t attribute, int info_level, - NTSTATUS (*fn)(const char *mnt, struct file_info *finfo, - const char *mask, void *private_data), - void *private_data); -struct tevent_req *cli_list_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli, - const char *mask, - uint16_t attribute, - uint16_t info_level); -NTSTATUS cli_list_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, - struct file_info **finfo, size_t *num_finfo); -NTSTATUS cli_list(struct cli_state *cli,const char *Mask,uint16 attribute, - NTSTATUS (*fn)(const char *, struct file_info *, const char *, - void *), void *state); - -/* The following definitions come from libsmb/climessage.c */ - -struct tevent_req *cli_message_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli, - const char *host, const char *username, - const char *message); -NTSTATUS cli_message_recv(struct tevent_req *req); -NTSTATUS cli_message(struct cli_state *cli, const char *host, - const char *username, const char *message); - -/* The following definitions come from libsmb/clioplock.c */ - -struct tevent_req *cli_oplock_ack_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli, - uint16_t fnum, uint8_t level); -NTSTATUS cli_oplock_ack_recv(struct tevent_req *req); -NTSTATUS cli_oplock_ack(struct cli_state *cli, uint16_t fnum, unsigned char level); -void cli_oplock_handler(struct cli_state *cli, - NTSTATUS (*handler)(struct cli_state *, uint16_t, unsigned char)); - -/* The following definitions come from libsmb/cliprint.c */ - -int cli_print_queue(struct cli_state *cli, - void (*fn)(struct print_job_info *)); -int cli_printjob_del(struct cli_state *cli, int job); - -/* The following definitions come from libsmb/cliquota.c */ - -NTSTATUS cli_get_quota_handle(struct cli_state *cli, uint16_t *quota_fnum); -void free_ntquota_list(SMB_NTQUOTA_LIST **qt_list); -NTSTATUS cli_get_user_quota(struct cli_state *cli, int quota_fnum, - SMB_NTQUOTA_STRUCT *pqt); -NTSTATUS cli_set_user_quota(struct cli_state *cli, int quota_fnum, - SMB_NTQUOTA_STRUCT *pqt); -NTSTATUS cli_list_user_quota(struct cli_state *cli, int quota_fnum, - SMB_NTQUOTA_LIST **pqt_list); -NTSTATUS cli_get_fs_quota_info(struct cli_state *cli, int quota_fnum, - SMB_NTQUOTA_STRUCT *pqt); -NTSTATUS cli_set_fs_quota_info(struct cli_state *cli, int quota_fnum, - SMB_NTQUOTA_STRUCT *pqt); - -/* The following definitions come from libsmb/clireadwrite.c */ - -struct tevent_req *cli_read_andx_create(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, uint16_t fnum, - off_t offset, size_t size, - struct tevent_req **psmbreq); -struct tevent_req *cli_read_andx_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, uint16_t fnum, - off_t offset, size_t size); -NTSTATUS cli_read_andx_recv(struct tevent_req *req, ssize_t *received, - uint8_t **rcvbuf); -struct tevent_req *cli_pull_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, off_t start_offset, - SMB_OFF_T size, size_t window_size, - NTSTATUS (*sink)(char *buf, size_t n, - void *priv), - void *priv); -NTSTATUS cli_pull_recv(struct tevent_req *req, SMB_OFF_T *received); -NTSTATUS cli_pull(struct cli_state *cli, uint16_t fnum, - off_t start_offset, SMB_OFF_T size, size_t window_size, - NTSTATUS (*sink)(char *buf, size_t n, void *priv), - void *priv, SMB_OFF_T *received); -ssize_t cli_read(struct cli_state *cli, uint16_t fnum, char *buf, - off_t offset, size_t size); -ssize_t cli_write(struct cli_state *cli, - uint16_t fnum, uint16 write_mode, - const char *buf, off_t offset, size_t size); -NTSTATUS cli_smbwrite(struct cli_state *cli, uint16_t fnum, char *buf, - off_t offset, size_t size1, size_t *ptotal); -struct tevent_req *cli_write_andx_create(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, uint16_t fnum, - uint16_t mode, const uint8_t *buf, - off_t offset, size_t size, - struct tevent_req **reqs_before, - int num_reqs_before, - struct tevent_req **psmbreq); -struct tevent_req *cli_write_andx_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, uint16_t fnum, - uint16_t mode, const uint8_t *buf, - off_t offset, size_t size); -NTSTATUS cli_write_andx_recv(struct tevent_req *req, size_t *pwritten); - -struct tevent_req *cli_push_send(TALLOC_CTX *mem_ctx, struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, uint16_t mode, - off_t start_offset, size_t window_size, - size_t (*source)(uint8_t *buf, size_t n, - void *priv), - void *priv); -NTSTATUS cli_push_recv(struct tevent_req *req); -NTSTATUS cli_push(struct cli_state *cli, uint16_t fnum, uint16_t mode, - off_t start_offset, size_t window_size, - size_t (*source)(uint8_t *buf, size_t n, void *priv), - void *priv); - -/* The following definitions come from libsmb/clisecdesc.c */ - -struct security_descriptor *cli_query_secdesc(struct cli_state *cli, uint16_t fnum, - TALLOC_CTX *mem_ctx); -NTSTATUS cli_set_secdesc(struct cli_state *cli, uint16_t fnum, - struct security_descriptor *sd); - /* The following definitions come from libsmb/clispnego.c */ DATA_BLOB spnego_gen_negTokenInit(TALLOC_CTX *ctx, @@ -1836,57 +935,6 @@ DATA_BLOB spnego_gen_auth_response_and_mic(TALLOC_CTX *ctx, bool spnego_mech_list_blob(TALLOC_CTX *mem_ctx, char **oid_list, DATA_BLOB *data); -/* The following definitions come from libsmb/clistr.c */ - -size_t clistr_push_fn(struct cli_state *cli, - void *dest, - const char *src, - int dest_len, - int flags); -size_t clistr_pull_fn(const char *inbuf, - char *dest, - const void *src, - int dest_len, - int src_len, - int flags); -size_t clistr_pull_talloc(TALLOC_CTX *ctx, - const char *base, - uint16_t flags2, - char **pp_dest, - const void *src, - int src_len, - int flags); -size_t clistr_align_out(struct cli_state *cli, const void *p, int flags); - -/* The following definitions come from libsmb/clitrans.c */ - -struct tevent_req *cli_trans_send( - TALLOC_CTX *mem_ctx, struct event_context *ev, - struct cli_state *cli, uint8_t cmd, - const char *pipe_name, uint16_t fid, uint16_t function, int flags, - uint16_t *setup, uint8_t num_setup, uint8_t max_setup, - uint8_t *param, uint32_t num_param, uint32_t max_param, - uint8_t *data, uint32_t num_data, uint32_t max_data); -NTSTATUS cli_trans_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, - uint16_t *recv_flags2, - uint16_t **setup, uint8_t min_setup, - uint8_t *num_setup, - uint8_t **param, uint32_t min_param, - uint32_t *num_param, - uint8_t **data, uint32_t min_data, - uint32_t *num_data); -NTSTATUS cli_trans(TALLOC_CTX *mem_ctx, struct cli_state *cli, - uint8_t trans_cmd, - const char *pipe_name, uint16_t fid, uint16_t function, - int flags, - uint16_t *setup, uint8_t num_setup, uint8_t max_setup, - uint8_t *param, uint32_t num_param, uint32_t max_param, - uint8_t *data, uint32_t num_data, uint32_t max_data, - uint16_t *recv_flags2, - uint16_t **rsetup, uint8_t min_rsetup, uint8_t *num_rsetup, - uint8_t **rparam, uint32_t min_rparam, uint32_t *num_rparam, - uint8_t **rdata, uint32_t min_rdata, uint32_t *num_rdata); - /* The following definitions come from libsmb/conncache.c */ NTSTATUS check_negative_conn_cache( const char *domain, const char *server); @@ -1909,9 +957,6 @@ NTSTATUS dsgetdcname(TALLOC_CTX *mem_ctx, /* The following definitions come from libsmb/errormap.c */ NTSTATUS dos_to_ntstatus(uint8 eclass, uint32 ecode); -void ntstatus_to_dos(NTSTATUS ntstatus, uint8 *eclass, uint32 *ecode); -NTSTATUS werror_to_ntstatus(WERROR error); -WERROR ntstatus_to_werror(NTSTATUS error); NTSTATUS map_nt_error_from_gss(uint32 gss_maj, uint32 minor); /* The following definitions come from libsmb/namecache.c */ @@ -1974,13 +1019,29 @@ NTSTATUS name_query(const char *name, int name_type, TALLOC_CTX *mem_ctx, struct sockaddr_storage **addrs, int *num_addrs, uint8_t *flags); +struct tevent_req *name_resolve_bcast_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const char *name, + int name_type); +NTSTATUS name_resolve_bcast_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, + struct sockaddr_storage **addrs, + int *num_addrs); NTSTATUS name_resolve_bcast(const char *name, int name_type, - struct ip_service **return_iplist, + TALLOC_CTX *mem_ctx, + struct sockaddr_storage **return_iplist, int *return_count); +struct tevent_req *resolve_wins_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const char *name, + int name_type); +NTSTATUS resolve_wins_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, + struct sockaddr_storage **addrs, + int *num_addrs, uint8_t *flags); NTSTATUS resolve_wins(const char *name, int name_type, - struct ip_service **return_iplist, + TALLOC_CTX *mem_ctx, + struct sockaddr_storage **return_iplist, int *return_count); NTSTATUS internal_resolve_name(const char *name, int name_type, @@ -2016,14 +1077,6 @@ bool get_dc_name(const char *domain, fstring srv_name, struct sockaddr_storage *ss_out); -/* The following definitions come from libsmb/nterr.c */ - -const char *nt_errstr(NTSTATUS nt_code); -const char *get_friendly_nt_error_msg(NTSTATUS nt_code); -const char *get_nt_error_c_code(NTSTATUS nt_code); -NTSTATUS nt_status_string_to_code(const char *nt_status_str); -NTSTATUS nt_status_squash(NTSTATUS nt_status); - /* The following definitions come from libsmb/ntlmssp.c */ struct ntlmssp_state; NTSTATUS ntlmssp_set_username(struct ntlmssp_state *ntlmssp_state, const char *user) ; @@ -2064,44 +1117,11 @@ bool netsamlogon_cache_store(const char *username, struct netr_SamInfo3 *info3); struct netr_SamInfo3 *netsamlogon_cache_get(TALLOC_CTX *mem_ctx, const struct dom_sid *user_sid); bool netsamlogon_cache_have(const struct dom_sid *user_sid); -/* The following definitions come from libsmb/smb_seal.c */ - -NTSTATUS get_enc_ctx_num(const uint8_t *buf, uint16 *p_enc_ctx_num); -bool common_encryption_on(struct smb_trans_enc_state *es); -NTSTATUS common_ntlm_decrypt_buffer(struct ntlmssp_state *ntlmssp_state, char *buf); -NTSTATUS common_ntlm_encrypt_buffer(struct ntlmssp_state *ntlmssp_state, - uint16 enc_ctx_num, - char *buf, - char **ppbuf_out); -NTSTATUS common_encrypt_buffer(struct smb_trans_enc_state *es, char *buffer, char **buf_out); -NTSTATUS common_decrypt_buffer(struct smb_trans_enc_state *es, char *buf); -void common_free_encryption_state(struct smb_trans_enc_state **pp_es); -void common_free_enc_buffer(struct smb_trans_enc_state *es, char *buf); -bool cli_encryption_on(struct cli_state *cli); -void cli_free_encryption_context(struct cli_state *cli); -void cli_free_enc_buffer(struct cli_state *cli, char *buf); -NTSTATUS cli_decrypt_message(struct cli_state *cli); -NTSTATUS cli_encrypt_message(struct cli_state *cli, char *buf, char **buf_out); - -/* The following definitions come from libsmb/clisigning.c */ - -bool cli_simple_set_signing(struct cli_state *cli, - const DATA_BLOB user_session_key, - const DATA_BLOB response); -bool cli_temp_set_signing(struct cli_state *cli); -void cli_calculate_sign_mac(struct cli_state *cli, char *buf, uint32_t *seqnum); -bool cli_check_sign_mac(struct cli_state *cli, const char *buf, uint32_t seqnum); -bool client_is_signing_on(struct cli_state *cli); -bool client_is_signing_allowed(struct cli_state *cli); -bool client_is_signing_mandatory(struct cli_state *cli); -void cli_set_signing_negotiated(struct cli_state *cli); - /* The following definitions come from libsmb/smberr.c */ const char *smb_dos_err_name(uint8 e_class, uint16 num); const char *get_dos_error_msg(WERROR result); const char *smb_dos_err_class(uint8 e_class); -char *smb_dos_errstr(char *inbuf); WERROR map_werror_from_unix(int error); /* The following definitions come from libsmb/trustdom_cache.c */ @@ -2131,22 +1151,15 @@ bool enumerate_domain_trusts( TALLOC_CTX *mem_ctx, const char *domain, struct dom_sid **sids ); NTSTATUS change_trust_account_password( const char *domain, const char *remote_machine); -/* The following definitions come from modules/vfs_default.c */ - -ssize_t vfswrap_llistxattr(struct vfs_handle_struct *handle, const char *path, char *list, size_t size); -ssize_t vfswrap_flistxattr(struct vfs_handle_struct *handle, struct files_struct *fsp, char *list, size_t size); -NTSTATUS vfs_default_init(void); - /* The following definitions come from param/loadparm.c */ -char *lp_smb_ports(void); -char *lp_dos_charset(void); -char *lp_unix_charset(void); -char *lp_display_charset(void); +const char *lp_smb_ports(void); +const char *lp_dos_charset(void); +const char *lp_unix_charset(void); char *lp_logfile(void); char *lp_configfile(void); -char *lp_smb_passwd_file(void); -char *lp_private_dir(void); +const char *lp_smb_passwd_file(void); +const char *lp_private_dir(void); char *lp_serverstring(void); int lp_printcap_cache_time(void); char *lp_addport_cmd(void); @@ -2154,14 +1167,14 @@ char *lp_enumports_cmd(void); char *lp_addprinter_cmd(void); char *lp_deleteprinter_cmd(void); char *lp_os2_driver_map(void); -char *lp_lockdir(void); -char *lp_statedir(void); -char *lp_cachedir(void); -char *lp_piddir(void); +const char *lp_lockdir(void); +const char *lp_statedir(void); +const char *lp_cachedir(void); +const char *lp_piddir(void); char *lp_mangling_method(void); int lp_mangle_prefix(void); -char *lp_utmpdir(void); -char *lp_wtmpdir(void); +const char *lp_utmpdir(void); +const char *lp_wtmpdir(void); bool lp_utmp(void); char *lp_rootdir(void); char *lp_defaultservice(void); @@ -2171,9 +1184,13 @@ char *lp_set_quota_command(void); char *lp_auto_services(void); char *lp_passwd_program(void); char *lp_passwd_chat(void); -char *lp_passwordserver(void); -char *lp_name_resolve_order(void); -char *lp_realm(void); +const char *lp_passwordserver(void); +const char *lp_name_resolve_order(void); +const char *lp_netbios_scope(void); +const char *lp_netbios_name(void); +const char *lp_workgroup(void); +const char *lp_realm(void); +const char *lp_dnsdomain(void); const char *lp_afs_username_map(void); int lp_afs_token_lifetime(void); char *lp_log_nt_token_command(void); @@ -2259,7 +1276,6 @@ bool lp_reset_on_zero_vc(void); bool lp_log_writeable_files_on_exit(void); bool lp_ms_add_printer_wizard(void); bool lp_dns_proxy(void); -bool lp_wins_support(void); bool lp_we_are_a_wins_server(void); bool lp_wins_proxy(void); bool lp_local_master(void); @@ -2316,7 +1332,7 @@ bool lp_send_spnego_principal(void); bool lp_hostname_lookups(void); bool lp_change_notify(const struct share_params *p ); bool lp_kernel_change_notify(const struct share_params *p ); -char * lp_dedicated_keytab_file(void); +const char * lp_dedicated_keytab_file(void); int lp_kerberos_method(void); bool lp_defer_sharing_violations(void); bool lp_enable_privileges(void); @@ -2438,6 +1454,7 @@ bool lp_oplocks(int ); bool lp_level2_oplocks(int ); bool lp_onlyuser(int ); bool lp_manglednames(const struct share_params *p ); +bool lp_allow_insecure_widelinks(void); bool lp_widelinks(int ); bool lp_symlinks(int ); bool lp_syncalways(int ); @@ -2463,7 +1480,7 @@ bool lp_force_printername(int ); bool lp_nt_acl_support(int ); bool lp_force_unknown_acl_user(int ); bool lp_ea_support(int ); -bool _lp_use_sendfile(int ); +bool lp__use_sendfile(int ); bool lp_profile_acls(int ); bool lp_map_acl_inherit(int ); bool lp_afs_share(int ); @@ -2506,10 +1523,13 @@ int lp_server_signing(void); int lp_client_ldap_sasl_wrapping(void); char *lp_parm_talloc_string(int snum, const char *type, const char *option, const char *def); const char *lp_parm_const_string(int snum, const char *type, const char *option, const char *def); +struct loadparm_service; +const char *lp_parm_const_string_service(struct loadparm_service *service, const char *type, const char *option); const char **lp_parm_string_list(int snum, const char *type, const char *option, const char **def); int lp_parm_int(int snum, const char *type, const char *option, int def); unsigned long lp_parm_ulong(int snum, const char *type, const char *option, unsigned long def); bool lp_parm_bool(int snum, const char *type, const char *option, bool def); +struct enum_list; int lp_parm_enum(int snum, const char *type, const char *option, const struct enum_list *_enum, int def); char *canonicalize_servicename(TALLOC_CTX *ctx, const char *src); @@ -2542,7 +1562,13 @@ const char *lp_ldap_machine_suffix(void); const char *lp_ldap_user_suffix(void); const char *lp_ldap_group_suffix(void); const char *lp_ldap_idmap_suffix(void); -void *lp_local_ptr_by_snum(int snum, void *ptr); +struct parm_struct; +/* Return a pointer to a service by name. */ +struct loadparm_service *lp_service(const char *pszServiceName); +struct loadparm_service *lp_servicebynum(int snum); +struct loadparm_service *lp_default_loadparm_service(void); +void *lp_parm_ptr(struct loadparm_service *service, struct parm_struct *parm); +void *lp_local_ptr_by_snum(int snum, struct parm_struct *parm); bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue); bool lp_set_cmdline(const char *pszParmName, const char *pszParmValue); bool lp_set_option(const char *option); @@ -2552,9 +1578,11 @@ bool dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal); struct parm_struct *lp_get_parameter(const char *param_name); struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters); bool lp_snum_ok(int iService); -void lp_add_one_printer(const char *name, const char *comment, void *pdata); +void lp_add_one_printer(const char *name, const char *comment, + const char *location, void *pdata); bool lp_loaded(void); -void lp_killunused(bool (*snumused) (int)); +void lp_killunused(struct smbd_server_connection *sconn, + bool (*snumused) (struct smbd_server_connection *, int)); void lp_kill_all_services(void); void lp_killservice(int iServiceIn); const char* server_role_str(uint32 role); @@ -2570,16 +1598,18 @@ enum usershare_err parse_usershare_file(TALLOC_CTX *ctx, struct security_descriptor **ppsd, bool *pallow_guest); int load_usershare_service(const char *servicename); -int load_usershare_shares(void); +int load_usershare_shares(struct smbd_server_connection *sconn); void gfree_loadparm(void); -void lp_set_in_client(bool b); -bool lp_is_in_client(void); bool lp_load(const char *pszFname, bool global_only, bool save_defaults, bool add_ipc, bool initialize_globals); bool lp_load_initial_only(const char *pszFname); +bool lp_load_global(const char *file_name); +bool lp_load_client(const char *file_name); +bool lp_load_global_no_reinit(const char *file_name); +bool lp_load_client_no_reinit(const char *file_name); bool lp_load_with_registry_shares(const char *pszFname, bool global_only, bool save_defaults, @@ -2592,10 +1622,6 @@ int lp_servicenumber(const char *pszServiceName); bool share_defined(const char *service_name); struct share_params *get_share_params(TALLOC_CTX *mem_ctx, const char *sharename); -struct share_iterator *share_list_all(TALLOC_CTX *mem_ctx); -struct share_params *next_share(struct share_iterator *list); -struct share_params *next_printer(struct share_iterator *list); -struct share_params *snum2params_static(int snum); const char *volume_label(int snum); bool lp_domain_master(void); bool lp_domain_master_true_or_auto(void); @@ -2603,8 +1629,6 @@ bool lp_preferred_master(void); void lp_remove_service(int snum); void lp_copy_service(int snum, const char *new_name); int lp_default_server_announce(void); -int lp_major_announce_version(void); -int lp_minor_announce_version(void); void lp_set_name_resolve_order(const char *new_order); const char *lp_printername(int snum); void lp_set_logfile(const char *name); @@ -2613,6 +1637,7 @@ const char *lp_printcapname(void); bool lp_disable_spoolss( void ); void lp_set_spoolss_state( uint32 state ); uint32 lp_get_spoolss_state( void ); +struct smb_signing_state; bool lp_use_sendfile(int snum, struct smb_signing_state *signing_state); void set_use_sendfile(int snum, bool val); void set_store_dos_attributes(int snum, bool val); @@ -2623,9 +1648,12 @@ enum brl_flavour lp_posix_cifsu_locktype(files_struct *fsp); void lp_set_posix_default_cifsx_readwrite_locktype(enum brl_flavour val); int lp_min_receive_file_size(void); char* lp_perfcount_module(void); -void lp_set_passdb_backend(const char *backend); void widelinks_warning(int snum); -char *lp_ncalrpc_dir(void); +const char *lp_ncalrpc_dir(void); + +/* The following definitions come from param/loadparm_ctx.c */ + +const struct loadparm_s3_context *loadparm_s3_context(void); /* The following definitions come from param/loadparm_server_role.c */ @@ -2637,145 +1665,6 @@ void set_server_role(void); uint32 get_int_param( const char* param ); char* get_string_param( const char* param ); -/* The following definitions come from librpc/rpc/rpc_common.c */ -struct ndr_interface_table; -bool smb_register_ndr_interface(const struct ndr_interface_table *interface); -const struct ndr_interface_table *get_iface_from_syntax( - const struct ndr_syntax_id *syntax); -const char *get_pipe_name_from_syntax(TALLOC_CTX *mem_ctx, - const struct ndr_syntax_id *syntax); - -/* The following definitions come from rpc_server/rpc_ncacn_np.c */ -struct auth_serversupplied_info; -struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX *mem_ctx, - const struct ndr_syntax_id *syntax, - struct client_address *client_id, - const struct auth_serversupplied_info *session_info, - struct messaging_context *msg_ctx); -struct dcerpc_binding_handle; -NTSTATUS rpcint_binding_handle(TALLOC_CTX *mem_ctx, - const struct ndr_interface_table *ndr_table, - struct client_address *client_id, - const struct auth_serversupplied_info *session_info, - struct messaging_context *msg_ctx, - struct dcerpc_binding_handle **binding_handle); -NTSTATUS rpc_pipe_open_internal(TALLOC_CTX *mem_ctx, - const struct ndr_syntax_id *abstract_syntax, - const struct auth_serversupplied_info *serversupplied_info, - struct client_address *client_id, - struct messaging_context *msg_ctx, - struct rpc_pipe_client **presult); -NTSTATUS rpc_pipe_open_interface(TALLOC_CTX *mem_ctx, - const struct ndr_syntax_id *syntax, - const struct auth_serversupplied_info *session_info, - struct client_address *client_id, - struct messaging_context *msg_ctx, - struct rpc_pipe_client **cli_pipe); - -/* The following definitions come from rpc_server/rpc_handles.c */ - -size_t num_pipe_handles(struct pipes_struct *p); -bool init_pipe_handles(struct pipes_struct *p, const struct ndr_syntax_id *syntax); -bool create_policy_hnd(struct pipes_struct *p, struct policy_handle *hnd, void *data_ptr); -bool find_policy_by_hnd(struct pipes_struct *p, const struct policy_handle *hnd, - void **data_p); -bool close_policy_hnd(struct pipes_struct *p, struct policy_handle *hnd); -void close_policy_by_pipe(struct pipes_struct *p); -bool pipe_access_check(struct pipes_struct *p); - -void *_policy_handle_create(struct pipes_struct *p, struct policy_handle *hnd, - uint32_t access_granted, size_t data_size, - const char *type, NTSTATUS *pstatus); -#define policy_handle_create(_p, _hnd, _access, _type, _pstatus) \ - (_type *)_policy_handle_create((_p), (_hnd), (_access), sizeof(_type), #_type, \ - (_pstatus)) - -void *_policy_handle_find(struct pipes_struct *p, - const struct policy_handle *hnd, - uint32_t access_required, uint32_t *paccess_granted, - const char *name, const char *location, - NTSTATUS *pstatus); -#define policy_handle_find(_p, _hnd, _access_required, _access_granted, _type, _pstatus) \ - (_type *)_policy_handle_find((_p), (_hnd), (_access_required), \ - (_access_granted), #_type, __location__, (_pstatus)) - - -/* The following definitions come from rpc_server/srv_rpc_register.c */ - -struct rpc_srv_callbacks { - bool (*init)(void *private_data); - bool (*shutdown)(void *private_data); - void *private_data; -}; - -struct api_struct; -NTSTATUS rpc_srv_register(int version, const char *clnt, - const char *srv, - const struct ndr_interface_table *iface, - const struct api_struct *cmds, int size, - const struct rpc_srv_callbacks *rpc_srv_cb); - -NTSTATUS rpc_srv_unregister(const struct ndr_interface_table *iface); - -/* The following definitions come from rpc_server/srv_pipe.c */ -struct ncacn_packet; -bool create_next_pdu(struct pipes_struct *p); -bool api_pipe_bind_auth3(struct pipes_struct *p, struct ncacn_packet *pkt); -bool setup_fault_pdu(struct pipes_struct *p, NTSTATUS status); -NTSTATUS rpc_pipe_register_commands(int version, const char *clnt, - const char *srv, - const struct ndr_syntax_id *interface, - const struct api_struct *cmds, int size); -bool is_known_pipename(const char *cli_filename, struct ndr_syntax_id *syntax); - -/* The following definitions come from rpc_server/srv_pipe_hnd.c */ - -struct pipes_struct *get_first_internal_pipe(void); -struct pipes_struct *get_next_internal_pipe(struct pipes_struct *p); -bool check_open_pipes(void); -int close_internal_rpc_pipe_hnd(struct pipes_struct *p); - -bool fsp_is_np(struct files_struct *fsp); -struct tsocket_address; -NTSTATUS np_open(TALLOC_CTX *mem_ctx, const char *name, - const struct tsocket_address *local_address, - const struct tsocket_address *remote_address, - struct client_address *client_id, - struct auth_serversupplied_info *session_info, - struct messaging_context *msg_ctx, - struct fake_file_handle **phandle); -bool np_read_in_progress(struct fake_file_handle *handle); -struct tevent_req *np_write_send(TALLOC_CTX *mem_ctx, struct event_context *ev, - struct fake_file_handle *handle, - const uint8_t *data, size_t len); -NTSTATUS np_write_recv(struct tevent_req *req, ssize_t *pnwritten); -struct tevent_req *np_read_send(TALLOC_CTX *mem_ctx, struct event_context *ev, - struct fake_file_handle *handle, - uint8_t *data, size_t len); -NTSTATUS np_read_recv(struct tevent_req *req, ssize_t *nread, - bool *is_data_outstanding); - -ssize_t process_incoming_data(struct pipes_struct *p, char *data, size_t n); - -/* The following definitions come from rpc_server/srv_spoolss_nt.c */ -void srv_spoolss_cleanup(void); - -void do_drv_upgrade_printer(struct messaging_context *msg, - void *private_data, - uint32_t msg_type, - struct server_id server_id, - DATA_BLOB *data); -void update_monitored_printq_cache(struct messaging_context *msg_ctx); - -/* The following definitions come from rpc_server/srv_srvsvc_nt.c */ - -char *valid_share_pathname(TALLOC_CTX *ctx, const char *dos_pathname); - -/* The following definitions come from rpc_server/srv_svcctl_nt.c */ - -bool init_service_op_table( void ); -bool shutdown_service_op_table(void); - /* The following definitions come from lib/server_contexts.c */ struct tevent_context *server_event_context(void); void server_event_context_free(void); @@ -2800,13 +1689,6 @@ int sessionid_traverse_read(int (*fn)(const char *key, char *stdin_new_passwd( void); char *get_pass( const char *prompt, bool stdin_get); -/* The following definitions come from winbindd/nss_info.c */ - - -/* The following definitions come from winbindd/nss_info_template.c */ - -NTSTATUS nss_info_template_init( void ); - /* The following definitions come from lib/avahi.c */ struct AvahiPoll *tevent_avahi_poll(TALLOC_CTX *mem_ctx, @@ -2837,7 +1719,7 @@ NTSTATUS smbsock_connect_recv(struct tevent_req *req, int *sock, NTSTATUS smbsock_connect(const struct sockaddr_storage *addr, uint16_t port, const char *called_name, int called_type, const char *calling_name, int calling_type, - int *pfd, uint16_t *ret_port); + int *pfd, uint16_t *ret_port, int sec_timeout); struct tevent_req *smbsock_any_connect_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, @@ -2856,6 +1738,7 @@ NTSTATUS smbsock_any_connect(const struct sockaddr_storage *addrs, int *calling_types, size_t num_addrs, uint16_t port, + int sec_timeout, int *pfd, size_t *chosen_index, uint16_t *chosen_port); @@ -2909,7 +1792,7 @@ void unbecome_root(void); /* The following definitions come from lib/dummysmbd.c */ int find_service(TALLOC_CTX *ctx, const char *service_in, char **p_service_out); -bool conn_snum_used(int snum); +bool conn_snum_used(struct smbd_server_connection *sconn, int snum); void cancel_pending_lock_requests_by_fid(files_struct *fsp, struct byte_range_lock *br_lck, enum file_close_type close_type); @@ -2918,7 +1801,6 @@ void send_stat_cache_delete_message(struct messaging_context *msg_ctx, NTSTATUS can_delete_directory(struct connection_struct *conn, const char *dirname); bool change_to_root_user(void); -struct event_context *smbd_event_context(void); void contend_level2_oplocks_begin(files_struct *fsp, enum level2_contention_type type); void contend_level2_oplocks_end(files_struct *fsp,