X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=source3%2Finclude%2Fproto.h;h=75d83b80ed0c79d5b1a84719bb1044f7b0648236;hb=d9adfddb1972daf8b1f4d9cfef52037fc5badac4;hp=d33a0198e289a19fc068971ad0b47b0bfc0b581d;hpb=ee70079d08acf23cf7c342f09a7db4f5fc7ca95e;p=obnox%2Fsamba-ctdb.git diff --git a/source3/include/proto.h b/source3/include/proto.h index d33a0198e2..75d83b80ed 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -435,6 +435,10 @@ int connections_forall(int (*fn)(struct db_record *rec, const struct connections_data *data, void *private_data), void *private_data); +int connections_forall_read(int (*fn)(const struct connections_key *key, + const struct connections_data *data, + void *private_data), + void *private_data); bool connections_init(bool rw); /* The following definitions come from lib/dbwrap_util.c */ @@ -444,10 +448,18 @@ int dbwrap_store_int32(struct db_context *db, const char *keystr, int32_t v); bool dbwrap_fetch_uint32(struct db_context *db, const char *keystr, uint32_t *val); int dbwrap_store_uint32(struct db_context *db, const char *keystr, uint32_t v); -uint32_t dbwrap_change_uint32_atomic(struct db_context *db, const char *keystr, +NTSTATUS dbwrap_change_uint32_atomic(struct db_context *db, const char *keystr, uint32_t *oldval, uint32_t change_val); -int32 dbwrap_change_int32_atomic(struct db_context *db, const char *keystr, - int32 *oldval, int32 change_val); +NTSTATUS dbwrap_trans_change_uint32_atomic(struct db_context *db, + const char *keystr, + uint32_t *oldval, + uint32_t change_val); +NTSTATUS dbwrap_change_int32_atomic(struct db_context *db, const char *keystr, + int32_t *oldval, int32_t change_val); +NTSTATUS dbwrap_trans_change_int32_atomic(struct db_context *db, + const char *keystr, + int32_t *oldval, + int32_t change_val); NTSTATUS dbwrap_trans_store(struct db_context *db, TDB_DATA key, TDB_DATA dbuf, int flag); NTSTATUS dbwrap_trans_delete(struct db_context *db, TDB_DATA key); @@ -458,6 +470,14 @@ NTSTATUS dbwrap_trans_store_uint32(struct db_context *db, const char *keystr, NTSTATUS dbwrap_trans_store_bystring(struct db_context *db, const char *key, TDB_DATA data, int flags); NTSTATUS dbwrap_trans_delete_bystring(struct db_context *db, const char *key); +NTSTATUS dbwrap_trans_do(struct db_context *db, + NTSTATUS (*action)(struct db_context *, void *), + void *private_data); +NTSTATUS dbwrap_delete_bystring_upper(struct db_context *db, const char *key); +NTSTATUS dbwrap_store_bystring_upper(struct db_context *db, const char *key, + TDB_DATA data, int flags); +TDB_DATA dbwrap_fetch_bystring_upper(struct db_context *db, TALLOC_CTX *mem_ctx, + const char *key); /* The following definitions come from lib/debug.c */ @@ -518,17 +538,15 @@ void pull_file_id_24(char *buf, struct file_id *id); /* The following definitions come from lib/gencache.c */ -bool gencache_init(void); -bool gencache_shutdown(void); bool gencache_set(const char *keystr, const char *value, time_t timeout); bool gencache_del(const char *keystr); bool gencache_get(const char *keystr, char **valstr, time_t *timeout); -bool gencache_get_data_blob(const char *keystr, DATA_BLOB *blob, bool *expired); +bool gencache_get_data_blob(const char *keystr, DATA_BLOB *blob, + time_t *timeout, bool *was_expired); +bool gencache_stabilize(void); bool gencache_set_data_blob(const char *keystr, const DATA_BLOB *blob, time_t timeout); void gencache_iterate(void (*fn)(const char* key, const char *value, time_t timeout, void* dptr), void* data, const char* keystr_pattern); -int gencache_lock_entry( const char *key ); -void gencache_unlock_entry( const char *key ); /* The following definitions come from lib/interface.c */ @@ -925,7 +943,7 @@ SMB_OFF_T sys_ftell(FILE *fp); int sys_creat(const char *path, mode_t mode); int sys_open(const char *path, int oflag, mode_t mode); FILE *sys_fopen(const char *path, const char *type); -void kernel_flock(int fd, uint32 share_mode); +void kernel_flock(int fd, uint32 share_mode, uint32 access_mask); SMB_STRUCT_DIR *sys_opendir(const char *name); SMB_STRUCT_DIRENT *sys_readdir(SMB_STRUCT_DIR *dirp); void sys_seekdir(SMB_STRUCT_DIR *dirp, long offset); @@ -1013,19 +1031,14 @@ bool nt_time_is_zero(const NTTIME *nt); time_t generalized_to_unix_time(const char *str); int get_server_zone_offset(void); int set_server_zone_offset(time_t t); +char *timeval_string(TALLOC_CTX *ctx, const struct timeval *tp, bool hires); char *current_timestring(TALLOC_CTX *ctx, bool hires); void srv_put_dos_date(char *buf,int offset,time_t unixdate); void srv_put_dos_date2(char *buf,int offset, time_t unixdate); void srv_put_dos_date3(char *buf,int offset,time_t unixdate); -void put_long_date_timespec(char *p, struct timespec ts); +void round_timespec(enum timestamp_set_resolution res, struct timespec *ts); +void put_long_date_timespec(enum timestamp_set_resolution res, char *p, struct timespec ts); void put_long_date(char *p, time_t t); -struct timespec get_create_timespec(const SMB_STRUCT_STAT *st,bool fake_dirs); -struct timespec get_atimespec(const SMB_STRUCT_STAT *pst); -void set_atimespec(SMB_STRUCT_STAT *pst, struct timespec ts); -struct timespec get_mtimespec(const SMB_STRUCT_STAT *pst); -void set_mtimespec(SMB_STRUCT_STAT *pst, struct timespec ts); -struct timespec get_ctimespec(const SMB_STRUCT_STAT *pst); -void set_ctimespec(SMB_STRUCT_STAT *pst, struct timespec ts); void dos_filetime_timespec(struct timespec *tsp); time_t srv_make_unix_date(const void *date_ptr); time_t srv_make_unix_date2(const void *date_ptr); @@ -1038,6 +1051,8 @@ struct timespec timespec_current(void); struct timespec timespec_min(const struct timespec *ts1, const struct timespec *ts2); int timespec_compare(const struct timespec *ts1, const struct timespec *ts2); +void round_timespec_to_sec(struct timespec *ts); +void round_timespec_to_usec(struct timespec *ts); struct timespec interpret_long_date(const char *p); void cli_put_dos_date(struct cli_state *cli, char *buf, int offset, time_t unixdate); void cli_put_dos_date2(struct cli_state *cli, char *buf, int offset, time_t unixdate); @@ -1143,6 +1158,7 @@ uid_t nametouid(const char *name); gid_t nametogid(const char *name); void smb_panic(const char *const why); void log_stack_trace(void); +void log_stack_trace_with_level(int level); const char *readdirname(SMB_STRUCT_DIR *p); bool is_in_path(const char *name, name_compare_entry *namelist, bool case_sensitive); void set_namearray(name_compare_entry **ppname_array, const char *namelist); @@ -1184,6 +1200,7 @@ uint32 map_share_mode_to_deny_mode(uint32 share_access, uint32 private_options); pid_t procid_to_pid(const struct server_id *proc); void set_my_vnn(uint32 vnn); uint32 get_my_vnn(void); +void set_my_unique_id(uint64_t unique_id); struct server_id pid_to_procid(pid_t pid); struct server_id procid_self(void); struct server_id server_id_self(void); @@ -1250,6 +1267,10 @@ struct passwd *getpwuid_alloc(TALLOC_CTX *mem_ctx, uid_t uid) ; const char *reg_type_lookup(enum winreg_Type type); WERROR reg_pull_multi_sz(TALLOC_CTX *mem_ctx, const void *buf, size_t len, uint32 *num_values, char ***values); +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 */ @@ -1310,6 +1331,7 @@ bool sid_linearize(char *outbuf, size_t len, const DOM_SID *sid); bool sid_parse(const char *inbuf, size_t len, DOM_SID *sid); int sid_compare(const DOM_SID *sid1, const DOM_SID *sid2); int sid_compare_domain(const DOM_SID *sid1, const DOM_SID *sid2); +int sid_compare_sort(const void *p1, const void *p2); bool sid_equal(const DOM_SID *sid1, const DOM_SID *sid2); bool non_mappable_sid(DOM_SID *sid); char *sid_binstring(const DOM_SID *sid); @@ -2449,6 +2471,7 @@ bool cli_is_dos_error(struct cli_state *cli); NTSTATUS cli_get_nt_error(struct cli_state *cli); void cli_set_nt_error(struct cli_state *cli, NTSTATUS status); void cli_reset_error(struct cli_state *cli); +bool cli_state_is_connected(struct cli_state *cli); /* The following definitions come from libsmb/clifile.c */ @@ -2593,10 +2616,6 @@ bool unwrap_edata_ntstatus(TALLOC_CTX *mem_ctx, DATA_BLOB *edata, DATA_BLOB *edata_out); bool unwrap_pac(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, DATA_BLOB *unwrapped_pac_data); -int cli_krb5_get_ticket(const char *principal, time_t time_offset, - DATA_BLOB *ticket, DATA_BLOB *session_key_krb5, - uint32 extra_ap_opts, const char *ccname, - time_t *tgs_expire); /* The following definitions come from libsmb/clilist.c */ @@ -2694,6 +2713,17 @@ bool cli_qpathinfo_basic( struct cli_state *cli, const char *name, bool cli_qfileinfo_test(struct cli_state *cli, int fnum, int level, char **poutdata, uint32 *poutlen); NTSTATUS cli_qpathinfo_alt_name(struct cli_state *cli, const char *fname, fstring alt_name); +struct tevent_req *cli_shadow_copy_data_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct cli_state *cli, + uint16_t fnum, + bool get_names); +NTSTATUS cli_shadow_copy_data_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, + char ***pnames, int *pnum_names); +NTSTATUS cli_shadow_copy_data(TALLOC_CTX *mem_ctx, struct cli_state *cli, + uint16_t fnum, bool get_names, + char ***pnames, int *pnum_names); + /* The following definitions come from libsmb/clirap2.c */ int cli_NetGroupDelete(struct cli_state *cli, const char *group_name); @@ -2729,14 +2759,14 @@ bool cli_ns_check_server_type(struct cli_state *cli, char *workgroup, uint32 sty bool cli_NetWkstaUserLogoff(struct cli_state *cli, const char *user, const char *workstation); int cli_NetPrintQEnum(struct cli_state *cli, void (*qfn)(const char*,uint16,uint16,uint16,const char*,const char*,const char*,const char*,const char*,uint16,uint16), - void (*jfn)(uint16,const char*,const char*,const char*,const char*,uint16,uint16,const char*,uint,uint,const char*)); + void (*jfn)(uint16,const char*,const char*,const char*,const char*,uint16,uint16,const char*,uint_t,uint_t,const char*)); int cli_NetPrintQGetInfo(struct cli_state *cli, const char *printer, void (*qfn)(const char*,uint16,uint16,uint16,const char*,const char*,const char*,const char*,const char*,uint16,uint16), - void (*jfn)(uint16,const char*,const char*,const char*,const char*,uint16,uint16,const char*,uint,uint,const char*)); + void (*jfn)(uint16,const char*,const char*,const char*,const char*,uint16,uint16,const char*,uint_t,uint_t,const char*)); int cli_RNetServiceEnum(struct cli_state *cli, void (*fn)(const char *, const char *, void *), void *state); -int cli_NetSessionEnum(struct cli_state *cli, void (*fn)(char *, char *, uint16, uint16, uint16, uint, uint, uint, char *)); +int cli_NetSessionEnum(struct cli_state *cli, void (*fn)(char *, char *, uint16, uint16, uint16, uint_t, uint_t, uint_t, char *)); int cli_NetSessionGetInfo(struct cli_state *cli, const char *workstation, - void (*fn)(const char *, const char *, uint16, uint16, uint16, uint, uint, uint, const char *)); + void (*fn)(const char *, const char *, uint16, uint16, uint16, uint_t, uint_t, uint_t, const char *)); int cli_NetSessionDel(struct cli_state *cli, const char *workstation); int cli_NetConnectionEnum(struct cli_state *cli, const char *qualifier, void (*fn)(uint16_t conid, uint16_t contype, @@ -3178,7 +3208,7 @@ void cli_free_enc_buffer(struct cli_state *cli, char *buf); NTSTATUS cli_decrypt_message(struct cli_state *cli); NTSTATUS cli_encrypt_message(struct cli_state *cli, char *buf, char **buf_out); -/* The following definitions come from libsmb/smb_signing.c */ +/* The following definitions come from libsmb/clisigning.c */ bool cli_simple_set_signing(struct cli_state *cli, const DATA_BLOB user_session_key, @@ -3191,16 +3221,22 @@ bool cli_check_sign_mac(struct cli_state *cli, char *buf); bool client_set_trans_sign_state_on(struct cli_state *cli, uint16 mid); bool client_set_trans_sign_state_off(struct cli_state *cli, uint16 mid); bool client_is_signing_on(struct cli_state *cli); -bool srv_oplock_set_signing(bool onoff); -bool srv_check_sign_mac(const char *inbuf, bool must_be_ok); -void srv_calculate_sign_mac(char *outbuf); -void srv_defer_sign_response(uint16 mid); -void srv_cancel_sign_response(uint16 mid, bool cancel); -void srv_set_signing_negotiated(void); -bool srv_is_signing_active(void); -bool srv_is_signing_negotiated(void); -bool srv_signing_started(void); -void srv_set_signing(const DATA_BLOB user_session_key, const DATA_BLOB response); + +/* The following definitions come from smbd/signing.c */ + +struct smbd_server_connection; +bool srv_check_sign_mac(struct smbd_server_connection *conn, + 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); +bool srv_init_signing(struct smbd_server_connection *conn); +void srv_set_signing_negotiated(struct smbd_server_connection *conn); +bool srv_is_signing_active(struct smbd_server_connection *conn); +bool srv_is_signing_negotiated(struct smbd_server_connection *conn); +void srv_set_signing(struct smbd_server_connection *conn, + const DATA_BLOB user_session_key, + const DATA_BLOB response); /* The following definitions come from libsmb/smbdes.c */ @@ -3290,7 +3326,7 @@ WERROR map_werror_from_unix(int error); /* The following definitions come from libsmb/spnego.c */ -ssize_t read_spnego_data(DATA_BLOB data, SPNEGO_DATA *token); +ssize_t read_spnego_data(TALLOC_CTX *mem_ctx, DATA_BLOB data, SPNEGO_DATA *token); ssize_t write_spnego_data(DATA_BLOB *blob, SPNEGO_DATA *spnego); bool free_spnego_data(SPNEGO_DATA *spnego); @@ -3952,6 +3988,7 @@ char *lp_addmachine_script(void); 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); @@ -3968,9 +4005,10 @@ bool lp_winbind_refresh_tickets(void); bool lp_winbind_offline_logon(void); bool lp_winbind_normalize_names(void); bool lp_winbind_rpc_only(void); -const char **lp_idmap_domains(void); +bool lp_create_krb5_conf(void); +int lp_winbind_max_domain_connections(void); const char *lp_idmap_backend(void); -char *lp_idmap_alloc_backend(void); +bool lp_idmap_read_only(void); int lp_idmap_cache_time(void); int lp_idmap_negative_cache_time(void); int lp_keepalive(void); @@ -3999,6 +4037,7 @@ bool lp_usershare_allow_guests(void); bool lp_usershare_owner_only(void); bool lp_disable_netbios(void); bool lp_reset_on_zero_vc(void); +bool lp_log_writeable_files_on_exit(void); bool lp_ms_add_printer_wizard(void); bool lp_dns_proxy(void); bool lp_wins_support(void); @@ -4010,8 +4049,10 @@ const char **lp_init_logon_delayed_hosts(void); int lp_init_logon_delay(void); bool lp_load_printers(void); bool lp_readraw(void); +bool _lp_readraw(void); bool lp_large_readwrite(void); bool lp_writeraw(void); +bool _lp_writeraw(void); bool lp_null_passwords(void); bool lp_obey_pam_restrictions(void); bool lp_encrypted_passwords(void); @@ -4112,6 +4153,8 @@ int lp_cups_connection_timeout(void); const char *lp_ctdbd_socket(void); 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 ); @@ -4181,7 +4224,8 @@ bool lp_recursive_veto_delete(int ); bool lp_dos_filemode(int ); bool lp_dos_filetimes(int ); bool lp_dos_filetime_resolution(int ); -bool lp_fake_dir_create_times(int ); +bool lp_fake_dir_create_times(void); +bool lp_async_smb_echo_handler(void); bool lp_blocking_locks(int ); bool lp_inherit_perms(int ); bool lp_inherit_acls(int ); @@ -4344,7 +4388,7 @@ const char *lp_printcapname(void); bool lp_disable_spoolss( void ); void lp_set_spoolss_state( uint32 state ); uint32 lp_get_spoolss_state( void ); -bool lp_use_sendfile(int snum); +bool lp_use_sendfile(int snum, struct smb_signing_state *signing_state); void set_use_sendfile(int snum, bool val); void set_store_dos_attributes(int snum, bool val); void lp_set_mangling_method(const char *new_method); @@ -4355,6 +4399,7 @@ void lp_set_posix_default_cifsx_readwrite_locktype(enum brl_flavour val); int lp_min_receive_file_size(void); char* lp_perfcount_module(void); void lp_set_passdb_backend(const char *backend); +void widelinks_warning(int snum); /* The following definitions come from param/util.c */ @@ -4710,6 +4755,8 @@ bool secrets_restore_schannel_session_info(TALLOC_CTX *mem_ctx, struct dcinfo **ppdc); bool secrets_store_generic(const char *owner, const char *key, const char *secret); char *secrets_fetch_generic(const char *owner, const char *key); +bool secrets_groupfilter_fetch(TALLOC_CTX *mem_ctx, struct dom_sid **psids, + size_t *pnum_sids); bool secrets_store_local_schannel_key(uint8_t schannel_key[16]); bool secrets_fetch_local_schannel_key(uint8_t schannel_key[16]); @@ -4820,7 +4867,7 @@ WERROR delete_all_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char *key ); WERROR delete_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char *key, const char *value ); WERROR add_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char *key, const char *value, uint32 type, uint8 *data, int real_len ); -REGISTRY_VALUE* get_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char *key, const char *value ); +struct regval_blob* get_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char *key, const char *value ); WERROR mod_a_printer(NT_PRINTER_INFO_LEVEL *printer, uint32 level); bool set_driver_init(NT_PRINTER_INFO_LEVEL *printer, uint32 level); bool del_driver_init(const char *drivername); @@ -5010,10 +5057,10 @@ 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, REGVAL_CTR *values ); -bool regdb_store_values( const char *key, REGVAL_CTR *values ); +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(REGVAL_CTR *values); +bool regdb_values_need_update(struct regval_ctr *values); /* The following definitions come from registry/reg_backend_hkpt_params.c */ @@ -5042,26 +5089,31 @@ bool regdb_values_need_update(REGVAL_CTR *values); /* The following definitions come from registry/reg_cachehook.c */ WERROR reghook_cache_init(void); -WERROR reghook_cache_add(const char *keyname, REGISTRY_OPS *ops); -REGISTRY_OPS *reghook_cache_find(const char *keyname); +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( REGISTRY_KEY *key, struct regsubkey_ctr *subkeys ); -bool store_reg_values( REGISTRY_KEY *key, REGVAL_CTR *val ); -WERROR create_reg_subkey(REGISTRY_KEY *key, const char *subkey); -WERROR delete_reg_subkey(REGISTRY_KEY *key, const char *subkey); -int fetch_reg_keys( REGISTRY_KEY *key, struct regsubkey_ctr *subkey_ctr ); -int fetch_reg_values( REGISTRY_KEY *key, REGVAL_CTR *val ); -bool regkey_access_check( REGISTRY_KEY *key, uint32 requested, uint32 *granted, - const struct nt_user_token *token ); -WERROR regkey_get_secdesc(TALLOC_CTX *mem_ctx, REGISTRY_KEY *key, +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(REGISTRY_KEY *key, +WERROR regkey_set_secdesc(struct registry_key_handle *key, struct security_descriptor *psecdesc); -bool reg_subkeys_need_update(REGISTRY_KEY *key, struct regsubkey_ctr *subkeys); -bool reg_values_need_update(REGISTRY_KEY *key, REGVAL_CTR *values); +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 */ @@ -5087,6 +5139,7 @@ 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 ); @@ -5094,24 +5147,27 @@ 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( REGVAL_CTR *ctr ); -REGISTRY_VALUE* dup_registry_value( REGISTRY_VALUE *val ); -void free_registry_value( REGISTRY_VALUE *val ); -uint8* regval_data_p( REGISTRY_VALUE *val ); -uint32 regval_size( REGISTRY_VALUE *val ); -char* regval_name( REGISTRY_VALUE *val ); -uint32 regval_type( REGISTRY_VALUE *val ); -REGISTRY_VALUE* regval_ctr_specific_value( REGVAL_CTR *ctr, uint32 idx ); -bool regval_ctr_key_exists( REGVAL_CTR *ctr, const char *value ); -REGISTRY_VALUE *regval_compose(TALLOC_CTX *ctx, const char *name, uint16 type, - const char *data_p, size_t size); -int regval_ctr_addvalue( REGVAL_CTR *ctr, const char *name, uint16 type, - const char *data_p, size_t size ); -int regval_ctr_copyvalue( REGVAL_CTR *ctr, REGISTRY_VALUE *val ); -int regval_ctr_delvalue( REGVAL_CTR *ctr, const char *name ); -REGISTRY_VALUE* regval_ctr_getvalue( REGVAL_CTR *ctr, const char *name ); -uint32 regval_dword( REGISTRY_VALUE *val ); -char *regval_sz(REGISTRY_VALUE *val); +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_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); +char *regval_sz(struct regval_blob *val); /* The following definitions come from registry/reg_perfcount.c */ @@ -5149,10 +5205,11 @@ size_t regval_build_multi_sz( char **values, uint16 **buffer ); /* The following definitions come from registry/reg_util_legacy.c */ -WERROR regkey_open_internal( TALLOC_CTX *ctx, REGISTRY_KEY **regkey, - const char *path, - const struct nt_user_token *token, - uint32 access_desired ); +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 */ @@ -5174,6 +5231,14 @@ NTSTATUS rpccli_lsa_lookup_sids(struct rpc_pipe_client *cli, char ***pdomains, char ***pnames, enum lsa_SidType **ptypes); +NTSTATUS rpccli_lsa_lookup_sids3(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct policy_handle *pol, + int num_sids, + const DOM_SID *sids, + char ***pdomains, + char ***pnames, + enum lsa_SidType **ptypes); NTSTATUS rpccli_lsa_lookup_names(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *pol, int num_names, @@ -5182,6 +5247,15 @@ NTSTATUS rpccli_lsa_lookup_names(struct rpc_pipe_client *cli, int level, DOM_SID **sids, enum lsa_SidType **types); +NTSTATUS rpccli_lsa_lookup_names4(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct policy_handle *pol, int num_names, + const char **names, + const char ***dom_names, + int level, + DOM_SID **sids, + enum lsa_SidType **types); + bool fetch_domain_sid( char *domain, char *remote_machine, DOM_SID *psid); /* The following definitions come from rpc_client/cli_netlogon.c */ @@ -5253,6 +5327,7 @@ NTSTATUS rpc_pipe_bind(struct rpc_pipe_client *cli, 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); @@ -5286,8 +5361,13 @@ NTSTATUS rpc_pipe_open_internal(TALLOC_CTX *mem_ctx, const struct ndr_syntax_id NTSTATUS cli_rpc_pipe_open_noauth(struct cli_state *cli, const struct ndr_syntax_id *interface, struct rpc_pipe_client **presult); +NTSTATUS cli_rpc_pipe_open_noauth_transport(struct cli_state *cli, + enum dcerpc_transport_t transport, + const struct ndr_syntax_id *interface, + struct rpc_pipe_client **presult); NTSTATUS cli_rpc_pipe_open_ntlmssp(struct cli_state *cli, const struct ndr_syntax_id *interface, + enum dcerpc_transport_t transport, enum pipe_auth_level auth_level, const char *domain, const char *username, @@ -5295,6 +5375,7 @@ NTSTATUS cli_rpc_pipe_open_ntlmssp(struct cli_state *cli, struct rpc_pipe_client **presult); NTSTATUS cli_rpc_pipe_open_spnego_ntlmssp(struct cli_state *cli, const struct ndr_syntax_id *interface, + enum dcerpc_transport_t transport, enum pipe_auth_level auth_level, const char *domain, const char *username, @@ -5306,12 +5387,14 @@ NTSTATUS get_schannel_session_key(struct cli_state *cli, struct rpc_pipe_client **presult); NTSTATUS cli_rpc_pipe_open_schannel_with_key(struct cli_state *cli, const struct ndr_syntax_id *interface, + enum dcerpc_transport_t transport, enum pipe_auth_level auth_level, const char *domain, const struct dcinfo *pdc, struct rpc_pipe_client **presult); NTSTATUS cli_rpc_pipe_open_ntlmssp_auth_schannel(struct cli_state *cli, const struct ndr_syntax_id *interface, + enum dcerpc_transport_t transport, enum pipe_auth_level auth_level, const char *domain, const char *username, @@ -5319,6 +5402,7 @@ NTSTATUS cli_rpc_pipe_open_ntlmssp_auth_schannel(struct cli_state *cli, struct rpc_pipe_client **presult); NTSTATUS cli_rpc_pipe_open_schannel(struct cli_state *cli, const struct ndr_syntax_id *interface, + enum dcerpc_transport_t transport, enum pipe_auth_level auth_level, const char *domain, struct rpc_pipe_client **presult); @@ -6073,7 +6157,7 @@ SEC_DESC *svcctl_get_secdesc( TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN * bool svcctl_set_secdesc( TALLOC_CTX *ctx, const char *name, SEC_DESC *sec_desc, NT_USER_TOKEN *token ); const char *svcctl_lookup_dispname(TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *token ); const char *svcctl_lookup_description(TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *token ); -REGVAL_CTR *svcctl_fetch_regvalues( const char *name, NT_USER_TOKEN *token ); +struct regval_ctr *svcctl_fetch_regvalues( const char *name, NT_USER_TOKEN *token ); /* The following definitions come from services/svc_netlogon.c */ @@ -6245,7 +6329,7 @@ bool get_dir_entry(TALLOC_CTX *ctx, char **pp_fname_out, SMB_OFF_T *size, uint32 *mode, - time_t *date, + struct timespec *date, bool check_descend, bool ask_sharemode); bool is_visible_file(connection_struct *conn, const char *dir_path, const char *name, SMB_STRUCT_STAT *pst, bool use_veto); @@ -6370,7 +6454,7 @@ void file_close_pid(uint16 smbpid, int vuid); void file_init(void); void file_close_user(int vuid); void file_dump_open_table(void); -struct files_struct *file_walk_table( +struct files_struct *files_forall( struct files_struct *(*fn)(struct files_struct *fsp, void *private_data), void *private_data); @@ -6532,10 +6616,16 @@ struct notify_context *notify_init(TALLOC_CTX *mem_ctx, struct server_id server, 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); NTSTATUS notify_remove(struct notify_context *notify, void *private_data); +NTSTATUS notify_remove_onelevel(struct notify_context *notify, + const struct file_id *fid, + void *private_data); +void notify_onelevel(struct notify_context *notify, uint32_t action, + uint32_t filter, struct file_id fid, const char *name); void notify_trigger(struct notify_context *notify, uint32_t action, uint32_t filter, const char *path); @@ -6735,7 +6825,9 @@ SEC_DESC *get_nt_acl_no_snum( TALLOC_CTX *ctx, const char *fname); void smbd_setup_sig_term_handler(void); void smbd_setup_sig_hup_handler(void); -bool srv_send_smb(int fd, char *buffer, bool do_encrypt, +bool srv_send_smb(int fd, char *buffer, + bool no_signing, uint32_t seqnum, + bool do_encrypt, struct smb_perfcount_data *pcd); int srv_set_message(char *buf, int num_words, @@ -7109,61 +7201,6 @@ int vfs_ChDir(connection_struct *conn, const char *path); char *vfs_GetWd(TALLOC_CTX *ctx, connection_struct *conn); NTSTATUS check_reduced_name(connection_struct *conn, const char *fname); -/* The following definitions come from torture/denytest.c */ - -bool torture_denytest1(int dummy); -bool torture_denytest2(int dummy); - -/* The following definitions come from torture/mangle_test.c */ - -bool torture_mangle(int dummy); - -/* The following definitions come from torture/nbio.c */ - -double nbio_total(void); -void nb_alarm(int ignore); -void nbio_shmem(int n); -void nb_setup(struct cli_state *cli); -void nb_unlink(const char *fname); -void nb_createx(const char *fname, - unsigned create_options, unsigned create_disposition, int handle); -void nb_writex(int handle, int offset, int size, int ret_size); -void nb_readx(int handle, int offset, int size, int ret_size); -void nb_close(int handle); -void nb_rmdir(const char *fname); -void nb_rename(const char *oldname, const char *newname); -void nb_qpathinfo(const char *fname); -void nb_qfileinfo(int fnum); -void nb_qfsinfo(int level); -void nb_findfirst(const char *mask); -void nb_flush(int fnum); -void nb_deltree(const char *dname); -void nb_cleanup(void); - -/* The following definitions come from torture/scanner.c */ - -bool torture_trans2_scan(int dummy); -bool torture_nttrans_scan(int dummy); - -/* The following definitions come from torture/torture.c */ - -void start_timer(void); -double end_timer(void); -void *shm_setup(int size); -bool smbcli_parse_unc(const char *unc_name, TALLOC_CTX *mem_ctx, - char **hostname, char **sharename); -void torture_open_connection_free_unclist(char **unc_list); -bool torture_open_connection(struct cli_state **c, int conn_index); -bool torture_cli_session_setup2(struct cli_state *cli, uint16 *new_vuid); -bool torture_close_connection(struct cli_state *c); -bool torture_ioctl_test(int dummy); -bool torture_chkpath_test(int dummy); - -/* The following definitions come from torture/utable.c */ - -bool torture_utable(int dummy); -bool torture_casetable(int dummy); - /* The following definitions come from utils/passwd_util.c */ char *stdin_new_passwd( void); @@ -7175,22 +7212,16 @@ bool idmap_is_offline(void); bool idmap_is_online(void); NTSTATUS smb_register_idmap(int version, const char *name, struct idmap_methods *methods); -NTSTATUS smb_register_idmap_alloc(int version, const char *name, - struct idmap_alloc_methods *methods); void idmap_close(void); NTSTATUS idmap_init_cache(void); NTSTATUS idmap_allocate_uid(struct unixid *id); NTSTATUS idmap_allocate_gid(struct unixid *id); -NTSTATUS idmap_set_uid_hwm(struct unixid *id); -NTSTATUS idmap_set_gid_hwm(struct unixid *id); NTSTATUS idmap_backends_unixid_to_sid(const char *domname, struct id_map *id); NTSTATUS idmap_backends_sid_to_unixid(const char *domname, struct id_map *id); 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 */ @@ -7214,8 +7245,6 @@ NTSTATUS idmap_passdb_init(void); /* The following definitions come from winbindd/idmap_tdb.c */ -bool idmap_tdb_tdb_close(TDB_CONTEXT *tdbctx); -NTSTATUS idmap_alloc_tdb_init(void); NTSTATUS idmap_tdb_init(void); /* The following definitions come from winbindd/idmap_util.c */ @@ -7224,6 +7253,7 @@ NTSTATUS idmap_uid_to_sid(const char *domname, DOM_SID *sid, uid_t uid); NTSTATUS idmap_gid_to_sid(const char *domname, DOM_SID *sid, gid_t gid); NTSTATUS idmap_sid_to_uid(const char *dom_name, DOM_SID *sid, uid_t *uid); NTSTATUS idmap_sid_to_gid(const char *domname, DOM_SID *sid, gid_t *gid); +bool idmap_unix_id_is_in_range(uint32_t id, struct idmap_domain *dom); /* The following definitions come from winbindd/nss_info.c */