Revert "Fix the build"
[kai/samba.git] / source3 / include / proto.h
index 9b3950229e1a862b22b1af4d70dde58d8b600c08..4feedcdb04e7d579f0a7253447df8c3440da65fc 100644 (file)
@@ -123,7 +123,7 @@ NTSTATUS make_serverinfo_from_username(TALLOC_CTX *mem_ctx,
                                       bool is_guest,
                                       struct auth_serversupplied_info **presult);
 struct auth_serversupplied_info *copy_serverinfo(TALLOC_CTX *mem_ctx,
-                                                auth_serversupplied_info *src);
+                                                const auth_serversupplied_info *src);
 bool init_guest_info(void);
 bool server_info_set_session_key(struct auth_serversupplied_info *info,
                                 DATA_BLOB session_key);
@@ -542,7 +542,6 @@ int cancel_named_event(struct event_context *event_ctx,
 void dump_event_list(struct event_context *event_ctx);
 
 /* The following definitions come from lib/fault.c  */
-
 void fault_setup(void (*fn)(void *));
 void dump_core_setup(const char *progname);
 
@@ -555,10 +554,6 @@ const char *file_id_string_tos(const struct file_id *id);
 void push_file_id_16(char *buf, const struct file_id *id);
 void pull_file_id_16(char *buf, struct file_id *id);
 
-/* The following definitions come from lib/fsusage.c  */
-
-int sys_fsusage(const char *path, uint64_t *dfree, uint64_t *dsize);
-
 /* The following definitions come from lib/gencache.c  */
 
 bool gencache_init(void);
@@ -573,13 +568,6 @@ void gencache_iterate(void (*fn)(const char* key, const char *value, time_t time
 int gencache_lock_entry( const char *key );
 void gencache_unlock_entry( const char *key );
 
-/* The following definitions come from lib/genrand.c  */
-
-void set_rand_reseed_callback(void (*fn)(int *));
-void set_need_random_reseed(void);
-void generate_random_buffer(uint8_t *out, int len);
-char *generate_random_str(TALLOC_CTX *mem_ctx, size_t len);
-
 /* The following definitions come from lib/iconv.c  */
 
 NTSTATUS smb_register_charset(struct charset_functions *funcs) ;
@@ -591,10 +579,10 @@ int smb_iconv_close (smb_iconv_t cd);
 
 /* The following definitions come from lib/interface.c  */
 
-bool ismyaddr(const struct sockaddr_storage *ip);
+bool ismyaddr(const struct sockaddr *ip);
 bool ismyip_v4(struct in_addr ip);
-bool is_local_net(const struct sockaddr_storage *from);
-void setup_linklocal_scope_id(struct sockaddr_storage *pss);
+bool is_local_net(const struct sockaddr *from);
+void setup_linklocal_scope_id(struct sockaddr *pss);
 bool is_local_net_v4(struct in_addr from);
 int iface_count(void);
 int iface_count_v4_nl(void);
@@ -604,8 +592,8 @@ const struct sockaddr_storage *iface_n_sockaddr_storage(int n);
 const struct in_addr *iface_n_ip_v4(int n);
 const struct in_addr *iface_n_bcast_v4(int n);
 const struct sockaddr_storage *iface_n_bcast(int n);
-const struct sockaddr_storage *iface_ip(const struct sockaddr_storage *ip);
-bool iface_local(const struct sockaddr_storage *ip);
+const struct sockaddr_storage *iface_ip(const struct sockaddr *ip);
+bool iface_local(const struct sockaddr *ip);
 void load_interfaces(void);
 void gfree_interfaces(void);
 bool interfaces_changed(void);
@@ -619,10 +607,6 @@ void init_ldap_debugging(void);
 char *escape_ldap_string_alloc(const char *s);
 char *escape_rdn_val_string_alloc(const char *s);
 
-/* The following definitions come from lib/md4.c  */
-
-void mdfour(unsigned char *out, const unsigned char *in, int n);
-
 /* The following definitions come from lib/module.c  */
 
 NTSTATUS smb_load_module(const char *module_name);
@@ -739,6 +723,7 @@ bool sec_acl_equal(SEC_ACL *s1, SEC_ACL *s2);
 /* The following definitions come from lib/secdesc.c  */
 
 bool sec_desc_equal(SEC_DESC *s1, SEC_DESC *s2);
+uint32_t get_sec_info(const SEC_DESC *sd);
 SEC_DESC_BUF *sec_desc_merge(TALLOC_CTX *ctx, SEC_DESC_BUF *new_sdb, SEC_DESC_BUF *old_sdb);
 SEC_DESC *make_sec_desc(TALLOC_CTX *ctx,
                        enum security_descriptor_revision revision,
@@ -758,8 +743,17 @@ SEC_DESC_BUF *dup_sec_desc_buf(TALLOC_CTX *ctx, SEC_DESC_BUF *src);
 NTSTATUS sec_desc_add_sid(TALLOC_CTX *ctx, SEC_DESC **psd, DOM_SID *sid, uint32 mask, size_t *sd_size);
 NTSTATUS sec_desc_mod_sid(SEC_DESC *sd, DOM_SID *sid, uint32 mask);
 NTSTATUS sec_desc_del_sid(TALLOC_CTX *ctx, SEC_DESC **psd, DOM_SID *sid, size_t *sd_size);
-SEC_DESC_BUF *se_create_child_secdesc(TALLOC_CTX *ctx, SEC_DESC *parent_ctr, 
-                                     bool child_container);
+NTSTATUS se_create_child_secdesc(TALLOC_CTX *ctx,
+                                        SEC_DESC **ppsd,
+                                       size_t *psize,
+                                        const SEC_DESC *parent_ctr,
+                                        const DOM_SID *owner_sid,
+                                        const DOM_SID *group_sid,
+                                        bool container);
+NTSTATUS se_create_child_secdesc_buf(TALLOC_CTX *ctx,
+                                       SEC_DESC_BUF **ppsdb,
+                                       const SEC_DESC *parent_ctr,
+                                       bool container);
 
 /* The following definitions come from lib/select.c  */
 
@@ -787,13 +781,6 @@ bool share_access_check(const NT_USER_TOKEN *token, const char *sharename,
                        uint32 desired_access);
 bool parse_usershare_acl(TALLOC_CTX *ctx, const char *acl_str, SEC_DESC **ppsd);
 
-/* The following definitions come from lib/signal.c  */
-
-void BlockSignals(bool block,int signum);
-void (*CatchSignal(int signum,void (*handler)(int )))(int);
-void CatchChild(void);
-void CatchChildLeaveStatus(void);
-
 /* The following definitions come from lib/smbldap.c  */
 
 int smb_ldap_start_tls(LDAP *ldap_struct, int version);
@@ -967,18 +954,11 @@ int no_acl_syscall_error(int err);
 int sys_get_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
 int sys_set_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
 
-/* The following definitions come from lib/sysquotas_4A.c  */
+/* The following definitions come from lib/sysquotas_*.c  */
 
 int sys_get_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
 int sys_set_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
 
-/* The following definitions come from lib/sysquotas_linux.c  */
-
-int sys_get_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
-int sys_set_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
-
-/* The following definitions come from lib/sysquotas_xfs.c  */
-
 int sys_get_xfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
 int sys_set_xfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp);
 
@@ -1014,15 +994,8 @@ long sys_telldir(SMB_STRUCT_DIR *dirp);
 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);
-char *sys_realpath(const char *path, char *resolved_path);
 int sys_waitpid(pid_t pid,int *status,int options);
 char *sys_getwd(char *s);
-int sys_symlink(const char *oldpath, const char *newpath);
-int sys_readlink(const char *path, char *buf, size_t bufsiz);
-int sys_link(const char *oldpath, const char *newpath);
-int sys_chown(const char *fname,uid_t uid,gid_t gid);
-int sys_lchown(const char *fname,uid_t uid,gid_t gid);
-int sys_chroot(const char *dname);
 void set_effective_capability(enum smbd_capability capability);
 void drop_effective_capability(enum smbd_capability capability);
 long sys_random(void);
@@ -1041,11 +1014,6 @@ pid_t sys_fork(void);
 pid_t sys_getpid(void);
 int sys_popen(const char *command);
 int sys_pclose(int fd);
-void *sys_dlopen(const char *name, int flags);
-void *sys_dlsym(void *handle, const char *symbol);
-int sys_dlclose (void *handle);
-const char *sys_dlerror(void);
-int sys_dup2(int oldfd, int newfd) ;
 ssize_t sys_getxattr (const char *path, const char *name, void *value, size_t size);
 ssize_t sys_lgetxattr (const char *path, const char *name, void *value, size_t size);
 ssize_t sys_fgetxattr (int filedes, const char *name, void *value, size_t size);
@@ -1096,45 +1064,14 @@ void register_msg_pool_usage(struct messaging_context *msg_ctx);
 
 /* The following definitions come from lib/time.c  */
 
-time_t get_time_t_max(void);
-void GetTimeOfDay(struct timeval *tval);
-time_t nt_time_to_unix(NTTIME nt);
-void unix_to_nt_time(NTTIME *nt, time_t t);
-bool null_time(time_t t);
-bool null_nttime(NTTIME t);
-bool null_timespec(struct timespec ts);
 void push_dos_date(uint8_t *buf, int offset, time_t unixdate, int zone_offset);
 void push_dos_date2(uint8_t *buf,int offset,time_t unixdate, int zone_offset);
 void push_dos_date3(uint8_t *buf,int offset,time_t unixdate, int zone_offset);
 time_t pull_dos_date(const uint8_t *date_ptr, int zone_offset);
 time_t pull_dos_date2(const uint8_t *date_ptr, int zone_offset);
 time_t pull_dos_date3(const uint8_t *date_ptr, int zone_offset);
-char *timestring(TALLOC_CTX *mem_ctx, time_t t);
-const char *nt_time_string(TALLOC_CTX *mem_ctx, NTTIME nt);
-NTTIME nttime_from_string(const char *s);
-struct timeval timeval_zero(void);
-bool timeval_is_zero(const struct timeval *tv);
-struct timeval timeval_current(void);
-struct timeval timeval_set(uint32_t secs, uint32_t usecs);
-struct timeval timeval_add(const struct timeval *tv,
-                          uint32_t secs, uint32_t usecs);
-struct timeval timeval_sum(const struct timeval *tv1,
-                          const struct timeval *tv2);
-struct timeval timeval_current_ofs(uint32_t secs, uint32_t usecs);
-int timeval_compare(const struct timeval *tv1, const struct timeval *tv2);
-bool timeval_expired(const struct timeval *tv);
-double timeval_elapsed2(const struct timeval *tv1, const struct timeval *tv2);
-double timeval_elapsed(const struct timeval *tv);
-struct timeval timeval_min(const struct timeval *tv1,
-                          const struct timeval *tv2);
-struct timeval timeval_max(const struct timeval *tv1,
-                          const struct timeval *tv2);
-struct timeval timeval_until(const struct timeval *tv1,
-                            const struct timeval *tv2);
-NTTIME timeval_to_nttime(const struct timeval *tv);
 uint32 convert_time_t_to_uint32(time_t t);
 time_t convert_uint32_to_time_t(uint32 u);
-int get_time_zone(time_t t);
 bool nt_time_is_zero(const NTTIME *nt);
 time_t generalized_to_unix_time(const char *str);
 int get_server_zone_offset(void);
@@ -1171,7 +1108,6 @@ void cli_put_dos_date3(struct cli_state *cli, char *buf, int offset, time_t unix
 time_t cli_make_unix_date(struct cli_state *cli, const void *date_ptr);
 time_t cli_make_unix_date2(struct cli_state *cli, const void *date_ptr);
 time_t cli_make_unix_date3(struct cli_state *cli, const void *date_ptr);
-struct timespec nt_time_to_unix_timespec(NTTIME *nt);
 bool nt_time_equals(const NTTIME *nt1, const NTTIME *nt2);
 void TimeInit(void);
 void get_process_uptime(struct timeval *ret_time);
@@ -1219,16 +1155,12 @@ bool get_cmdline_auth_info_smb_encrypt(void);
 bool get_cmdline_auth_info_use_machine_account(void);
 bool get_cmdline_auth_info_copy(struct user_auth_info *info);
 bool set_cmdline_auth_info_machine_account_creds(void);
-const char *tmpdir(void);
 bool add_gid_to_array_unique(TALLOC_CTX *mem_ctx, gid_t gid,
                             gid_t **gids, size_t *num_gids);
 const char *get_numlist(const char *p, uint32 **num, int *count);
 bool file_exist_stat(const char *fname,SMB_STRUCT_STAT *sbuf);
-bool file_exist(const char *fname);
 bool socket_exist(const char *fname);
-time_t file_modtime(const char *fname);
 bool directory_exist_stat(char *dname,SMB_STRUCT_STAT *st);
-bool directory_exist(const char *dname);
 SMB_OFF_T get_file_size(char *file_name);
 char *attrib_string(uint16 mode);
 void show_msg(char *buf);
@@ -1247,22 +1179,18 @@ bool reinit_after_fork(struct messaging_context *msg_ctx,
                       bool parent_longlived);
 bool yesno(const char *p);
 void *malloc_(size_t size);
-void *malloc_array(size_t el_size, unsigned int count);
 void *memalign_array(size_t el_size, size_t align, unsigned int count);
 void *calloc_array(size_t size, size_t nmemb);
 void *Realloc(void *p, size_t size, bool free_old_on_error);
-void *realloc_array(void *p, size_t el_size, unsigned int count, bool free_old_on_error);
 void add_to_large_array(TALLOC_CTX *mem_ctx, size_t element_size,
                        void *element, void *_array, uint32 *num_elements,
                        ssize_t *array_size);
-void safe_free(void *p);
 char *talloc_get_myname(TALLOC_CTX *ctx);
 char *get_mydnsdomname(TALLOC_CTX *ctx);
 int interpret_protocol(const char *str,int def);
 char *automount_lookup(TALLOC_CTX *ctx, const char *user_name);
 char *automount_lookup(TALLOC_CTX *ctx, const char *user_name);
 bool process_exists(const struct server_id pid);
-bool process_exists_by_pid(pid_t pid);
 const char *uidtoname(uid_t uid);
 char *gidtoname(gid_t gid);
 uid_t nametouid(const char *name);
@@ -1281,20 +1209,12 @@ void ra_lanman_string( const char *native_lanman );
 const char *get_remote_arch_str(void);
 void set_remote_arch(enum remote_arch_types type);
 enum remote_arch_types get_remote_arch(void);
-void print_asc(int level, const unsigned char *buf,int len);
-void dump_data(int level, const unsigned char *buf1,int len);
-void dump_data_pw(const char *msg, const uchar * data, size_t len);
-void dump_data_skip_zeros(int level, const uint8_t *buf, int len);
 const char *tab_depth(int level, int depth);
 int str_checksum(const char *s);
 void zero_free(void *p, size_t size);
 int set_maxfiles(int requested_max);
 int smb_mkstemp(char *name_template);
 void *smb_xmalloc_array(size_t size, unsigned int count);
-void *smb_xmemdup(const void *p, size_t size);
-char *smb_xstrdup(const char *s);
-char *smb_xstrndup(const char *s, size_t n);
-void *memdup(const void *p, size_t size);
 char *myhostname(void);
 char *lock_path(const char *name);
 char *pid_path(const char *name);
@@ -1332,6 +1252,7 @@ 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);
 int this_is_smp(void);
+bool trans_oob(uint32_t bufsize, uint32_t offset, uint32_t length);
 bool is_offset_safe(const char *buf_base, size_t buf_len, char *ptr, size_t off);
 char *get_safe_ptr(const char *buf_base, size_t buf_len, char *ptr, size_t off);
 char *get_safe_str_ptr(const char *buf_base, size_t buf_len, char *ptr, size_t off);
@@ -1355,17 +1276,8 @@ const char *strip_hostname(const char *s);
 
 /* The following definitions come from lib/util_file.c  */
 
-char *fgets_slash(char *s2,int maxlen,XFILE *f);
-char *file_load(const char *fname, size_t *size, size_t maxsize, TALLOC_CTX *mem_ctx);
-char **file_lines_parse(char *p, size_t size, int *numlines, TALLOC_CTX *mem_ctx);
-bool unmap_file(void* start, size_t size);
-void *map_file(const char *fname, size_t size);
-char **file_lines_load(const char *fname, int *numlines, size_t maxsize, TALLOC_CTX *mem_ctx);
-char **fd_lines_load(int fd, int *numlines, size_t maxsize, TALLOC_CTX *mem_ctx);
 char **file_lines_pload(const char *syscmd, int *numlines);
 void file_lines_free(char **lines);
-void file_lines_slashcont(char **lines);
-bool file_save(const char *fname, const void *packet, size_t length);
 
 /* The following definitions come from lib/util_nscd.c  */
 
@@ -1408,9 +1320,8 @@ WERROR registry_push_value(TALLOC_CTX *mem_ctx,
 void se_map_generic(uint32 *access_mask, const struct generic_mapping *mapping);
 void security_acl_map_generic(struct security_acl *sa, const struct generic_mapping *mapping);
 void se_map_standard(uint32 *access_mask, struct standard_mapping *mapping);
-bool se_access_check(const SEC_DESC *sd, const NT_USER_TOKEN *token,
-                    uint32 acc_desired, uint32 *acc_granted, 
-                    NTSTATUS *status);
+NTSTATUS se_access_check(const SEC_DESC *sd, const NT_USER_TOKEN *token,
+                    uint32 acc_desired, uint32 *acc_granted);
 NTSTATUS samr_make_sam_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd_size);
 
 /* The following definitions come from lib/util_sec.c  */
@@ -1466,6 +1377,7 @@ void del_sid_from_array(const DOM_SID *sid, DOM_SID **sids, size_t *num);
 bool add_rid_to_array_unique(TALLOC_CTX *mem_ctx,
                                    uint32 rid, uint32 **pp_rids, size_t *p_num);
 bool is_null_sid(const DOM_SID *sid);
+bool is_sid_in_token(const NT_USER_TOKEN *token, const DOM_SID *sid);
 NTSTATUS sid_array_from_info3(TALLOC_CTX *mem_ctx,
                              const struct netr_SamInfo3 *info3,
                              DOM_SID **user_sids,
@@ -1475,36 +1387,32 @@ NTSTATUS sid_array_from_info3(TALLOC_CTX *mem_ctx,
 
 /* The following definitions come from lib/util_sock.c  */
 
-bool is_ipaddress_v4(const char *str);
-bool is_ipaddress(const char *str);
-bool is_broadcast_addr(const struct sockaddr_storage *pss);
-uint32 interpret_addr(const char *str);
-struct in_addr *interpret_addr2(struct in_addr *ip, const char *str);
+bool interpret_string_addr_internal(struct addrinfo **ppres,
+                                       const char *str, int flags);
+bool is_broadcast_addr(const struct sockaddr *pss);
 bool interpret_string_addr(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_storage *pss);
-bool is_zero_ip_v4(struct in_addr ip);
-bool is_zero_addr(const struct sockaddr_storage *pss);
+bool is_loopback_addr(const struct sockaddr *pss);
+bool is_zero_addr(const struct sockaddr *pss);
 void zero_ip_v4(struct in_addr *ip);
-void zero_addr(struct sockaddr_storage *pss);
-bool same_net_v4(struct in_addr ip1,struct in_addr ip2,struct in_addr mask);
+void zero_sockaddr(struct sockaddr_storage *pss);
 void in_addr_to_sockaddr_storage(struct sockaddr_storage *ss,
                struct in_addr ip);
-bool same_net(const struct sockaddr_storage *ip1,
-               const struct sockaddr_storage *ip2,
-               const struct sockaddr_storage *mask);
-bool addr_equal(const struct sockaddr_storage *ip1,
-               const struct sockaddr_storage *ip2);
-bool is_address_any(const struct sockaddr_storage *psa);
+bool same_net(const struct sockaddr *ip1,
+               const struct sockaddr *ip2,
+               const struct sockaddr *mask);
+bool sockaddr_equal(const struct sockaddr *ip1,
+               const struct sockaddr *ip2);
+bool is_address_any(const struct sockaddr *psa);
 uint16_t get_sockaddr_port(const struct sockaddr_storage *pss);
 char *print_sockaddr(char *dest,
                        size_t destlen,
                        const struct sockaddr_storage *psa);
 char *print_canonical_sockaddr(TALLOC_CTX *ctx,
                        const struct sockaddr_storage *pss);
-void set_sockaddr_port(struct sockaddr_storage *psa, uint16 port);
+void set_sockaddr_port(struct sockaddr *psa, uint16_t port);
 const char *client_name(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);
@@ -1570,22 +1478,17 @@ bool next_token_no_ltrim_talloc(TALLOC_CTX *ctx,
                        const char *sep);
 int StrCaseCmp(const char *s, const char *t);
 int StrnCaseCmp(const char *s, const char *t, size_t len);
-bool strequal(const char *s1, const char *s2);
 bool strnequal(const char *s1,const char *s2,size_t n);
 bool strcsequal(const char *s1,const char *s2);
-int strwicmp(const char *psz1, const char *psz2);
 void strnorm(char *s, int case_default);
 bool strisnormal(const char *s, int case_default);
-void string_replace( char *s, char oldc, char newc );
 char *push_skip_string(char *buf);
 char *skip_string(const char *base, size_t len, char *buf);
 size_t str_charnum(const char *s);
 size_t str_ascii_charnum(const char *s);
 bool trim_char(char *s,char cfront,char cback);
-bool trim_string(char *s,const char *front,const char *back);
 bool strhasupper(const char *s);
 bool strhaslower(const char *s);
-size_t count_chars(const char *s,char c);
 char *safe_strcpy_fn(const char *fn,
                int line,
                char *dest,
@@ -1603,9 +1506,6 @@ char *alpha_strcpy_fn(const char *fn,
                const char *other_safe_chars,
                size_t maxlength);
 char *StrnCpy_fn(const char *fn, int line,char *dest,const char *src,size_t n);
-size_t strhex_to_str(char *buf, size_t buf_len, const char *strhex, size_t strhex_len);
-DATA_BLOB strhex_to_data_blob(TALLOC_CTX *mem_ctx, const char *strhex);
-char *hex_encode_talloc(TALLOC_CTX *mem_ctx, const unsigned char *buff_in, size_t len);
 bool in_list(const char *s, const char *list, bool casesensitive);
 void string_free(char **s);
 bool string_set(char **dest,const char *src);
@@ -1653,13 +1553,12 @@ size_t strlen_m_term_null(const char *s);
 char *binary_string_rfc2254(char *buf, int len);
 char *binary_string(char *buf, int len);
 int fstr_sprintf(fstring s, const char *fmt, ...);
-char **str_list_make(TALLOC_CTX *mem_ctx, const char *string, const char *sep);
-char **str_list_copy(TALLOC_CTX *mem_ctx, const char **list);
-bool str_list_equal(const char **list1, const char **list2);
-size_t str_list_length( const char * const*list );
 bool str_list_sub_basic( char **list, const char *smb_name,
                         const char *domain_name );
 bool str_list_substitute(char **list, const char *pattern, const char *insert);
+bool str_list_check(const char **list, const char *s);
+bool str_list_check_ci(const char **list, const char *s);
+
 char *ipstr_list_make(char **ipstr_list,
                        const struct ip_service *ip_list,
                        int ip_count);
@@ -1684,10 +1583,8 @@ char *sstring_sub(const char *src, char front, char back);
 bool validate_net_name( const char *name,
                const char *invalid_chars,
                int max_len);
-size_t ascii_len_n(const char *src, size_t n);
-size_t utf16_len(const void *buf);
-size_t utf16_len_n(const void *src, size_t n);
 char *escape_shell_string(const char *src);
+char **str_list_make_v3(TALLOC_CTX *mem_ctx, const char *string, const char *sep);
 
 /* The following definitions come from lib/util_unistr.c  */
 
@@ -1811,25 +1708,6 @@ void wins_srv_tags_free(char **list);
 struct in_addr wins_srv_ip_tag(const char *tag, struct in_addr src_ip);
 unsigned wins_srv_count_tag(const char *tag);
 
-/* The following definitions come from lib/xfile.c  */
-
-int x_setvbuf(XFILE *f, char *buf, int mode, size_t size);
-XFILE *x_fopen(const char *fname, int flags, mode_t mode);
-XFILE *x_fdup(const XFILE *f);
-int x_fclose(XFILE *f);
-size_t x_fwrite(const void *p, size_t size, size_t nmemb, XFILE *f);
-int x_fileno(const XFILE *f);
-int x_fflush(XFILE *f);
-void x_setbuffer(XFILE *f, char *buf, size_t size);
-void x_setbuf(XFILE *f, char *buf);
-void x_setlinebuf(XFILE *f);
-int x_feof(XFILE *f);
-int x_ferror(XFILE *f);
-int x_fgetc(XFILE *f);
-size_t x_fread(void *p, size_t size, size_t nmemb, XFILE *f);
-char *x_fgets(char *s, int size, XFILE *stream) ;
-off_t x_tseek(XFILE *f, off_t offset, int whence);
-
 /* The following definitions come from libads/ads_status.c  */
 
 ADS_STATUS ads_build_error(enum ads_error_type etype, 
@@ -2044,10 +1922,10 @@ ADS_STATUS ads_get_joinable_ous(ADS_STRUCT *ads,
                                TALLOC_CTX *mem_ctx,
                                char ***ous,
                                size_t *num_ous);
-bool ads_get_sid_from_extended_dn(TALLOC_CTX *mem_ctx, 
-                                 const char *extended_dn, 
-                                 enum ads_extended_dn_flags flags, 
-                                 DOM_SID *sid);
+ADS_STATUS ads_get_sid_from_extended_dn(TALLOC_CTX *mem_ctx,
+                                       const char *extended_dn,
+                                       enum ads_extended_dn_flags flags,
+                                       DOM_SID *sid);
 char* ads_get_dnshostname( ADS_STRUCT *ads, TALLOC_CTX *ctx, const char *machine_name );
 char* ads_get_upn( ADS_STRUCT *ads, TALLOC_CTX *ctx, const char *machine_name );
 char* ads_get_samaccountname( ADS_STRUCT *ads, TALLOC_CTX *ctx, const char *machine_name );
@@ -2415,7 +2293,6 @@ ADS_STATUS gp_get_machine_token(ADS_STRUCT *ads,
 
 /* The following definitions come from librpc/ndr/util.c  */
 
-NTSTATUS ndr_map_error2ntstatus(enum ndr_err_code ndr_err);
 enum ndr_err_code ndr_push_server_id(struct ndr_push *ndr, int ndr_flags, const struct server_id *r);
 enum ndr_err_code ndr_pull_server_id(struct ndr_pull *ndr, int ndr_flags, struct server_id *r);
 void ndr_print_server_id(struct ndr_print *ndr, const char *name, const struct server_id *r);
@@ -2473,37 +2350,6 @@ _PUBLIC_ NTSTATUS dcerpc_pipe_connect(TALLOC_CTX *parent_ctx, struct dcerpc_pipe
                                      struct cli_credentials *credentials, struct event_context *ev, 
                                      struct loadparm_context *lp_ctx);
 
-/* The following definitions come from libsmb/asn1.c  */
-
-void asn1_free(ASN1_DATA *data);
-bool asn1_write(ASN1_DATA *data, const void *p, int len);
-bool asn1_write_uint8(ASN1_DATA *data, uint8 v);
-bool asn1_push_tag(ASN1_DATA *data, uint8 tag);
-bool asn1_pop_tag(ASN1_DATA *data);
-bool asn1_write_Integer(ASN1_DATA *data, int i);
-bool asn1_write_OID(ASN1_DATA *data, const char *OID);
-bool asn1_write_OctetString(ASN1_DATA *data, const void *p, size_t length);
-bool asn1_write_GeneralString(ASN1_DATA *data, const char *s);
-bool asn1_write_BOOLEAN(ASN1_DATA *data, bool v);
-bool asn1_write_BOOLEAN2(ASN1_DATA *data, bool v);
-bool asn1_check_BOOLEAN(ASN1_DATA *data, bool v);
-bool asn1_load(ASN1_DATA *data, DATA_BLOB blob);
-bool asn1_read(ASN1_DATA *data, void *p, int len);
-bool asn1_read_uint8(ASN1_DATA *data, uint8 *v);
-bool asn1_check_tag(ASN1_DATA *data, uint8 tag);
-bool asn1_start_tag(ASN1_DATA *data, uint8 tag);
-bool asn1_end_tag(ASN1_DATA *data);
-int asn1_tag_remaining(ASN1_DATA *data);
-bool asn1_read_OID(ASN1_DATA *data, char **OID);
-bool asn1_check_OID(ASN1_DATA *data, const char *OID);
-bool asn1_read_GeneralString(ASN1_DATA *data, char **s);
-bool asn1_read_OctetString(ASN1_DATA *data, DATA_BLOB *blob);
-bool asn1_read_Integer(ASN1_DATA *data, int *i);
-bool asn1_check_enumerated(ASN1_DATA *data, int v);
-bool asn1_write_enumerated(ASN1_DATA *data, uint8 v);
-bool ber_write_OID_String(DATA_BLOB *blob, const char *OID);
-bool ber_read_OID_String(TALLOC_CTX *mem_ctx, DATA_BLOB blob, const char **OID);
-
 /* The following definitions come from libsmb/cliconnect.c  */
 
 ADS_STATUS cli_session_setup_spnego(struct cli_state *cli, const char *user, 
@@ -2965,7 +2811,7 @@ DATA_BLOB spnego_gen_negTokenInit(char guid[16],
                                  const char *principal);
 DATA_BLOB gen_negTokenInit(const char *OID, DATA_BLOB blob);
 bool spnego_parse_negTokenInit(DATA_BLOB blob,
-                              char *OIDs[ASN1_MAX_OIDS], 
+                              char *OIDs[ASN1_MAX_OIDS],
                               char **principal);
 DATA_BLOB gen_negTokenTarg(const char *OIDs[], DATA_BLOB blob);
 bool parse_negTokenTarg(DATA_BLOB blob, char *OIDs[ASN1_MAX_OIDS], DATA_BLOB *secblob);
@@ -3089,15 +2935,9 @@ bool netlogon_creds_client_check(const struct dcinfo *dc,
 void netlogon_creds_client_step(struct dcinfo *dc,
                                struct netr_Authenticator *next_cred_out);
 
-/* The following definitions come from libsmb/dcerpc_err.c  */
-
-const char *dcerpc_errstr(uint32 fault_code);
+/* The following definitions come from ../librpc/rpc/dcerpc_error.c  */
 
-/* The following definitions come from libsmb/doserr.c  */
-
-const char *dos_errstr(WERROR werror);
-const char *get_friendly_werror_msg(WERROR werror);
-const char *win_errstr(WERROR werror);
+const char *dcerpc_errstr(TALLOC_CTX *mem_ctx, uint32_t fault_code);
 
 /* The following definitions come from libsmb/dsgetdcname.c  */
 
@@ -3243,7 +3083,7 @@ int name_len(char *s1);
 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(char *nt_status_str);
+NTSTATUS nt_status_string_to_code(const char *nt_status_str);
 NTSTATUS nt_status_squash(NTSTATUS nt_status);
 
 /* The following definitions come from libsmb/ntlm_check.c  */
@@ -3615,7 +3455,7 @@ bool is_valid_share_mode_entry(const struct share_mode_entry *e);
 bool is_deferred_open_entry(const struct share_mode_entry *e);
 bool is_unused_share_mode_entry(const struct share_mode_entry *e);
 void set_share_mode(struct share_mode_lock *lck, files_struct *fsp,
-                       uid_t uid, uint16 mid, uint16 op_type, bool initial_delete_on_close_allowed);
+                   uid_t uid, uint16 mid, uint16 op_type);
 void add_deferred_open(struct share_mode_lock *lck, uint16 mid,
                       struct timeval request_time,
                       struct file_id id);
@@ -3625,11 +3465,9 @@ bool remove_share_oplock(struct share_mode_lock *lck, files_struct *fsp);
 bool downgrade_share_oplock(struct share_mode_lock *lck, files_struct *fsp);
 NTSTATUS can_set_delete_on_close(files_struct *fsp, bool delete_on_close,
                                 uint32 dosmode);
-bool can_set_initial_delete_on_close(const struct share_mode_lock *lck);
 void set_delete_on_close_token(struct share_mode_lock *lck, UNIX_USER_TOKEN *tok);
 void set_delete_on_close_lck(struct share_mode_lock *lck, bool delete_on_close, UNIX_USER_TOKEN *tok);
 bool set_delete_on_close(files_struct *fsp, bool delete_on_close, UNIX_USER_TOKEN *tok);
-bool set_allow_initial_delete_on_close(struct share_mode_lock *lck, files_struct *fsp, bool delete_on_close);
 bool set_sticky_write_time(struct file_id fileid, struct timespec write_time);
 bool set_write_time(struct file_id fileid, struct timespec write_time);
 int share_mode_forall(void (*fn)(const struct share_mode_entry *, const char *,
@@ -4083,7 +3921,7 @@ char *lp_remote_announce(void);
 char *lp_remote_browse_sync(void);
 const char **lp_wins_server_list(void);
 const char **lp_interfaces(void);
-char *lp_socket_address(void);
+const char *lp_socket_address(void);
 char *lp_nis_home_map_name(void);
 const char **lp_netbios_aliases(void);
 const char *lp_passdb_backend(void);
@@ -4297,6 +4135,7 @@ bool lp_hide_special_files(int );
 bool lp_hideunreadable(int );
 bool lp_hideunwriteable_files(int );
 bool lp_browseable(int );
+bool lp_access_based_share_enum(int );
 bool lp_readonly(int );
 bool lp_no_set_dir(int );
 bool lp_guest_ok(int );
@@ -4935,10 +4774,12 @@ bool delete_a_form(nt_forms_struct **list, UNISTR2 *del_name, int *count, WERROR
 void update_a_form(nt_forms_struct **list, const FORM *form, int count);
 int get_ntdrivers(fstring **list, const char *architecture, uint32 version);
 const char *get_short_archi(const char *long_archi);
-WERROR clean_up_driver_struct(NT_PRINTER_DRIVER_INFO_LEVEL driver_abstract,
-                                                         uint32 level, struct current_user *user);
-WERROR move_driver_to_download_area(NT_PRINTER_DRIVER_INFO_LEVEL driver_abstract, uint32 level, 
-                                 struct current_user *user, WERROR *perr);
+WERROR clean_up_driver_struct(struct pipes_struct *rpc_pipe,
+                             NT_PRINTER_DRIVER_INFO_LEVEL driver_abstract,
+                             uint32 level);
+WERROR move_driver_to_download_area(struct pipes_struct *p,
+                                   NT_PRINTER_DRIVER_INFO_LEVEL driver_abstract,
+                                   uint32 level, WERROR *perr);
 int pack_devicemode(NT_DEVICEMODE *nt_devmode, uint8 *buf, int buflen);
 uint32 del_a_printer(const char *sharename);
 NT_DEVICEMODE *construct_nt_devicemode(const fstring default_devicename);
@@ -4981,8 +4822,9 @@ WERROR get_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL *driver, uint32 level,
 uint32 free_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL driver, uint32 level);
 bool printer_driver_in_use ( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3 );
 bool printer_driver_files_in_use ( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info );
-WERROR delete_printer_driver( NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3, struct current_user *user,
-                              uint32 version, bool delete_files );
+WERROR delete_printer_driver(struct pipes_struct *rpc_pipe,
+                            NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3,
+                            uint32 version, bool delete_files );
 WERROR nt_printing_setsec(const char *sharename, SEC_DESC_BUF *secdesc_ctr);
 bool nt_printing_getsec(TALLOC_CTX *ctx, const char *sharename, SEC_DESC_BUF **secdesc_ctr);
 void map_printer_permissions(SEC_DESC *sd);
@@ -5028,7 +4870,7 @@ bool sysv_cache_reload(void);
 
 NTSTATUS print_fsp_open(struct smb_request *req, connection_struct *conn,
                        const char *fname,
-                       uint16_t current_vuid, files_struct **result);
+                       uint16_t current_vuid, files_struct *fsp);
 void print_fsp_end(files_struct *fsp, enum file_close_type close_type);
 
 /* The following definitions come from printing/printing.c  */
@@ -5458,7 +5300,6 @@ NTSTATUS cli_get_session_key(TALLOC_CTX *mem_ctx,
 NTSTATUS rpccli_winreg_Connect(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
                          uint32 reg_type, uint32 access_mask,
                          POLICY_HND *reg_hnd);
-uint32 reg_init_regval_buffer( REGVAL_BUFFER *buf2, REGISTRY_VALUE *val );
 
 /* The following definitions come from rpc_client/cli_samr.c  */
 
@@ -5712,7 +5553,8 @@ void init_netr_SamInfo3(struct netr_SamInfo3 *r,
                        uint32_t sidcount,
                        struct netr_SidAttr *sids);
 NTSTATUS serverinfo_to_SamInfo3(struct auth_serversupplied_info *server_info,
-                               uint8_t pipe_session_key[16],
+                               uint8_t *pipe_session_key,
+                               size_t pipe_session_key_len,
                                struct netr_SamInfo3 *sam3);
 void init_netr_IdentityInfo(struct netr_IdentityInfo *r,
                            const char *domain_name,
@@ -5758,7 +5600,7 @@ void init_samr_DomGeneralInformation(struct samr_DomGeneralInformation *r,
                                     const char *domain_name,
                                     const char *primary,
                                     uint64_t sequence_num,
-                                    uint32_t unknown2,
+                                    enum samr_DomainServerState domain_server_state,
                                     enum samr_Role role,
                                     uint32_t unknown3,
                                     uint32_t num_users,
@@ -5778,7 +5620,7 @@ void init_samr_DomInfo8(struct samr_DomInfo8 *r,
                        uint64_t sequence_num,
                        NTTIME domain_create_time);
 void init_samr_DomInfo9(struct samr_DomInfo9 *r,
-                       uint32_t unknown);
+                        enum samr_DomainServerState domain_server_state);
 void init_samr_DomInfo12(struct samr_DomInfo12 *r,
                         uint64_t lockout_duration,
                         uint64_t lockout_window,
@@ -5803,6 +5645,25 @@ void init_samr_alias_info1(struct samr_AliasInfoAll *r,
                           const char *description);
 void init_samr_alias_info3(struct lsa_String *r,
                           const char *description);
+void init_samr_user_info5(struct samr_UserInfo5 *r,
+                         const char *account_name,
+                         const char *full_name,
+                         uint32_t rid,
+                         uint32_t primary_gid,
+                         const char *home_directory,
+                         const char *home_drive,
+                         const char *logon_script,
+                         const char *profile_path,
+                         const char *description,
+                         const char *workstations,
+                         NTTIME last_logon,
+                         NTTIME last_logoff,
+                         struct samr_LogonHours logon_hours,
+                         uint16_t bad_password_count,
+                         uint16_t logon_count,
+                         NTTIME last_password_change,
+                         NTTIME acct_expiry,
+                         uint32_t acct_flags);
 void init_samr_user_info7(struct samr_UserInfo7 *r,
                          const char *account_name);
 void init_samr_user_info9(struct samr_UserInfo9 *r,
@@ -5811,7 +5672,8 @@ void init_samr_user_info16(struct samr_UserInfo16 *r,
                           uint32_t acct_flags);
 void init_samr_user_info18(struct samr_UserInfo18 *r,
                           const uint8 lm_pwd[16],
-                          const uint8 nt_pwd[16]);
+                          const uint8 nt_pwd[16],
+                          uint8_t password_expired);
 void init_samr_user_info20(struct samr_UserInfo20 *r,
                           struct lsa_BinaryString *parameters);
 void init_samr_user_info21(struct samr_UserInfo21 *r,
@@ -5872,11 +5734,43 @@ void init_samr_user_info23(struct samr_UserInfo23 *r,
                           uint8_t nt_password_set,
                           uint8_t lm_password_set,
                           uint8_t password_expired,
-                          uint8_t data[516],
-                          uint8_t pw_len);
+                          struct samr_CryptPassword *pwd_buf);
 void init_samr_user_info24(struct samr_UserInfo24 *r,
-                          uint8_t data[516],
-                          uint8_t pw_len);
+                          struct samr_CryptPassword *pwd_buf,
+                          uint8_t password_expired);
+void init_samr_user_info25(struct samr_UserInfo25 *r,
+                          NTTIME last_logon,
+                          NTTIME last_logoff,
+                          NTTIME last_password_change,
+                          NTTIME acct_expiry,
+                          NTTIME allow_password_change,
+                          NTTIME force_password_change,
+                          const char *account_name,
+                          const char *full_name,
+                          const char *home_directory,
+                          const char *home_drive,
+                          const char *logon_script,
+                          const char *profile_path,
+                          const char *description,
+                          const char *workstations,
+                          const char *comment,
+                          struct lsa_BinaryString *parameters,
+                          uint32_t rid,
+                          uint32_t primary_gid,
+                          uint32_t acct_flags,
+                          uint32_t fields_present,
+                          struct samr_LogonHours logon_hours,
+                          uint16_t bad_password_count,
+                          uint16_t logon_count,
+                          uint16_t country_code,
+                          uint16_t code_page,
+                          uint8_t nt_password_set,
+                          uint8_t lm_password_set,
+                          uint8_t password_expired,
+                          struct samr_CryptPasswordEx *pwd_buf);
+void init_samr_user_info26(struct samr_UserInfo26 *r,
+                          struct samr_CryptPasswordEx *pwd_buf,
+                          uint8_t password_expired);
 void init_samr_CryptPasswordEx(const char *pwd,
                               DATA_BLOB *session_key,
                               struct samr_CryptPasswordEx *pwd_buf);
@@ -6071,8 +5965,6 @@ void init_rpc_blob_str(RPC_DATA_BLOB *str, const char *buf, int len);
 void init_rpc_blob_hex(RPC_DATA_BLOB *str, const char *buf);
 void init_rpc_blob_bytes(RPC_DATA_BLOB *str, uint8 *buf, size_t len);
 bool smb_io_buffer5(const char *desc, BUFFER5 *buf5, prs_struct *ps, int depth);
-void init_regval_buffer(REGVAL_BUFFER *str, const uint8 *buf, size_t len);
-bool smb_io_regval_buffer(const char *desc, prs_struct *ps, int depth, REGVAL_BUFFER *buf2);
 void init_buf_unistr2(UNISTR2 *str, uint32 *ptr, const char *buf);
 void copy_unistr2(UNISTR2 *str, const UNISTR2 *from);
 void init_string2(STRING2 *str, const char *buf, size_t max_len, size_t str_len);
@@ -6135,8 +6027,6 @@ bool policy_handle_is_valid(const POLICY_HND *hnd);
 
 bool ntsvcs_io_q_get_device_list(const char *desc, NTSVCS_Q_GET_DEVICE_LIST *q_u, prs_struct *ps, int depth);
 bool ntsvcs_io_r_get_device_list(const char *desc, NTSVCS_R_GET_DEVICE_LIST *r_u, prs_struct *ps, int depth);
-bool ntsvcs_io_q_get_device_reg_property(const char *desc, NTSVCS_Q_GET_DEVICE_REG_PROPERTY *q_u, prs_struct *ps, int depth);
-bool ntsvcs_io_r_get_device_reg_property(const char *desc, NTSVCS_R_GET_DEVICE_REG_PROPERTY *r_u, prs_struct *ps, int depth);
 
 /* The following definitions come from rpc_parse/parse_prs.c  */
 
@@ -6192,7 +6082,6 @@ bool prs_uint16s(bool charmode, const char *name, prs_struct *ps, int depth, uin
 bool prs_uint16uni(bool charmode, const char *name, prs_struct *ps, int depth, uint16 *data16s, int len);
 bool prs_uint32s(bool charmode, const char *name, prs_struct *ps, int depth, uint32 *data32s, int len);
 bool prs_buffer5(bool charmode, const char *name, prs_struct *ps, int depth, BUFFER5 *str);
-bool prs_regval_buffer(bool charmode, const char *name, prs_struct *ps, int depth, REGVAL_BUFFER *buf);
 bool prs_string2(bool charmode, const char *name, prs_struct *ps, int depth, STRING2 *str);
 bool prs_unistr2(bool charmode, const char *name, prs_struct *ps, int depth, UNISTR2 *str);
 bool prs_unistr3(bool charmode, const char *name, UNISTR3 *str, prs_struct *ps, int depth);
@@ -6970,8 +6859,8 @@ WERROR _netr_GetForestTrustInformation(pipes_struct *p,
                                       struct netr_GetForestTrustInformation *r);
 NTSTATUS _netr_LogonSamLogonWithFlags(pipes_struct *p,
                                      struct netr_LogonSamLogonWithFlags *r);
-WERROR _netr_NETRSERVERGETTRUSTINFO(pipes_struct *p,
-                                   struct netr_NETRSERVERGETTRUSTINFO *r);
+WERROR _netr_ServerGetTrustInfo(pipes_struct *p,
+                               struct netr_ServerGetTrustInfo *r);
 
 /* The following definitions come from rpc_server/srv_ntsvcs.c  */
 
@@ -6985,7 +6874,6 @@ WERROR _PNP_GetVersion(pipes_struct *p,
 WERROR _PNP_GetDeviceListSize(pipes_struct *p,
                              struct PNP_GetDeviceListSize *r);
 WERROR _ntsvcs_get_device_list( pipes_struct *p, NTSVCS_Q_GET_DEVICE_LIST *q_u, NTSVCS_R_GET_DEVICE_LIST *r_u );
-WERROR _ntsvcs_get_device_reg_property( pipes_struct *p, NTSVCS_Q_GET_DEVICE_REG_PROPERTY *q_u, NTSVCS_R_GET_DEVICE_REG_PROPERTY *r_u );
 WERROR _PNP_ValidateDeviceInstance(pipes_struct *p,
                                   struct PNP_ValidateDeviceInstance *r);
 WERROR _PNP_GetHwProfInfo(pipes_struct *p,
@@ -7131,7 +7019,6 @@ bool api_pipe_alter_context(pipes_struct *p, prs_struct *rpc_in_p);
 bool api_pipe_ntlmssp_auth_process(pipes_struct *p, prs_struct *rpc_in,
                                        uint32 *p_ss_padding_len, NTSTATUS *pstatus);
 bool api_pipe_schannel_process(pipes_struct *p, prs_struct *rpc_in, uint32 *p_ss_padding_len);
-struct current_user *get_current_user(struct current_user *user, pipes_struct *p);
 void free_pipe_rpc_context( PIPE_RPC_FNS *list );
 bool api_pipe_request(pipes_struct *p);
 
@@ -7139,13 +7026,12 @@ bool api_pipe_request(pipes_struct *p);
 
 pipes_struct *get_first_internal_pipe(void);
 pipes_struct *get_next_internal_pipe(pipes_struct *p);
-void set_pipe_handle_offset(int max_open_files);
 void init_rpc_pipe_hnd(void);
 
 bool fsp_is_np(struct files_struct *fsp);
-NTSTATUS np_open(struct smb_request *smb_req, struct connection_struct *conn,
-                const char *name, struct files_struct **pfsp);
-NTSTATUS np_write(struct files_struct *fsp, uint8_t *data, size_t len,
+NTSTATUS np_open(struct smb_request *smb_req, const char *name,
+                struct files_struct **pfsp);
+NTSTATUS np_write(struct files_struct *fsp, const uint8_t *data, size_t len,
                  ssize_t *nwritten);
 NTSTATUS np_read(struct files_struct *fsp, uint8_t *data, size_t len,
                 ssize_t *nread, bool *is_data_outstanding);
@@ -7762,7 +7648,7 @@ int wait_for_aio_completion(files_struct *fsp);
 /* The following definitions come from smbd/blocking.c  */
 
 bool push_blocking_lock_request( struct byte_range_lock *br_lck,
-               const struct smb_request *req,
+               struct smb_request *req,
                files_struct *fsp,
                int lock_timeout,
                int lock_num,
@@ -7934,6 +7820,7 @@ bool dns_register_smbd_reply(struct dns_reg_state *dns_state,
 mode_t unix_mode(connection_struct *conn, int dosmode, const char *fname,
                 const char *inherit_from_dir);
 uint32 dos_mode_msdfs(connection_struct *conn, const char *path,SMB_STRUCT_STAT *sbuf);
+int dos_attributes_to_stat_dos_flags(uint32_t dosmode);
 uint32 dos_mode(connection_struct *conn, const char *path,SMB_STRUCT_STAT *sbuf);
 int file_set_dosmode(connection_struct *conn, const char *fname,
                     uint32 dosmode, SMB_STRUCT_STAT *st,
@@ -8029,14 +7916,14 @@ void file_sync_all(connection_struct *conn);
 void file_free(struct smb_request *req, files_struct *fsp);
 files_struct *file_fnum(uint16 fnum);
 files_struct *file_fsp(struct smb_request *req, uint16 fid);
-NTSTATUS dup_file_fsp(struct smb_request *req, files_struct *fsp,
+void dup_file_fsp(struct smb_request *req, files_struct *from,
                      uint32 access_mask, uint32 share_access,
-                     uint32 create_options, files_struct **result);
+                     uint32 create_options, files_struct *to);
 
 /* The following definitions come from smbd/ipc.c  */
 
 void send_trans_reply(connection_struct *conn,
-                     const uint8_t *inbuf,
+                     struct smb_request *req,
                      char *rparam, int rparam_len,
                      char *rdata, int rdata_len,
                      bool buffer_too_large);
@@ -8126,7 +8013,8 @@ NTSTATUS create_conn_struct(TALLOC_CTX *ctx,
                                connection_struct **pconn,
                                int snum,
                                const char *path,
-                           char **poldcwd);
+                               struct auth_serversupplied_info *server_info,
+                               char **poldcwd);
 
 /* The following definitions come from smbd/negprot.c  */
 
@@ -8135,11 +8023,11 @@ void reply_negprot(struct smb_request *req);
 /* The following definitions come from smbd/notify.c  */
 
 void change_notify_reply(connection_struct *conn,
-                       const uint8 *request_buf, uint32 max_param,
+                        struct smb_request *req, uint32 max_param,
                         struct notify_change_buf *notify_buf);
 NTSTATUS change_notify_create(struct files_struct *fsp, uint32 filter,
                              bool recursive);
-NTSTATUS change_notify_add_request(const struct smb_request *req,
+NTSTATUS change_notify_add_request(struct smb_request *req,
                                uint32 max_param,
                                uint32 filter, bool recursive,
                                struct files_struct *fsp);
@@ -8204,79 +8092,79 @@ void reply_nttranss(struct smb_request *req);
 
 /* The following definitions come from smbd/open.c  */
 
+NTSTATUS smb1_file_se_access_check(const struct security_descriptor *sd,
+                          const NT_USER_TOKEN *token,
+                          uint32_t access_desired,
+                          uint32_t *access_granted);
 NTSTATUS fd_close(files_struct *fsp);
+void change_file_owner_to_parent(connection_struct *conn,
+                                const char *inherit_from_dir,
+                                files_struct *fsp);
+NTSTATUS change_dir_owner_to_parent(connection_struct *conn,
+                                   const char *inherit_from_dir,
+                                   const char *fname,
+                                   SMB_STRUCT_STAT *psbuf);
+bool is_executable(const char *fname);
+bool is_stat_open(uint32 access_mask);
+bool request_timed_out(struct timeval request_time,
+                      struct timeval timeout);
+bool open_match_attributes(connection_struct *conn,
+                          const char *path,
+                          uint32 old_dos_attr,
+                          uint32 new_dos_attr,
+                          mode_t existing_unx_mode,
+                          mode_t new_unx_mode,
+                          mode_t *returned_unx_mode);
+NTSTATUS fcb_or_dos_open(struct smb_request *req,
+                        connection_struct *conn,
+                        files_struct *fsp_to_dup_into,
+                        const char *fname,
+                        struct file_id id,
+                        uint16 file_pid,
+                        uint16 vuid,
+                        uint32 access_mask,
+                        uint32 share_access,
+                        uint32 create_options);
 bool map_open_params_to_ntcreate(const char *fname, int deny_mode, int open_func,
                                 uint32 *paccess_mask,
                                 uint32 *pshare_mode,
                                 uint32 *pcreate_disposition,
                                 uint32 *pcreate_options);
-NTSTATUS open_file_ntcreate(connection_struct *conn,
-                           struct smb_request *req,
-                           const char *fname,
-                           SMB_STRUCT_STAT *psbuf,
-                           uint32 access_mask,         /* access bits (FILE_READ_DATA etc.) */
-                           uint32 share_access,        /* share constants (FILE_SHARE_READ etc) */
-                           uint32 create_disposition,  /* FILE_OPEN_IF etc. */
-                           uint32 create_options,      /* options such as delete on close. */
-                           uint32 new_dos_attributes,  /* attributes used for new file. */
-                           int oplock_request,         /* internal Samba oplock codes. */
-                                                       /* Information (FILE_EXISTS etc.) */
-                           int *pinfo,
-                           files_struct **result);
 NTSTATUS open_file_fchmod(struct smb_request *req, connection_struct *conn,
                          const char *fname,
                          SMB_STRUCT_STAT *psbuf, files_struct **result);
 NTSTATUS close_file_fchmod(struct smb_request *req, files_struct *fsp);
-NTSTATUS open_directory(connection_struct *conn,
-                       struct smb_request *req,
-                       const char *fname,
-                       SMB_STRUCT_STAT *psbuf,
-                       uint32 access_mask,
-                       uint32 share_access,
-                       uint32 create_disposition,
-                       uint32 create_options,
-                       uint32 file_attributes,
-                       int *pinfo,
-                       files_struct **result);
 NTSTATUS create_directory(connection_struct *conn, struct smb_request *req, const char *directory);
 void msg_file_was_renamed(struct messaging_context *msg,
                          void *private_data,
                          uint32_t msg_type,
                          struct server_id server_id,
                          DATA_BLOB *data);
-NTSTATUS create_file_unixpath(connection_struct *conn,
-                             struct smb_request *req,
-                             const char *fname,
-                             uint32_t access_mask,
-                             uint32_t share_access,
-                             uint32_t create_disposition,
-                             uint32_t create_options,
-                             uint32_t file_attributes,
-                             uint32_t oplock_request,
-                             uint64_t allocation_size,
-                             struct security_descriptor *sd,
-                             struct ea_list *ea_list,
-
-                             files_struct **result,
-                             int *pinfo,
-                             SMB_STRUCT_STAT *psbuf);
-NTSTATUS create_file(connection_struct *conn,
-                    struct smb_request *req,
-                    uint16_t root_dir_fid,
-                    const char *fname,
-                    uint32_t access_mask,
-                    uint32_t share_access,
-                    uint32_t create_disposition,
-                    uint32_t create_options,
-                    uint32_t file_attributes,
-                    uint32_t oplock_request,
-                    uint64_t allocation_size,
-                    struct security_descriptor *sd,
-                    struct ea_list *ea_list,
-
-                    files_struct **result,
-                    int *pinfo,
-                    SMB_STRUCT_STAT *psbuf);
+struct case_semantics_state;
+struct case_semantics_state *set_posix_case_semantics(TALLOC_CTX *mem_ctx,
+                                                     connection_struct *conn);
+NTSTATUS create_file_default(connection_struct *conn,
+                            struct smb_request *req,
+                            uint16_t root_dir_fid,
+                            const char *fname,
+                            uint32_t create_file_flags,
+                            uint32_t access_mask,
+                            uint32_t share_access,
+                            uint32_t create_disposition,
+                            uint32_t create_options,
+                            uint32_t file_attributes,
+                            uint32_t oplock_request,
+                            uint64_t allocation_size,
+                            struct security_descriptor *sd,
+                            struct ea_list *ea_list,
+
+                            files_struct **result,
+                            int *pinfo,
+                            SMB_STRUCT_STAT *psbuf);
+NTSTATUS get_relative_fid_filename(connection_struct *conn,
+                                  struct smb_request *req,
+                                  uint16_t root_dir_fid,
+                                  const char *fname, char **new_fname);
 
 /* The following definitions come from smbd/oplock.c  */
 
@@ -8335,6 +8223,8 @@ void reply_pipe_close(connection_struct *conn, struct smb_request *req);
 
 /* The following definitions come from smbd/posix_acls.c  */
 
+void create_file_sids(const SMB_STRUCT_STAT *psbuf, DOM_SID *powner_sid, DOM_SID *pgroup_sid);
+bool nt4_compatible_acls(void);
 NTSTATUS unpack_nt_owners(int snum, uid_t *puser, gid_t *pgrp, uint32 security_info_sent, const SEC_DESC *psd);
 SMB_ACL_T free_empty_sys_acl(connection_struct *conn, SMB_ACL_T the_acl);
 NTSTATUS posix_fget_nt_acl(struct files_struct *fsp, uint32_t security_info,
@@ -8390,7 +8280,7 @@ void reply_outbuf(struct smb_request *req, uint8 num_words, uint32 num_bytes);
 const char *smb_fn_name(int type);
 void add_to_common_flags2(uint32 v);
 void remove_from_common_flags2(uint32 v);
-void construct_reply_common(const char *inbuf, char *outbuf);
+void construct_reply_common_req(struct smb_request *req, char *outbuf);
 void chain_reply(struct smb_request *req);
 void check_reload(time_t t);
 void smbd_process(void);
@@ -8432,6 +8322,12 @@ size_t srvstr_get_path(TALLOC_CTX *ctx,
                        size_t src_len,
                        int flags,
                        NTSTATUS *err);
+size_t srvstr_get_path_req_wcard(TALLOC_CTX *mem_ctx, struct smb_request *req,
+                                char **pp_dest, const char *src, int flags,
+                                NTSTATUS *err, bool *contains_wcard);
+size_t srvstr_get_path_req(TALLOC_CTX *mem_ctx, struct smb_request *req,
+                          char **pp_dest, const char *src, int flags,
+                          NTSTATUS *err);
 bool check_fsp_open(connection_struct *conn, struct smb_request *req,
                    files_struct *fsp);
 bool check_fsp(connection_struct *conn, struct smb_request *req,
@@ -8517,9 +8413,12 @@ NTSTATUS copy_file(TALLOC_CTX *ctx,
                        int count,
                        bool target_is_directory);
 void reply_copy(struct smb_request *req);
-uint32 get_lock_pid( char *data, int data_offset, bool large_file_format);
-uint64_t get_lock_count( char *data, int data_offset, bool large_file_format);
-uint64_t get_lock_offset( char *data, int data_offset, bool large_file_format, bool *err);
+uint32 get_lock_pid(const uint8_t *data, int data_offset,
+                   bool large_file_format);
+uint64_t get_lock_count(const uint8_t *data, int data_offset,
+                       bool large_file_format);
+uint64_t get_lock_offset(const uint8_t *data, int data_offset,
+                        bool large_file_format, bool *err);
 void reply_lockingX(struct smb_request *req);
 void reply_readbmpx(struct smb_request *req);
 void reply_readbs(struct smb_request *req);
@@ -8573,10 +8472,6 @@ bool set_current_service(connection_struct *conn, uint16 flags, bool do_chdir);
 void load_registry_shares(void);
 int add_home_service(const char *service, const char *username, const char *homedir);
 int find_service(fstring service);
-connection_struct *make_connection_with_chdir(const char *service_in,
-                                             DATA_BLOB password, 
-                                             const char *dev, uint16 vuid,
-                                             NTSTATUS *status);
 connection_struct *make_connection(const char *service_in, DATA_BLOB password, 
                                   const char *pdev, uint16 vuid,
                                   NTSTATUS *status);
@@ -8604,10 +8499,11 @@ bool token_contains_name_in_list(const char *username,
                                 const struct nt_user_token *token,
                                 const char **list);
 bool user_ok_token(const char *username, const char *domain,
-                  struct nt_user_token *token, int snum);
+                  const struct nt_user_token *token, int snum);
 bool is_share_read_only_for_token(const char *username,
                                  const char *domain,
-                                 struct nt_user_token *token, int snum);
+                                 const struct nt_user_token *token,
+                                 connection_struct *conn);
 
 /* The following definitions come from smbd/srvstr.c  */
 
@@ -8812,6 +8708,7 @@ NTSTATUS idmap_backends_sid_to_unixid(const char *domname,
 NTSTATUS idmap_new_mapping(const struct dom_sid *psid, enum id_type type,
                           struct unixid *pxid);
 NTSTATUS idmap_set_mapping(const struct id_map *map);
+NTSTATUS idmap_remove_mapping(const struct id_map *map);
 
 /* The following definitions come from winbindd/idmap_cache.c  */