/* The following definitions come from auth/auth_sam.c */
+NTSTATUS check_sam_security(const DATA_BLOB *challenge,
+ TALLOC_CTX *mem_ctx,
+ const struct auth_usersupplied_info *user_info,
+ struct auth_serversupplied_info **server_info);
NTSTATUS auth_sam_init(void);
/* The following definitions come from auth/auth_server.c */
bool make_auth_methods(struct auth_context *auth_context, auth_methods **auth_method) ;
bool is_trusted_domain(const char* dom_name);
+/* The following definitions come from auth/user_info.c */
+
+NTSTATUS make_user_info(struct auth_usersupplied_info **user_info,
+ const char *smb_name,
+ const char *internal_username,
+ const char *client_domain,
+ const char *domain,
+ const char *wksta_name,
+ const DATA_BLOB *lm_pwd,
+ const DATA_BLOB *nt_pwd,
+ const DATA_BLOB *lm_interactive_pwd,
+ const DATA_BLOB *nt_interactive_pwd,
+ const DATA_BLOB *plaintext,
+ bool encrypted);
+void free_user_info(struct auth_usersupplied_info **user_info);
+
/* The following definitions come from auth/auth_winbind.c */
NTSTATUS auth_winbind_init(void);
+/* The following definitions come from auth/server_info.c */
+
+struct auth_serversupplied_info *make_server_info(TALLOC_CTX *mem_ctx);
+
/* The following definitions come from auth/auth_wbc.c */
NTSTATUS auth_wbc_init(void);
const char *caddr);
bool check_access(int sock, const char **allow_list, const char **deny_list);
-/* The following definitions come from lib/account_pol.c */
+/* The following definitions come from passdb/account_pol.c */
void account_policy_names_list(const char ***names, int *num_names);
const char *decode_account_policy_name(enum pdb_policy_type type);
/* The following definitions come from lib/bitmap.c */
-struct bitmap *bitmap_allocate(int n);
-void bitmap_free(struct bitmap *bm);
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);
/* The following definitions come from lib/secdesc.c */
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 *sec_desc_merge(TALLOC_CTX *ctx, SEC_DESC *new_sdb, SEC_DESC *old_sdb);
+SEC_DESC_BUF *sec_desc_merge_buf(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,
uint16 type,
time_t cli_make_unix_date3(struct cli_state *cli, const void *date_ptr);
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);
struct passwd *getpwnam_alloc(TALLOC_CTX *mem_ctx, const char *name);
struct passwd *getpwuid_alloc(TALLOC_CTX *mem_ctx, uid_t uid) ;
-/* The following definitions come from lib/util_reg.c */
+/* The following definitions come from ..libcli/registry/util_reg.c */
-const char *reg_type_lookup(enum winreg_Type type);
+const char *str_regtype(int type);
bool push_reg_sz(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, const char *s);
bool push_reg_multi_sz(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, const char **a);
bool pull_reg_sz(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob, const char **s);
bool pull_reg_multi_sz(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob, const char ***a);
-/* The following definitions come from lib/util_reg_api.c */
-
-WERROR registry_pull_value(TALLOC_CTX *mem_ctx,
- struct registry_value **pvalue,
- enum winreg_Type type, uint8 *data,
- uint32 size, uint32 length);
-WERROR registry_push_value(TALLOC_CTX *mem_ctx,
- const struct registry_value *value,
- DATA_BLOB *presult);
-
/* The following definitions come from lib/util_seaccess.c */
void se_map_generic(uint32 *access_mask, const struct generic_mapping *mapping);
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/util_unistr.c */
/* The following definitions come from libads/authdata.c */
-struct PAC_LOGON_INFO *get_logon_info_from_pac(struct PAC_DATA *pac_data);
NTSTATUS kerberos_return_pac(TALLOC_CTX *mem_ctx,
const char *name,
const char *pass,
bool add_netbios_addr,
time_t renewable_time,
const char *impersonate_princ_s,
- struct PAC_DATA **pac_ret);
-NTSTATUS kerberos_return_info3_from_pac(TALLOC_CTX *mem_ctx,
- const char *name,
- const char *pass,
- time_t time_offset,
- time_t *expire_time,
- time_t *renew_till_time,
- const char *cache_name,
- bool request_pac,
- bool add_netbios_addr,
- time_t renewable_time,
- const char *impersonate_princ_s,
- struct netr_SamInfo3 **info3);
+ struct PAC_LOGON_INFO **logon_info);
/* The following definitions come from libads/cldap.c */
bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx,
bool create_local_private_krb5_conf_for_domain(const char *realm,
const char *domain,
const char *sitename,
- struct sockaddr_storage *pss);
+ struct sockaddr_storage *pss,
+ const char *kdc_name);
/* The following definitions come from libads/kerberos_keytab.c */
time_t time_offset,
const DATA_BLOB *ticket,
char **principal,
- struct PAC_DATA **pac_data,
+ struct PAC_LOGON_INFO **logon_info,
DATA_BLOB *ap_rep,
DATA_BLOB *session_key,
bool use_replay_cache);
ADS_STATUS ads_guess_service_principal(ADS_STRUCT *ads,
char **returned_principal);
-/* The following definitions come from libgpo/gpo_filesync.c */
-
-NTSTATUS gpo_copy_file(TALLOC_CTX *mem_ctx,
- struct cli_state *cli,
- const char *nt_path,
- const char *unix_path);
-NTSTATUS gpo_sync_directories(TALLOC_CTX *mem_ctx,
- struct cli_state *cli,
- const char *nt_path,
- const char *local_path);
-
-/* The following definitions come from libgpo/gpo_ini.c */
-
-NTSTATUS parse_gpt_ini(TALLOC_CTX *mem_ctx,
- const char *filename,
- uint32_t *version,
- char **display_name);
-
-/* The following definitions come from libgpo/gpo_reg.c */
-
-struct nt_user_token *registry_create_system_token(TALLOC_CTX *mem_ctx);
-WERROR gp_init_reg_ctx(TALLOC_CTX *mem_ctx,
- const char *initial_path,
- uint32_t desired_access,
- const struct nt_user_token *token,
- struct gp_registry_context **reg_ctx);
-void gp_free_reg_ctx(struct gp_registry_context *reg_ctx);
-WERROR gp_store_reg_subkey(TALLOC_CTX *mem_ctx,
- const char *subkeyname,
- struct registry_key *curr_key,
- struct registry_key **new_key);
-WERROR gp_read_reg_subkey(TALLOC_CTX *mem_ctx,
- struct gp_registry_context *reg_ctx,
- const char *subkeyname,
- struct registry_key **key);
-WERROR gp_store_reg_val_sz(TALLOC_CTX *mem_ctx,
- struct registry_key *key,
- const char *val_name,
- const char *val);
-WERROR gp_read_reg_val_sz(TALLOC_CTX *mem_ctx,
- struct registry_key *key,
- const char *val_name,
- const char **val);
-WERROR gp_reg_state_store(TALLOC_CTX *mem_ctx,
- uint32_t flags,
- const char *dn,
- const struct nt_user_token *token,
- struct GROUP_POLICY_OBJECT *gpo_list);
-WERROR gp_reg_state_read(TALLOC_CTX *mem_ctx,
- uint32_t flags,
- const DOM_SID *sid,
- struct GROUP_POLICY_OBJECT **gpo_list);
-WERROR gp_secure_key(TALLOC_CTX *mem_ctx,
- uint32_t flags,
- struct registry_key *key,
- const DOM_SID *sid);
-void dump_reg_val(int lvl, const char *direction,
- const char *key, const char *subkey,
- struct registry_value *val);
-void dump_reg_entry(uint32_t flags,
- const char *dir,
- struct gp_registry_entry *entry);
-void dump_reg_entries(uint32_t flags,
- const char *dir,
- struct gp_registry_entry *entries,
- size_t num_entries);
-bool add_gp_registry_entry_to_array(TALLOC_CTX *mem_ctx,
- struct gp_registry_entry *entry,
- struct gp_registry_entry **entries,
- size_t *num);
-WERROR reg_apply_registry_entry(TALLOC_CTX *mem_ctx,
- struct registry_key *root_key,
- struct gp_registry_context *reg_ctx,
- struct gp_registry_entry *entry,
- const struct nt_user_token *token,
- uint32_t flags);
-
-
-#include "librpc/gen_ndr/ndr_dfs.h"
-#include "librpc/gen_ndr/ndr_dssetup.h"
-#include "librpc/gen_ndr/ndr_echo.h"
-#include "librpc/gen_ndr/ndr_eventlog.h"
#include "librpc/gen_ndr/ndr_krb5pac.h"
-#include "librpc/gen_ndr/ndr_lsa.h"
-#include "librpc/gen_ndr/ndr_misc.h"
-#include "librpc/gen_ndr/ndr_netlogon.h"
-#include "librpc/gen_ndr/ndr_notify.h"
-#include "librpc/gen_ndr/ndr_ntsvcs.h"
-#include "librpc/gen_ndr/ndr_samr.h"
-#include "librpc/gen_ndr/ndr_security.h"
-#include "librpc/gen_ndr/ndr_srvsvc.h"
-#include "librpc/gen_ndr/ndr_svcctl.h"
-#include "librpc/gen_ndr/ndr_winreg.h"
-#include "librpc/gen_ndr/ndr_wkssvc.h"
-#include "librpc/gen_ndr/ndr_drsuapi.h"
#include "librpc/gen_ndr/ndr_spoolss.h"
-#include "librpc/gen_ndr/ndr_initshutdown.h"
-
-#include "librpc/ndr/libndr.h"
/* The following definitions come from librpc/ndr/util.c */
char *dom_sid_string(TALLOC_CTX *mem_ctx, const struct dom_sid *sid);
-/* The following definitions come from librpc/rpc/binding.c */
-
-const char *epm_floor_string(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor);
-_PUBLIC_ char *dcerpc_binding_string(TALLOC_CTX *mem_ctx, const struct dcerpc_binding *b);
-_PUBLIC_ NTSTATUS dcerpc_parse_binding(TALLOC_CTX *mem_ctx, const char *s, struct dcerpc_binding **b_out);
-_PUBLIC_ NTSTATUS dcerpc_floor_get_lhs_data(const struct epm_floor *epm_floor,
- struct ndr_syntax_id *syntax);
-const char *dcerpc_floor_get_rhs_data(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor);
-enum dcerpc_transport_t dcerpc_transport_by_endpoint_protocol(int prot);
-_PUBLIC_ enum dcerpc_transport_t dcerpc_transport_by_tower(const struct epm_tower *tower);
-_PUBLIC_ const char *derpc_transport_string_by_transport(enum dcerpc_transport_t t);
-_PUBLIC_ NTSTATUS dcerpc_binding_from_tower(TALLOC_CTX *mem_ctx,
- struct epm_tower *tower,
- struct dcerpc_binding **b_out);
-_PUBLIC_ NTSTATUS dcerpc_binding_build_tower(TALLOC_CTX *mem_ctx,
- const struct dcerpc_binding *binding,
- struct epm_tower *tower);
-
/* The following definitions come from libsmb/cliconnect.c */
ADS_STATUS cli_session_setup_spnego(struct cli_state *cli, const char *user,
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 */
NTSTATUS cli_qpathinfo_alt_name(struct cli_state *cli, const char *fname, fstring alt_name);
/* The following definitions come from libsmb/clirap2.c */
+struct rap_group_info_1;
+struct rap_user_info_1;
+struct rap_share_info_2;
int cli_NetGroupDelete(struct cli_state *cli, const char *group_name);
-int cli_NetGroupAdd(struct cli_state *cli, RAP_GROUP_INFO_1 *grinfo);
+int cli_NetGroupAdd(struct cli_state *cli, struct rap_group_info_1 *grinfo);
int cli_RNetGroupEnum(struct cli_state *cli, void (*fn)(const char *, const char *, void *), void *state);
int cli_RNetGroupEnum0(struct cli_state *cli,
void (*fn)(const char *, void *),
int cli_NetGroupGetUsers(struct cli_state * cli, const char *group_name, void (*fn)(const char *, void *), void *state );
int cli_NetUserGetGroups(struct cli_state * cli, const char *user_name, void (*fn)(const char *, void *), void *state );
int cli_NetUserDelete(struct cli_state *cli, const char * user_name );
-int cli_NetUserAdd(struct cli_state *cli, RAP_USER_INFO_1 * userinfo );
+int cli_NetUserAdd(struct cli_state *cli, struct rap_user_info_1 * userinfo );
int cli_RNetUserEnum(struct cli_state *cli, void (*fn)(const char *, const char *, const char *, const char *, void *), void *state);
int cli_RNetUserEnum0(struct cli_state *cli,
void (*fn)(const char *, void *),
const char * base_path,
void (*fn)(const char *, const char *, uint16, uint16,
uint32));
-int cli_NetShareAdd(struct cli_state *cli, RAP_SHARE_INFO_2 * sinfo );
+int cli_NetShareAdd(struct cli_state *cli, struct rap_share_info_2 * sinfo );
int cli_NetShareDelete(struct cli_state *cli, const char * share_name );
bool cli_get_pdc_name(struct cli_state *cli, const char *workgroup, char **pdc_name);
bool cli_get_server_domain(struct cli_state *cli);
/* The following definitions come from ../librpc/rpc/dcerpc_error.c */
const char *dcerpc_errstr(TALLOC_CTX *mem_ctx, uint32_t fault_code);
+NTSTATUS dcerpc_fault_to_nt_status(uint32_t fault_code);
/* The following definitions come from libsmb/dsgetdcname.c */
void debug_ntlmssp_flags(uint32 neg_flags);
NTSTATUS ntlmssp_set_username(struct ntlmssp_state *ntlmssp_state, const char *user) ;
NTSTATUS ntlmssp_set_hashes(struct ntlmssp_state *ntlmssp_state,
- const unsigned char lm_hash[16],
- const unsigned char nt_hash[16]) ;
+ const uint8_t lm_hash[16],
+ const uint8_t nt_hash[16]) ;
NTSTATUS ntlmssp_set_password(struct ntlmssp_state *ntlmssp_state, const char *password) ;
NTSTATUS ntlmssp_set_domain(struct ntlmssp_state *ntlmssp_state, const char *domain) ;
-NTSTATUS ntlmssp_set_workstation(struct ntlmssp_state *ntlmssp_state, const char *workstation) ;
void ntlmssp_want_feature_list(struct ntlmssp_state *ntlmssp_state, char *feature_list);
-void ntlmssp_want_feature(struct ntlmssp_state *ntlmssp_state, uint32 feature);
+void ntlmssp_want_feature(struct ntlmssp_state *ntlmssp_state, uint32_t feature);
NTSTATUS ntlmssp_update(struct ntlmssp_state *ntlmssp_state,
const DATA_BLOB in, DATA_BLOB *out) ;
void ntlmssp_end(struct ntlmssp_state **ntlmssp_state);
DATA_BLOB ntlmssp_weaken_keys(struct ntlmssp_state *ntlmssp_state, TALLOC_CTX *mem_ctx);
-NTSTATUS ntlmssp_server_start(struct ntlmssp_state **ntlmssp_state);
-NTSTATUS ntlmssp_client_start(struct ntlmssp_state **ntlmssp_state);
+NTSTATUS ntlmssp_server_start(TALLOC_CTX *mem_ctx,
+ bool is_standalone,
+ const char *netbios_name,
+ const char *netbios_domain,
+ const char *dns_name,
+ const char *dns_domain,
+ struct ntlmssp_state **ntlmssp_state);
+NTSTATUS ntlmssp_client_start(TALLOC_CTX *mem_ctx,
+ const char *netbios_name,
+ const char *netbios_domain,
+ bool use_ntlmv2,
+ struct ntlmssp_state **_ntlmssp_state);
/* The following definitions come from libsmb/ntlmssp_sign.c */
NTSTATUS ntlmssp_sign_packet(struct ntlmssp_state *ntlmssp_state,
- const uchar *data, size_t length,
- const uchar *whole_pdu, size_t pdu_length,
- DATA_BLOB *sig) ;
+ const uint8_t *data, size_t length,
+ const uint8_t *whole_pdu, size_t pdu_length,
+ DATA_BLOB *sig);
NTSTATUS ntlmssp_check_packet(struct ntlmssp_state *ntlmssp_state,
- const uchar *data, size_t length,
- const uchar *whole_pdu, size_t pdu_length,
- const DATA_BLOB *sig) ;
+ const uint8_t *data, size_t length,
+ const uint8_t *whole_pdu, size_t pdu_length,
+ const DATA_BLOB *sig) ;
NTSTATUS ntlmssp_seal_packet(struct ntlmssp_state *ntlmssp_state,
- uchar *data, size_t length,
- uchar *whole_pdu, size_t pdu_length,
+ uint8_t *data, size_t length,
+ const uint8_t *whole_pdu, size_t pdu_length,
DATA_BLOB *sig);
NTSTATUS ntlmssp_unseal_packet(struct ntlmssp_state *ntlmssp_state,
- uchar *data, size_t length,
- uchar *whole_pdu, size_t pdu_length,
- DATA_BLOB *sig);
+ uint8_t *data, size_t length,
+ const uint8_t *whole_pdu, size_t pdu_length,
+ const DATA_BLOB *sig);
NTSTATUS ntlmssp_sign_init(struct ntlmssp_state *ntlmssp_state);
/* The following definitions come from libsmb/passchange.c */
struct smbd_server_connection;
bool srv_check_sign_mac(struct smbd_server_connection *conn,
- const char *inbuf, uint32_t *seqnum);
+ const char *inbuf, uint32_t *seqnum, bool trusted_channel);
void srv_calculate_sign_mac(struct smbd_server_connection *conn,
char *outbuf, uint32_t seqnum);
void srv_cancel_sign_response(struct smbd_server_connection *conn);
NTSTATUS brl_lock(struct messaging_context *msg_ctx,
struct byte_range_lock *br_lck,
- uint32 smbpid,
+ uint64_t smblctx,
struct server_id pid,
br_off start,
br_off size,
enum brl_type lock_type,
enum brl_flavour lock_flav,
bool blocking_lock,
- uint32 *psmbpid,
+ uint64_t *psmblctx,
struct blocking_lock_record *blr);
bool brl_unlock(struct messaging_context *msg_ctx,
struct byte_range_lock *br_lck,
- uint32 smbpid,
+ uint64_t smblctx,
struct server_id pid,
br_off start,
br_off size,
struct byte_range_lock *br_lck,
const struct lock_struct *plock);
bool brl_locktest(struct byte_range_lock *br_lck,
- uint32 smbpid,
+ uint64_t smblctx,
struct server_id pid,
br_off start,
br_off size,
enum brl_type lock_type,
enum brl_flavour lock_flav);
NTSTATUS brl_lockquery(struct byte_range_lock *br_lck,
- uint32 *psmbpid,
+ uint64_t *psmblctx,
struct server_id pid,
br_off *pstart,
br_off *psize,
enum brl_type *plock_type,
enum brl_flavour lock_flav);
bool brl_lock_cancel(struct byte_range_lock *br_lck,
- uint32 smbpid,
+ uint64_t smblctx,
struct server_id pid,
br_off start,
br_off size,
const char *lock_type_name(enum brl_type lock_type);
const char *lock_flav_name(enum brl_flavour lock_flav);
void init_strict_lock_struct(files_struct *fsp,
- uint32 smbpid,
+ uint64_t smblctx,
br_off start,
br_off size,
enum brl_type lock_type,
void strict_unlock_default(files_struct *fsp,
struct lock_struct *plock);
NTSTATUS query_lock(files_struct *fsp,
- uint32 *psmbpid,
+ uint64_t *psmblctx,
uint64_t *pcount,
uint64_t *poffset,
enum brl_type *plock_type,
enum brl_flavour lock_flav);
struct byte_range_lock *do_lock(struct messaging_context *msg_ctx,
files_struct *fsp,
- uint32 lock_pid,
+ uint64_t smblctx,
uint64_t count,
uint64_t offset,
enum brl_type lock_type,
enum brl_flavour lock_flav,
bool blocking_lock,
NTSTATUS *perr,
- uint32 *plock_pid,
+ uint64_t *psmblctx,
struct blocking_lock_record *blr);
NTSTATUS do_unlock(struct messaging_context *msg_ctx,
files_struct *fsp,
- uint32 lock_pid,
+ uint64_t smblctx,
uint64_t count,
uint64_t offset,
enum brl_flavour lock_flav);
NTSTATUS do_lock_cancel(files_struct *fsp,
- uint32 lock_pid,
+ uint64 smblctx,
uint64_t count,
uint64_t offset,
enum brl_flavour lock_flav,
struct blocking_lock_record *blr);
void locking_close_file(struct messaging_context *msg_ctx,
- files_struct *fsp);
+ files_struct *fsp,
+ enum file_close_type close_type);
bool locking_init(void);
bool locking_init_readonly(void);
bool locking_end(void);
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);
-void add_deferred_open(struct share_mode_lock *lck, uint16 mid,
+ uid_t uid, uint64_t mid, uint16 op_type);
+void add_deferred_open(struct share_mode_lock *lck, uint64_t mid,
struct timeval request_time,
struct file_id id);
bool del_share_mode(struct share_mode_lock *lck, files_struct *fsp);
-void del_deferred_open_entry(struct share_mode_lock *lck, uint16 mid);
+void del_deferred_open_entry(struct share_mode_lock *lck, uint64_t mid);
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, uint32 dosmode);
char *lp_shutdown_script(void);
char *lp_abort_shutdown_script(void);
char *lp_username_map_script(void);
+int lp_username_map_cache_time(void);
char *lp_check_password_script(void);
char *lp_wins_hook(void);
const char *lp_template_homedir(void);
int lp_usershare_max_shares(void);
const char *lp_socket_options(void);
int lp_config_backend(void);
+int lp_smb2_max_read(void);
+int lp_smb2_max_write(void);
+int lp_smb2_max_trans(void);
char *lp_preexec(int );
char *lp_postexec(int );
char *lp_rootpreexec(int );
const char **lp_cluster_addresses(void);
bool lp_clustering(void);
int lp_ctdb_timeout(void);
+int lp_ctdb_locktime_warn_threshold(void);
char *lp_printcommand(int );
char *lp_lpqcommand(int );
char *lp_lprmcommand(int );
bool lp_dos_filetimes(int );
bool lp_dos_filetime_resolution(int );
bool lp_fake_dir_create_times(int);
+bool lp_async_smb_echo_handler(void);
bool lp_blocking_locks(int );
bool lp_inherit_perms(int );
bool lp_inherit_acls(int );
bool lp_parm_bool(int snum, const char *type, const char *option, bool def);
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);
bool lp_add_home(const char *pszHomename, int iDefaultService,
const char *user, const char *pszHomedir);
int lp_add_service(const char *pszService, int iDefaultService);
int numlines,
char **pp_sharepath,
char **pp_comment,
+ char **pp_cp_share_name,
SEC_DESC **ppsd,
bool *pallow_guest);
int load_usershare_service(const char *servicename);
bool parse_lpq_entry(enum printing_types printing_type,char *line,
print_queue_struct *buf,
print_status_struct *status,bool first);
+uint32_t print_parse_jobid(const char *fname);
/* The following definitions come from printing/notify.c */
void notify_job_name(const char *sharename, uint32 jobid, char *name);
void notify_job_submitted(const char *sharename, uint32 jobid,
time_t submitted);
-void notify_printer_driver(int snum, char *driver_name);
-void notify_printer_comment(int snum, char *comment);
-void notify_printer_sharename(int snum, char *share_name);
-void notify_printer_printername(int snum, char *printername);
-void notify_printer_port(int snum, char *port_name);
-void notify_printer_location(int snum, char *location);
+void notify_printer_driver(int snum, const char *driver_name);
+void notify_printer_comment(int snum, const char *comment);
+void notify_printer_sharename(int snum, const char *share_name);
+void notify_printer_printername(int snum, const char *printername);
+void notify_printer_port(int snum, const char *port_name);
+void notify_printer_location(int snum, const char *location);
void notify_printer_byname( const char *printername, uint32 change, const char *value );
/* The following definitions come from printing/nt_printing.c */
NT_DEVICEMODE *construct_nt_devicemode(const fstring default_devicename);
void free_nt_devicemode(NT_DEVICEMODE **devmode_ptr);
int unpack_devicemode(NT_DEVICEMODE **nt_devmode, const uint8 *buf, int buflen);
+WERROR spoolss_create_default_devmode(TALLOC_CTX *mem_ctx,
+ const char *devicename,
+ struct spoolss_DeviceMode **devmode);
+WERROR spoolss_create_default_secdesc(TALLOC_CTX *mem_ctx,
+ struct spoolss_security_descriptor **secdesc);
int add_new_printer_key( NT_PRINTER_DATA *data, const char *name );
int delete_printer_key( NT_PRINTER_DATA *data, const char *name );
int lookup_printerkey( NT_PRINTER_DATA *data, const char *name );
uint32 level,
const char *sharename);
uint32 free_a_printer(NT_PRINTER_INFO_LEVEL **pp_printer, uint32 level);
+bool driver_info_ctr_to_info8(struct spoolss_AddDriverInfoCtr *r,
+ struct spoolss_DriverInfo8 *_info8);
uint32_t add_a_printer_driver(TALLOC_CTX *mem_ctx,
struct spoolss_AddDriverInfoCtr *r,
char **driver_name,
/* The following definitions come from printing/pcap.c */
-bool pcap_cache_add_specific(struct pcap_cache **ppcache, const char *name, const char *comment);
-void pcap_cache_destroy_specific(struct pcap_cache **ppcache);
-bool pcap_cache_add(const char *name, const char *comment);
-bool pcap_cache_loaded(void);
-void pcap_cache_replace(const struct pcap_cache *cache);
void pcap_cache_reload(void);
bool pcap_printername_ok(const char *printername);
-void pcap_printer_fn_specific(const struct pcap_cache *, void (*fn)(const char *, const char *, void *), void *);
-void pcap_printer_fn(void (*fn)(const char *, const char *, void *), void *);
-
-/* The following definitions come from printing/print_aix.c */
-
-bool aix_cache_reload(void);
-
-/* The following definitions come from printing/print_cups.c */
-
-bool cups_cache_reload(void);
-bool cups_pull_comment_location(NT_PRINTER_INFO_LEVEL_2 *printer);
-
-/* The following definitions come from printing/print_generic.c */
-
-
-/* The following definitions come from printing/print_iprint.c */
-
-bool iprint_cache_reload(void);
-
-/* The following definitions come from printing/print_svid.c */
-
-bool sysv_cache_reload(void);
/* The following definitions come from printing/printfsp.c */
const char *fname,
uint16_t current_vuid, files_struct *fsp);
void print_fsp_end(files_struct *fsp, enum file_close_type close_type);
+SMB_OFF_T printfile_offset(files_struct *fsp, SMB_OFF_T offset);
/* The following definitions come from printing/printing.c */
int print_job_fd(const char* sharename, uint32 jobid);
char *print_job_fname(const char* sharename, uint32 jobid);
NT_DEVICEMODE *print_job_devmode(const char* sharename, uint32 jobid);
-bool print_job_set_place(const char *sharename, uint32 jobid, int place);
-bool print_job_set_name(const char *sharename, uint32 jobid, char *name);
+bool print_job_set_name(const char *sharename, uint32 jobid, const char *name);
+bool print_job_get_name(TALLOC_CTX *mem_ctx, const char *sharename, uint32_t jobid, char **name);
bool print_job_delete(struct auth_serversupplied_info *server_info, int snum,
uint32 jobid, WERROR *errcode);
bool print_job_pause(struct auth_serversupplied_info *server_info, int snum,
void set_profile_level(int level, struct server_id src);
bool profile_setup(struct messaging_context *msg_ctx, bool rdonly);
-/* The following definitions come from registry/reg_api.c */
-
-WERROR reg_openhive(TALLOC_CTX *mem_ctx, const char *hive,
- uint32 desired_access,
- const struct nt_user_token *token,
- struct registry_key **pkey);
-WERROR reg_openkey(TALLOC_CTX *mem_ctx, struct registry_key *parent,
- const char *name, uint32 desired_access,
- struct registry_key **pkey);
-WERROR reg_enumkey(TALLOC_CTX *mem_ctx, struct registry_key *key,
- uint32 idx, char **name, NTTIME *last_write_time);
-WERROR reg_enumvalue(TALLOC_CTX *mem_ctx, struct registry_key *key,
- uint32 idx, char **pname, struct registry_value **pval);
-WERROR reg_queryvalue(TALLOC_CTX *mem_ctx, struct registry_key *key,
- const char *name, struct registry_value **pval);
-WERROR reg_queryinfokey(struct registry_key *key, uint32_t *num_subkeys,
- uint32_t *max_subkeylen, uint32_t *max_subkeysize,
- uint32_t *num_values, uint32_t *max_valnamelen,
- uint32_t *max_valbufsize, uint32_t *secdescsize,
- NTTIME *last_changed_time);
-WERROR reg_createkey(TALLOC_CTX *ctx, struct registry_key *parent,
- const char *subkeypath, uint32 desired_access,
- struct registry_key **pkey,
- enum winreg_CreateAction *paction);
-WERROR reg_deletekey(struct registry_key *parent, const char *path);
-WERROR reg_setvalue(struct registry_key *key, const char *name,
- const struct registry_value *val);
-WERROR reg_deletevalue(struct registry_key *key, const char *name);
-WERROR reg_getkeysecurity(TALLOC_CTX *mem_ctx, struct registry_key *key,
- struct security_descriptor **psecdesc);
-WERROR reg_setkeysecurity(struct registry_key *key,
- struct security_descriptor *psecdesc);
-WERROR reg_getversion(uint32_t *version);
-WERROR reg_restorekey(struct registry_key *key, const char *fname);
-WERROR reg_savekey(struct registry_key *key, const char *fname);
-WERROR reg_deleteallvalues(struct registry_key *key);
-WERROR reg_open_path(TALLOC_CTX *mem_ctx, const char *orig_path,
- uint32 desired_access, const struct nt_user_token *token,
- struct registry_key **pkey);
-WERROR reg_deletekey_recursive(TALLOC_CTX *ctx,
- struct registry_key *parent,
- const char *path);
-WERROR reg_deletesubkeys_recursive(TALLOC_CTX *ctx,
- struct registry_key *parent,
- const char *path);
-WERROR reg_create_path(TALLOC_CTX *mem_ctx, const char *orig_path,
- uint32 desired_access,
- const struct nt_user_token *token,
- enum winreg_CreateAction *paction,
- struct registry_key **pkey);
-WERROR reg_delete_path(const struct nt_user_token *token,
- const char *orig_path);
-
-/* The following definitions come from registry/reg_backend_current_version.c */
-
-
-/* The following definitions come from registry/reg_backend_db.c */
-
-WERROR init_registry_key(const char *add_path);
-WERROR init_registry_data(void);
-WERROR regdb_init(void);
-WERROR regdb_open( void );
-int regdb_close( void );
-WERROR regdb_transaction_start(void);
-WERROR regdb_transaction_commit(void);
-WERROR regdb_transaction_cancel(void);
-int regdb_get_seqnum(void);
-bool regdb_store_keys(const char *key, struct regsubkey_ctr *ctr);
-int regdb_fetch_keys(const char *key, struct regsubkey_ctr *ctr);
-int regdb_fetch_values(const char* key, struct regval_ctr *values);
-bool regdb_store_values(const char *key, struct regval_ctr *values);
-bool regdb_subkeys_need_update(struct regsubkey_ctr *subkeys);
-bool regdb_values_need_update(struct regval_ctr *values);
-
-/* The following definitions come from registry/reg_backend_hkpt_params.c */
-
-
-/* The following definitions come from registry/reg_backend_netlogon_params.c */
-
-
-/* The following definitions come from registry/reg_backend_perflib.c */
-
-
-/* The following definitions come from registry/reg_backend_printing.c */
-
-
-/* The following definitions come from registry/reg_backend_prod_options.c */
-
-
-/* The following definitions come from registry/reg_backend_shares.c */
-
-
-/* The following definitions come from registry/reg_backend_smbconf.c */
-
-
-/* The following definitions come from registry/reg_backend_tcpip_params.c */
-
-
-/* The following definitions come from registry/reg_cachehook.c */
-
-WERROR reghook_cache_init(void);
-WERROR reghook_cache_add(const char *keyname, struct registry_ops *ops);
-struct registry_ops *reghook_cache_find(const char *keyname);
-void reghook_dump_cache( int debuglevel );
-
-/* The following definitions come from registry/reg_dispatcher.c */
-
-bool store_reg_keys(struct registry_key_handle *key,
- struct regsubkey_ctr *subkeys);
-bool store_reg_values(struct registry_key_handle *key, struct regval_ctr *val);
-WERROR create_reg_subkey(struct registry_key_handle *key, const char *subkey);
-WERROR delete_reg_subkey(struct registry_key_handle *key, const char *subkey);
-int fetch_reg_keys(struct registry_key_handle *key,
- struct regsubkey_ctr *subkey_ctr);
-int fetch_reg_values(struct registry_key_handle *key, struct regval_ctr *val);
-bool regkey_access_check(struct registry_key_handle *key, uint32 requested,
- uint32 *granted,
- const struct nt_user_token *token);
-WERROR regkey_get_secdesc(TALLOC_CTX *mem_ctx, struct registry_key_handle *key,
- struct security_descriptor **psecdesc);
-WERROR regkey_set_secdesc(struct registry_key_handle *key,
- struct security_descriptor *psecdesc);
-bool reg_subkeys_need_update(struct registry_key_handle *key,
- struct regsubkey_ctr *subkeys);
-bool reg_values_need_update(struct registry_key_handle *key,
- struct regval_ctr *values);
-
-/* The following definitions come from registry/reg_eventlog.c */
-
-bool eventlog_init_keys(void);
-bool eventlog_add_source( const char *eventlog, const char *sourcename,
- const char *messagefile );
-
-/* The following definitions come from registry/reg_init_basic.c */
-
-WERROR registry_init_common(void);
-WERROR registry_init_basic(void);
-
-/* The following definitions come from registry/reg_init_full.c */
-
-WERROR registry_init_full(void);
-
-/* The following definitions come from registry/reg_init_smbconf.c */
-
-NTSTATUS registry_create_admin_token(TALLOC_CTX *mem_ctx,
- NT_USER_TOKEN **ptoken);
-WERROR registry_init_smbconf(const char *keyname);
-
-/* The following definitions come from registry/reg_objects.c */
-
-WERROR regsubkey_ctr_init(TALLOC_CTX *mem_ctx, struct regsubkey_ctr **ctr);
-WERROR regsubkey_ctr_reinit(struct regsubkey_ctr *ctr);
-WERROR regsubkey_ctr_set_seqnum(struct regsubkey_ctr *ctr, int seqnum);
-int regsubkey_ctr_get_seqnum(struct regsubkey_ctr *ctr);
-WERROR regsubkey_ctr_addkey( struct regsubkey_ctr *ctr, const char *keyname );
-WERROR regsubkey_ctr_delkey( struct regsubkey_ctr *ctr, const char *keyname );
-bool regsubkey_ctr_key_exists( struct regsubkey_ctr *ctr, const char *keyname );
-int regsubkey_ctr_numkeys( struct regsubkey_ctr *ctr );
-char* regsubkey_ctr_specific_key( struct regsubkey_ctr *ctr, uint32 key_index );
-int regval_ctr_numvals(struct regval_ctr *ctr);
-struct regval_blob* dup_registry_value(struct regval_blob *val);
-void free_registry_value(struct regval_blob *val);
-uint8* regval_data_p(struct regval_blob *val);
-uint32 regval_size(struct regval_blob *val);
-char* regval_name(struct regval_blob *val);
-uint32 regval_type(struct regval_blob *val);
-struct regval_blob* regval_ctr_specific_value(struct regval_ctr *ctr,
- uint32 idx);
-bool regval_ctr_key_exists(struct regval_ctr *ctr, const char *value);
-struct regval_blob *regval_compose(TALLOC_CTX *ctx, const char *name,
- uint16 type,
- const char *data_p, size_t size);
-int regval_ctr_addvalue(struct regval_ctr *ctr, const char *name, uint16 type,
- const char *data_p, size_t size);
-int regval_ctr_addvalue_sz(struct regval_ctr *ctr, const char *name, const char *data);
-int regval_ctr_addvalue_multi_sz(struct regval_ctr *ctr, const char *name, const char **data);
-int regval_ctr_copyvalue(struct regval_ctr *ctr, struct regval_blob *val);
-int regval_ctr_delvalue(struct regval_ctr *ctr, const char *name);
-struct regval_blob* regval_ctr_getvalue(struct regval_ctr *ctr,
- const char *name);
-uint32 regval_dword(struct regval_blob *val);
-const char *regval_sz(struct regval_blob *val);
-
-/* The following definitions come from registry/reg_perfcount.c */
-
-void perfcount_init_keys( void );
-uint32 reg_perfcount_get_base_index(void);
-uint32 reg_perfcount_get_last_counter(uint32 base_index);
-uint32 reg_perfcount_get_last_help(uint32 last_counter);
-uint32 reg_perfcount_get_counter_help(uint32 base_index, char **retbuf);
-uint32 reg_perfcount_get_counter_names(uint32 base_index, char **retbuf);
-WERROR reg_perfcount_get_hkpd(prs_struct *ps, uint32 max_buf_size, uint32 *outbuf_len, const char *object_ids);
-
-/* The following definitions come from registry/reg_util.c */
-
-bool reg_split_path(char *path, char **base, char **new_path);
-bool reg_split_key(char *path, char **base, char **key);
-char *normalize_reg_path(TALLOC_CTX *ctx, const char *keyname );
-void normalize_dbkey(char *key);
-char *reg_remaining_path(TALLOC_CTX *ctx, const char *key);
-
-/* The following definitions come from registry/reg_util_legacy.c */
-
-WERROR regkey_open_internal(TALLOC_CTX *ctx,
- struct registry_key_handle **regkey,
- const char *path,
- const struct nt_user_token *token,
- uint32 access_desired );
-
-/* The following definitions come from registry/regfio.c */
-
/* The following definitions come from rpc_client/cli_lsarpc.c */
struct cli_pipe_auth_data *auth);
unsigned int rpccli_set_timeout(struct rpc_pipe_client *cli,
unsigned int timeout);
+bool rpccli_is_connected(struct rpc_pipe_client *rpc_cli);
bool rpccli_get_pwd_hash(struct rpc_pipe_client *cli, uint8_t nt_hash[16]);
NTSTATUS rpccli_anon_bind_data(TALLOC_CTX *mem_ctx,
struct cli_pipe_auth_data **presult);
const struct ndr_syntax_id *abstract_syntax,
struct rpc_cli_transport **presult);
struct cli_state *rpc_pipe_np_smb_conn(struct rpc_pipe_client *p);
-void rpccli_close_np_fd(struct rpc_pipe_client *p);
/* The following definitions come from rpc_client/rpc_transport_smbd.c */
NTSTATUS rpc_transport_sock_init(TALLOC_CTX *mem_ctx, int fd,
struct rpc_cli_transport **presult);
-int rpccli_set_sock_timeout(struct rpc_pipe_client *rpccli, int timeout);
-void rpccli_close_sock_fd(struct rpc_pipe_client *rpccli);
-bool rpc_pipe_tcp_connection_ok(struct rpc_pipe_client *rpccli);
/* The following definitions come from rpc_client/cli_samr.c */
bool init_systemtime(struct spoolss_Time *r,
struct tm *unixtime);
+time_t spoolss_Time_to_time_t(const struct spoolss_Time *r);
WERROR pull_spoolss_PrinterData(TALLOC_CTX *mem_ctx,
const DATA_BLOB *blob,
union spoolss_PrinterData *data,
uint32 auth_context_id);
bool smb_io_rpc_hdr_auth(const char *desc, RPC_HDR_AUTH *rai, prs_struct *ps, int depth);
-/* The following definitions come from lib/eventlog/eventlog.c */
-
-TDB_CONTEXT *elog_init_tdb( char *tdbfilename );
-char *elog_tdbname(TALLOC_CTX *ctx, const char *name );
-int elog_tdb_size( TDB_CONTEXT * tdb, int *MaxSize, int *Retention );
-bool prune_eventlog( TDB_CONTEXT * tdb );
-ELOG_TDB *elog_open_tdb( const char *logname, bool force_clear, bool read_only );
-int elog_close_tdb( ELOG_TDB *etdb, bool force_close );
-bool parse_logentry( TALLOC_CTX *mem_ctx, char *line, struct eventlog_Record_tdb *entry, bool * eor );
-size_t fixup_eventlog_record_tdb(struct eventlog_Record_tdb *r);
-struct eventlog_Record_tdb *evlog_pull_record_tdb(TALLOC_CTX *mem_ctx,
- TDB_CONTEXT *tdb,
- uint32_t record_number);
-NTSTATUS evlog_push_record_tdb(TALLOC_CTX *mem_ctx,
- TDB_CONTEXT *tdb,
- struct eventlog_Record_tdb *r,
- uint32_t *record_number);
-NTSTATUS evlog_push_record(TALLOC_CTX *mem_ctx,
- TDB_CONTEXT *tdb,
- struct EVENTLOGRECORD *r,
- uint32_t *record_number);
-struct EVENTLOGRECORD *evlog_pull_record(TALLOC_CTX *mem_ctx,
- TDB_CONTEXT *tdb,
- uint32_t record_number);
-NTSTATUS evlog_evt_entry_to_tdb_entry(TALLOC_CTX *mem_ctx,
- const struct EVENTLOGRECORD *e,
- struct eventlog_Record_tdb *t);
-NTSTATUS evlog_tdb_entry_to_evt_entry(TALLOC_CTX *mem_ctx,
- const struct eventlog_Record_tdb *t,
- struct EVENTLOGRECORD *e);
-NTSTATUS evlog_convert_tdb_to_evt(TALLOC_CTX *mem_ctx,
- ELOG_TDB *etdb,
- DATA_BLOB *blob_p,
- uint32_t *num_records_p);
-
/* The following definitions come from rpc_server/srv_eventlog_nt.c */
/* The following definitions come from rpc_server/srv_lsa_hnd.c */
NTSTATUS np_read_recv(struct tevent_req *req, ssize_t *nread,
bool *is_data_outstanding);
-/* The following definitions come from rpc_server/srv_samr_util.c */
-
-void copy_id2_to_sam_passwd(struct samu *to,
- struct samr_UserInfo2 *from);
-void copy_id4_to_sam_passwd(struct samu *to,
- struct samr_UserInfo4 *from);
-void copy_id6_to_sam_passwd(struct samu *to,
- struct samr_UserInfo6 *from);
-void copy_id8_to_sam_passwd(struct samu *to,
- struct samr_UserInfo8 *from);
-void copy_id10_to_sam_passwd(struct samu *to,
- struct samr_UserInfo10 *from);
-void copy_id11_to_sam_passwd(struct samu *to,
- struct samr_UserInfo11 *from);
-void copy_id12_to_sam_passwd(struct samu *to,
- struct samr_UserInfo12 *from);
-void copy_id13_to_sam_passwd(struct samu *to,
- struct samr_UserInfo13 *from);
-void copy_id14_to_sam_passwd(struct samu *to,
- struct samr_UserInfo14 *from);
-void copy_id16_to_sam_passwd(struct samu *to,
- struct samr_UserInfo16 *from);
-void copy_id17_to_sam_passwd(struct samu *to,
- struct samr_UserInfo17 *from);
-void copy_id18_to_sam_passwd(struct samu *to,
- struct samr_UserInfo18 *from);
-void copy_id20_to_sam_passwd(struct samu *to,
- struct samr_UserInfo20 *from);
-void copy_id21_to_sam_passwd(const char *log_prefix,
- struct samu *to,
- struct samr_UserInfo21 *from);
-void copy_id23_to_sam_passwd(struct samu *to,
- struct samr_UserInfo23 *from);
-void copy_id24_to_sam_passwd(struct samu *to,
- struct samr_UserInfo24 *from);
-void copy_id25_to_sam_passwd(struct samu *to,
- struct samr_UserInfo25 *from);
-void copy_id26_to_sam_passwd(struct samu *to,
- struct samr_UserInfo26 *from);
-
/* The following definitions come from rpc_server/srv_spoolss_nt.c */
void do_drv_upgrade_printer(struct messaging_context *msg,
WERROR set_printer_dataex(NT_PRINTER_INFO_LEVEL *printer,
const char *key, const char *value,
uint32_t type, uint8_t *data, int real_len);
-void spoolss_notify_server_name(int snum,
- struct spoolss_Notify *data,
- print_queue_struct *queue,
- NT_PRINTER_INFO_LEVEL *printer,
- TALLOC_CTX *mem_ctx);
-void spoolss_notify_printer_name(int snum,
- struct spoolss_Notify *data,
- print_queue_struct *queue,
- NT_PRINTER_INFO_LEVEL *printer,
- TALLOC_CTX *mem_ctx);
-void spoolss_notify_share_name(int snum,
- struct spoolss_Notify *data,
- print_queue_struct *queue,
- NT_PRINTER_INFO_LEVEL *printer,
- TALLOC_CTX *mem_ctx);
-void spoolss_notify_port_name(int snum,
- struct spoolss_Notify *data,
- print_queue_struct *queue,
- NT_PRINTER_INFO_LEVEL *printer,
- TALLOC_CTX *mem_ctx);
-void spoolss_notify_driver_name(int snum,
- struct spoolss_Notify *data,
- print_queue_struct *queue,
- NT_PRINTER_INFO_LEVEL *printer,
- TALLOC_CTX *mem_ctx);
-void spoolss_notify_comment(int snum,
- struct spoolss_Notify *data,
- print_queue_struct *queue,
- NT_PRINTER_INFO_LEVEL *printer,
- TALLOC_CTX *mem_ctx);
-void spoolss_notify_location(int snum,
- struct spoolss_Notify *data,
- print_queue_struct *queue,
- NT_PRINTER_INFO_LEVEL *printer,
- TALLOC_CTX *mem_ctx);
-void spoolss_notify_sepfile(int snum,
- struct spoolss_Notify *data,
- print_queue_struct *queue,
- NT_PRINTER_INFO_LEVEL *printer,
- TALLOC_CTX *mem_ctx);
-void spoolss_notify_print_processor(int snum,
- struct spoolss_Notify *data,
- print_queue_struct *queue,
- NT_PRINTER_INFO_LEVEL *printer,
- TALLOC_CTX *mem_ctx);
-void spoolss_notify_parameters(int snum,
- struct spoolss_Notify *data,
- print_queue_struct *queue,
- NT_PRINTER_INFO_LEVEL *printer,
- TALLOC_CTX *mem_ctx);
-void spoolss_notify_datatype(int snum,
- struct spoolss_Notify *data,
- print_queue_struct *queue,
- NT_PRINTER_INFO_LEVEL *printer,
- TALLOC_CTX *mem_ctx);
-void spoolss_notify_attributes(int snum,
- struct spoolss_Notify *data,
- print_queue_struct *queue,
- NT_PRINTER_INFO_LEVEL *printer,
- TALLOC_CTX *mem_ctx);
-void spoolss_notify_cjobs(int snum,
- struct spoolss_Notify *data,
- print_queue_struct *queue,
- NT_PRINTER_INFO_LEVEL *printer,
- TALLOC_CTX *mem_ctx);
-void construct_info_data(struct spoolss_Notify *info_data,
- enum spoolss_NotifyType type,
- uint16_t field,
- int id);
struct spoolss_DeviceMode *construct_dev_mode(TALLOC_CTX *mem_ctx,
const char *servicename);
bool add_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token, NT_PRINTER_INFO_LEVEL *printer);
/* The following definitions come from smbd/aio.c */
-void initialize_async_io_handler(void);
-bool schedule_aio_read_and_X(connection_struct *conn,
+NTSTATUS schedule_aio_read_and_X(connection_struct *conn,
struct smb_request *req,
files_struct *fsp, SMB_OFF_T startpos,
size_t smb_maxcnt);
-bool schedule_aio_write_and_X(connection_struct *conn,
+NTSTATUS schedule_aio_write_and_X(connection_struct *conn,
struct smb_request *req,
files_struct *fsp, char *data,
SMB_OFF_T startpos,
size_t numtowrite);
int wait_for_aio_completion(files_struct *fsp);
void cancel_aio_by_fsp(files_struct *fsp);
-void smbd_aio_complete_mid(unsigned int mid);
+void smbd_aio_complete_mid(uint64_t mid);
/* The following definitions come from smbd/blocking.c */
+void brl_timeout_fn(struct event_context *event_ctx,
+ struct timed_event *te,
+ struct timeval now,
+ void *private_data);
+struct timeval timeval_brl_min(const struct timeval *tv1,
+ const struct timeval *tv2);
void process_blocking_lock_queue(void);
bool push_blocking_lock_request( struct byte_range_lock *br_lck,
struct smb_request *req,
files_struct *fsp,
int lock_timeout,
int lock_num,
- uint32 lock_pid,
+ uint64_t smblctx,
enum brl_type lock_type,
enum brl_flavour lock_flav,
uint64_t offset,
uint64_t count,
- uint32 blocking_pid);
-void cancel_pending_lock_requests_by_fid(files_struct *fsp, struct byte_range_lock *br_lck);
-void remove_pending_lock_requests_by_mid(int mid);
-bool blocking_lock_was_deferred(int mid);
-struct blocking_lock_record *blocking_lock_cancel(files_struct *fsp,
- uint32 lock_pid,
+ uint64_t blocking_smblctx);
+void cancel_pending_lock_requests_by_fid(files_struct *fsp,
+ struct byte_range_lock *br_lck,
+ enum file_close_type close_type);
+void remove_pending_lock_requests_by_mid_smb1(uint64_t mid);
+bool blocking_lock_was_deferred_smb1(uint64_t mid);
+struct blocking_lock_record *blocking_lock_cancel_smb1(files_struct *fsp,
+ uint64_t smblctx,
uint64_t offset,
uint64_t count,
enum brl_flavour lock_flav,
connection_struct *conn,
bool dfs_pathnames,
const char *name_in,
+ bool allow_wcards,
char **pp_name_out,
bool *ppath_contains_wcard);
NTSTATUS create_conn_struct(TALLOC_CTX *ctx,
void (*reply_fn)(struct smb_request *req,
NTSTATUS error_code,
uint8_t *buf, size_t len));
-void remove_pending_change_notify_requests_by_mid(uint16 mid);
+void remove_pending_change_notify_requests_by_mid(uint64_t mid);
void remove_pending_change_notify_requests_by_fid(files_struct *fsp,
NTSTATUS status);
void notify_fname(connection_struct *conn, uint32 action, uint32 filter,
struct messaging_context *messaging_ctx,
struct event_context *ev,
connection_struct *conn);
+bool notify_internal_parent_init(void);
NTSTATUS notify_add(struct notify_context *notify, struct notify_entry *e0,
void (*callback)(void *, const struct notify_event *),
void *private_data);
char *params, int paramsize,
char *pdata, int datasize);
void reply_ntcreate_and_X(struct smb_request *req);
+NTSTATUS set_sd(files_struct *fsp, uint8_t *data, uint32_t sd_len,
+ uint32_t security_info_sent);
struct ea_list *read_nttrans_ea_list(TALLOC_CTX *ctx, const char *pdata, size_t data_size);
void reply_ntcancel(struct smb_request *req);
void reply_ntrename(struct smb_request *req);
+NTSTATUS smbd_do_query_security_desc(connection_struct *conn,
+ TALLOC_CTX *mem_ctx,
+ files_struct *fsp,
+ uint32_t security_info_wanted,
+ uint32_t max_data_count,
+ uint8_t **ppmarshalled_sd,
+ size_t *psd_size);
void reply_nttrans(struct smb_request *req);
void reply_nttranss(struct smb_request *req);
uint32 *pcreate_disposition,
uint32 *pcreate_options,
uint32_t *pprivate_flags);
+void remove_deferred_open_entry(struct file_id id, uint64_t mid);
NTSTATUS open_file_fchmod(struct smb_request *req, connection_struct *conn,
struct smb_filename *smb_fname,
files_struct **result);
void invalidate_vuid(struct smbd_server_connection *sconn, uint16 vuid);
void invalidate_all_vuids(struct smbd_server_connection *sconn);
int register_initial_vuid(struct smbd_server_connection *sconn);
+int register_homes_share(const char *username);
int register_existing_vuid(struct smbd_server_connection *sconn,
uint16 vuid,
struct auth_serversupplied_info *server_info,
int num_words,
int num_bytes,
bool zero);
-void remove_deferred_open_smb_message(uint16 mid);
-void schedule_deferred_open_smb_message(uint16 mid);
-bool open_was_deferred(uint16 mid);
-struct pending_message_list *get_open_deferred_message(uint16 mid);
-bool push_deferred_smb_message(struct smb_request *req,
- struct timeval request_time,
- struct timeval timeout,
- char *private_data, size_t priv_len);
+void remove_deferred_open_message_smb(uint64_t mid);
+void schedule_deferred_open_message_smb(uint64_t mid);
+bool open_was_deferred(uint64_t mid);
+bool get_deferred_open_message_state(struct smb_request *smbreq,
+ struct timeval *p_request_time,
+ void **pp_state);
+bool push_deferred_open_message_smb(struct smb_request *req,
+ struct timeval request_time,
+ struct timeval timeout,
+ struct file_id id,
+ char *private_data,
+ size_t priv_len);
struct idle_event *event_add_idle(struct event_context *event_ctx,
TALLOC_CTX *mem_ctx,
struct timeval interval,
bool (*handler)(const struct timeval *now,
void *private_data),
void *private_data);
-NTSTATUS allow_new_trans(struct trans_state *list, int mid);
+NTSTATUS allow_new_trans(struct trans_state *list, uint64_t mid);
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);
int count,
bool target_is_directory);
void reply_copy(struct smb_request *req);
-uint32 get_lock_pid(const uint8_t *data, int data_offset,
+uint64_t 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);