s3: Modify direct callers of create_file_unix_path to call SMB_VFS_CREATE_FILE
[samba.git] / source3 / include / proto.h
index abb65ac654c53c50f228bf0d97fd7382946b69a5..c32234a1d8d92b4edbace390661af4d796306968 100644 (file)
@@ -1251,6 +1251,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);
@@ -1395,13 +1396,13 @@ bool is_loopback_ip_v4(struct in_addr ip);
 bool is_loopback_addr(const struct sockaddr *pss);
 bool is_zero_addr(const struct sockaddr *pss);
 void zero_ip_v4(struct in_addr *ip);
-void zero_addr(struct sockaddr_storage *pss);
+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 *ip1,
                const struct sockaddr *ip2,
                const struct sockaddr *mask);
-bool addr_equal(const struct sockaddr *ip1,
+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);
@@ -4773,8 +4774,9 @@ 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 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);
@@ -4820,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);
@@ -5597,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,
@@ -5617,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,
@@ -5642,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,
@@ -5711,11 +5733,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);
@@ -6964,7 +7018,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);
 
@@ -6975,8 +7028,8 @@ pipes_struct *get_next_internal_pipe(pipes_struct *p);
 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_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,
@@ -8081,39 +8134,24 @@ void msg_file_was_renamed(struct messaging_context *msg,
                          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);
+NTSTATUS create_file_default(connection_struct *conn,
+                            struct smb_request *req,
+                            uint16_t root_dir_fid,
+                            const char *fname,
+                            bool is_dos_path,
+                            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);
 
 /* The following definitions come from smbd/oplock.c  */
 
@@ -8173,6 +8211,7 @@ 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,
@@ -8420,10 +8459,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);