1/* 2 * Unix SMB/CIFS implementation. 3 * collected prototypes header 4 * 5 * frozen from "make proto" in May 2008 6 * 7 * Copyright (C) Michael Adam 2008 8 * 9 * This program is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License as published by 11 * the Free Software Foundation; either version 3 of the License, or 12 * (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program; if not, see <http://www.gnu.org/licenses/>. 21 */ 22 23#ifndef _PROTO_H_ 24#define _PROTO_H_ 25 26 27/* The following definitions come from auth/auth.c */ 28 29NTSTATUS smb_register_auth(int version, const char *name, auth_init_function init); 30bool load_auth_module(struct auth_context *auth_context, 31 const char *module, auth_methods **ret) ; 32NTSTATUS make_auth_context_subsystem(struct auth_context **auth_context) ; 33NTSTATUS make_auth_context_fixed(struct auth_context **auth_context, uchar chal[8]) ; 34 35/* The following definitions come from auth/auth_builtin.c */ 36 37NTSTATUS auth_builtin_init(void); 38 39/* The following definitions come from auth/auth_compat.c */ 40 41NTSTATUS check_plaintext_password(const char *smb_name, DATA_BLOB plaintext_password, auth_serversupplied_info **server_info); 42bool password_ok(struct auth_context *actx, bool global_encrypted, 43 const char *session_workgroup, 44 const char *smb_name, DATA_BLOB password_blob); 45 46/* The following definitions come from auth/auth_domain.c */ 47 48void attempt_machine_password_change(void); 49NTSTATUS auth_domain_init(void); 50 51NTSTATUS auth_netlogond_init(void); 52 53/* The following definitions come from auth/auth_ntlmssp.c */ 54 55NTSTATUS auth_ntlmssp_start(AUTH_NTLMSSP_STATE **auth_ntlmssp_state); 56void auth_ntlmssp_end(AUTH_NTLMSSP_STATE **auth_ntlmssp_state); 57NTSTATUS auth_ntlmssp_update(AUTH_NTLMSSP_STATE *auth_ntlmssp_state, 58 const DATA_BLOB request, DATA_BLOB *reply) ; 59 60/* The following definitions come from auth/auth_sam.c */ 61 62NTSTATUS auth_sam_init(void); 63 64/* The following definitions come from auth/auth_server.c */ 65 66NTSTATUS auth_server_init(void); 67 68/* The following definitions come from auth/auth_unix.c */ 69 70NTSTATUS auth_unix_init(void); 71 72/* The following definitions come from auth/auth_util.c */ 73 74NTSTATUS make_user_info_map(auth_usersupplied_info **user_info, 75 const char *smb_name, 76 const char *client_domain, 77 const char *wksta_name, 78 DATA_BLOB *lm_pwd, DATA_BLOB *nt_pwd, 79 DATA_BLOB *lm_interactive_pwd, DATA_BLOB *nt_interactive_pwd, 80 DATA_BLOB *plaintext, 81 bool encrypted); 82bool make_user_info_netlogon_network(auth_usersupplied_info **user_info, 83 const char *smb_name, 84 const char *client_domain, 85 const char *wksta_name, 86 uint32 logon_parameters, 87 const uchar *lm_network_pwd, 88 int lm_pwd_len, 89 const uchar *nt_network_pwd, 90 int nt_pwd_len); 91bool make_user_info_netlogon_interactive(auth_usersupplied_info **user_info, 92 const char *smb_name, 93 const char *client_domain, 94 const char *wksta_name, 95 uint32 logon_parameters, 96 const uchar chal[8], 97 const uchar lm_interactive_pwd[16], 98 const uchar nt_interactive_pwd[16], 99 const uchar *dc_sess_key); 100bool make_user_info_for_reply(auth_usersupplied_info **user_info, 101 const char *smb_name, 102 const char *client_domain, 103 const uint8 chal[8], 104 DATA_BLOB plaintext_password); 105NTSTATUS make_user_info_for_reply_enc(auth_usersupplied_info **user_info, 106 const char *smb_name, 107 const char *client_domain, 108 DATA_BLOB lm_resp, DATA_BLOB nt_resp); 109bool make_user_info_guest(auth_usersupplied_info **user_info) ; 110NTSTATUS make_server_info_sam(auth_serversupplied_info **server_info, 111 struct samu *sampass); 112NTSTATUS create_local_token(auth_serversupplied_info *server_info); 113NTSTATUS create_token_from_username(TALLOC_CTX *mem_ctx, const char *username, 114 bool is_guest, 115 uid_t *uid, gid_t *gid, 116 char **found_username, 117 struct nt_user_token **token); 118bool user_in_group_sid(const char *username, const DOM_SID *group_sid); 119bool user_in_group(const char *username, const char *groupname); 120NTSTATUS make_server_info_pw(auth_serversupplied_info **server_info, 121 char *unix_username, 122 struct passwd *pwd); 123NTSTATUS make_serverinfo_from_username(TALLOC_CTX *mem_ctx, 124 const char *username, 125 bool is_guest, 126 struct auth_serversupplied_info **presult); 127struct auth_serversupplied_info *copy_serverinfo(TALLOC_CTX *mem_ctx, 128 const auth_serversupplied_info *src); 129bool init_guest_info(void); 130bool server_info_set_session_key(struct auth_serversupplied_info *info, 131 DATA_BLOB session_key); 132NTSTATUS make_server_info_guest(TALLOC_CTX *mem_ctx, 133 auth_serversupplied_info **server_info); 134bool copy_current_user(struct current_user *dst, struct current_user *src); 135struct passwd *smb_getpwnam( TALLOC_CTX *mem_ctx, char *domuser, 136 fstring save_username, bool create ); 137NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx, 138 const char *sent_nt_username, 139 const char *domain, 140 auth_serversupplied_info **server_info, 141 struct netr_SamInfo3 *info3); 142NTSTATUS make_server_info_wbcAuthUserInfo(TALLOC_CTX *mem_ctx, 143 const char *sent_nt_username, 144 const char *domain, 145 const struct wbcAuthUserInfo *info, 146 auth_serversupplied_info **server_info); 147void free_user_info(auth_usersupplied_info **user_info); 148bool make_auth_methods(struct auth_context *auth_context, auth_methods **auth_method) ; 149bool is_trusted_domain(const char* dom_name); 150 151/* The following definitions come from auth/auth_winbind.c */ 152 153NTSTATUS auth_winbind_init(void); 154 155/* The following definitions come from auth/auth_wbc.c */ 156 157NTSTATUS auth_wbc_init(void); 158 159/* The following definitions come from auth/pampass.c */ 160 161bool smb_pam_claim_session(char *user, char *tty, char *rhost); 162bool smb_pam_close_session(char *user, char *tty, char *rhost); 163NTSTATUS smb_pam_accountcheck(const char * user); 164NTSTATUS smb_pam_passcheck(const char * user, const char * password); 165bool smb_pam_passchange(const char * user, const char * oldpassword, const char * newpassword); 166NTSTATUS smb_pam_accountcheck(const char * user); 167bool smb_pam_claim_session(char *user, char *tty, char *rhost); 168bool smb_pam_close_session(char *in_user, char *tty, char *rhost); 169 170/* The following definitions come from auth/pass_check.c */ 171 172void dfs_unlogin(void); 173NTSTATUS pass_check(const struct passwd *pass, const char *user, const char *password, 174 int pwlen, bool (*fn) (const char *, const char *), bool run_cracker); 175 176/* The following definitions come from auth/token_util.c */ 177 178bool nt_token_check_sid ( const DOM_SID *sid, const NT_USER_TOKEN *token ); 179bool nt_token_check_domain_rid( NT_USER_TOKEN *token, uint32 rid ); 180NT_USER_TOKEN *get_root_nt_token( void ); 181NTSTATUS add_aliases(const DOM_SID *domain_sid, 182 struct nt_user_token *token); 183NTSTATUS create_builtin_users(const DOM_SID *sid); 184NTSTATUS create_builtin_administrators(const DOM_SID *sid); 185struct nt_user_token *create_local_nt_token(TALLOC_CTX *mem_ctx, 186 const DOM_SID *user_sid, 187 bool is_guest, 188 int num_groupsids, 189 const DOM_SID *groupsids); 190void debug_nt_user_token(int dbg_class, int dbg_lev, NT_USER_TOKEN *token); 191void debug_unix_user_token(int dbg_class, int dbg_lev, uid_t uid, gid_t gid, 192 int n_groups, gid_t *groups); 193 194/* The following definitions come from groupdb/mapping.c */ 195 196NTSTATUS add_initial_entry(gid_t gid, const char *sid, enum lsa_SidType sid_name_use, const char *nt_name, const char *comment); 197bool get_domain_group_from_sid(DOM_SID sid, GROUP_MAP *map); 198int smb_create_group(const char *unix_group, gid_t *new_gid); 199int smb_delete_group(const char *unix_group); 200int smb_set_primary_group(const char *unix_group, const char* unix_user); 201int smb_add_user_group(const char *unix_group, const char *unix_user); 202int smb_delete_user_group(const char *unix_group, const char *unix_user); 203NTSTATUS pdb_default_getgrsid(struct pdb_methods *methods, GROUP_MAP *map, 204 DOM_SID sid); 205NTSTATUS pdb_default_getgrgid(struct pdb_methods *methods, GROUP_MAP *map, 206 gid_t gid); 207NTSTATUS pdb_default_getgrnam(struct pdb_methods *methods, GROUP_MAP *map, 208 const char *name); 209NTSTATUS pdb_default_add_group_mapping_entry(struct pdb_methods *methods, 210 GROUP_MAP *map); 211NTSTATUS pdb_default_update_group_mapping_entry(struct pdb_methods *methods, 212 GROUP_MAP *map); 213NTSTATUS pdb_default_delete_group_mapping_entry(struct pdb_methods *methods, 214 DOM_SID sid); 215NTSTATUS pdb_default_enum_group_mapping(struct pdb_methods *methods, 216 const DOM_SID *sid, enum lsa_SidType sid_name_use, 217 GROUP_MAP **pp_rmap, size_t *p_num_entries, 218 bool unix_only); 219NTSTATUS pdb_default_create_alias(struct pdb_methods *methods, 220 const char *name, uint32 *rid); 221NTSTATUS pdb_default_delete_alias(struct pdb_methods *methods, 222 const DOM_SID *sid); 223NTSTATUS pdb_default_get_aliasinfo(struct pdb_methods *methods, 224 const DOM_SID *sid, 225 struct acct_info *info); 226NTSTATUS pdb_default_set_aliasinfo(struct pdb_methods *methods, 227 const DOM_SID *sid, 228 struct acct_info *info); 229NTSTATUS pdb_default_add_aliasmem(struct pdb_methods *methods, 230 const DOM_SID *alias, const DOM_SID *member); 231NTSTATUS pdb_default_del_aliasmem(struct pdb_methods *methods, 232 const DOM_SID *alias, const DOM_SID *member); 233NTSTATUS pdb_default_enum_aliasmem(struct pdb_methods *methods, 234 const DOM_SID *alias, TALLOC_CTX *mem_ctx, 235 DOM_SID **pp_members, 236 size_t *p_num_members); 237NTSTATUS pdb_default_alias_memberships(struct pdb_methods *methods, 238 TALLOC_CTX *mem_ctx, 239 const DOM_SID *domain_sid, 240 const DOM_SID *members, 241 size_t num_members, 242 uint32 **pp_alias_rids, 243 size_t *p_num_alias_rids); 244NTSTATUS pdb_nop_getgrsid(struct pdb_methods *methods, GROUP_MAP *map, 245 DOM_SID sid); 246NTSTATUS pdb_nop_getgrgid(struct pdb_methods *methods, GROUP_MAP *map, 247 gid_t gid); 248NTSTATUS pdb_nop_getgrnam(struct pdb_methods *methods, GROUP_MAP *map, 249 const char *name); 250NTSTATUS pdb_nop_add_group_mapping_entry(struct pdb_methods *methods, 251 GROUP_MAP *map); 252NTSTATUS pdb_nop_update_group_mapping_entry(struct pdb_methods *methods, 253 GROUP_MAP *map); 254NTSTATUS pdb_nop_delete_group_mapping_entry(struct pdb_methods *methods, 255 DOM_SID sid); 256NTSTATUS pdb_nop_enum_group_mapping(struct pdb_methods *methods, 257 enum lsa_SidType sid_name_use, 258 GROUP_MAP **rmap, size_t *num_entries, 259 bool unix_only); 260bool pdb_get_dom_grp_info(const DOM_SID *sid, struct acct_info *info); 261bool pdb_set_dom_grp_info(const DOM_SID *sid, const struct acct_info *info); 262NTSTATUS pdb_create_builtin_alias(uint32 rid); 263 264/* The following definitions come from groupdb/mapping_ldb.c */ 265 266const struct mapping_backend *groupdb_ldb_init(void); 267 268/* The following definitions come from groupdb/mapping_tdb.c */ 269 270const struct mapping_backend *groupdb_tdb_init(void); 271 272/* The following definitions come from intl/lang_tdb.c */ 273 274bool lang_tdb_init(const char *lang); 275const char *lang_msg(const char *msgid); 276void lang_msg_free(const char *msgstr); 277char *lang_tdb_current(void); 278 279/* The following definitions come from lib/access.c */ 280 281bool client_match(const char *tok, const void *item); 282bool list_match(const char **list,const void *item, 283 bool (*match_fn)(const char *, const void *)); 284bool allow_access(const char **deny_list, 285 const char **allow_list, 286 const char *cname, 287 const char *caddr); 288bool check_access(int sock, const char **allow_list, const char **deny_list); 289 290/* The following definitions come from lib/account_pol.c */ 291 292void account_policy_names_list(const char ***names, int *num_names); 293const char *decode_account_policy_name(enum pdb_policy_type type); 294const char *get_account_policy_attr(enum pdb_policy_type type); 295const char *account_policy_get_desc(enum pdb_policy_type type); 296enum pdb_policy_type account_policy_name_to_typenum(const char *name); 297bool account_policy_get_default(enum pdb_policy_type type, uint32_t *val); 298bool init_account_policy(void); 299bool account_policy_get(enum pdb_policy_type type, uint32_t *value); 300bool account_policy_set(enum pdb_policy_type type, uint32_t value); 301bool cache_account_policy_set(enum pdb_policy_type type, uint32_t value); 302bool cache_account_policy_get(enum pdb_policy_type type, uint32_t *value); 303struct db_context *get_account_pol_db( void ); 304 305/* The following definitions come from lib/adt_tree.c */ 306 307 308/* The following definitions come from lib/afs.c */ 309 310char *afs_createtoken_str(const char *username, const char *cell); 311bool afs_login(connection_struct *conn); 312bool afs_login(connection_struct *conn); 313char *afs_createtoken_str(const char *username, const char *cell); 314 315/* The following definitions come from lib/afs_settoken.c */ 316 317int afs_syscall( int subcall, 318 char * path, 319 int cmd, 320 char * cmarg, 321 int follow); 322bool afs_settoken_str(const char *token_string); 323bool afs_settoken_str(const char *token_string); 324 325/* The following definitions come from lib/audit.c */ 326 327const char *audit_category_str(uint32 category); 328const char *audit_param_str(uint32 category); 329const char *audit_description_str(uint32 category); 330bool get_audit_category_from_param(const char *param, uint32 *audit_category); 331const char *audit_policy_str(TALLOC_CTX *mem_ctx, uint32 policy); 332 333/* The following definitions come from lib/bitmap.c */ 334 335struct bitmap *bitmap_allocate(int n); 336void bitmap_free(struct bitmap *bm); 337struct bitmap *bitmap_talloc(TALLOC_CTX *mem_ctx, int n); 338int bitmap_copy(struct bitmap * const dst, const struct bitmap * const src); 339bool bitmap_set(struct bitmap *bm, unsigned i); 340bool bitmap_clear(struct bitmap *bm, unsigned i); 341bool bitmap_query(struct bitmap *bm, unsigned i); 342int bitmap_find(struct bitmap *bm, unsigned ofs); 343 344/* The following definitions come from lib/charcnv.c */ 345 346NTSTATUS smb_register_charset(struct charset_functions *funcs); 347char lp_failed_convert_char(void); 348void lazy_initialize_conv(void); 349void gfree_charcnv(void); 350void init_iconv(void); 351size_t convert_string(charset_t from, charset_t to, 352 void const *src, size_t srclen, 353 void *dest, size_t destlen, bool allow_bad_conv); 354size_t unix_strupper(const char *src, size_t srclen, char *dest, size_t destlen); 355char *talloc_strdup_upper(TALLOC_CTX *ctx, const char *s); 356char *strupper_talloc(TALLOC_CTX *ctx, const char *s); 357size_t unix_strlower(const char *src, size_t srclen, char *dest, size_t destlen); 358char *talloc_strdup_lower(TALLOC_CTX *ctx, const char *s); 359char *strlower_talloc(TALLOC_CTX *ctx, const char *s); 360size_t ucs2_align(const void *base_ptr, const void *p, int flags); 361size_t push_ascii(void *dest, const char *src, size_t dest_len, int flags); 362size_t push_ascii_fstring(void *dest, const char *src); 363size_t push_ascii_nstring(void *dest, const char *src); 364size_t pull_ascii(char *dest, const void *src, size_t dest_len, size_t src_len, int flags); 365size_t pull_ascii_fstring(char *dest, const void *src); 366size_t pull_ascii_nstring(char *dest, size_t dest_len, const void *src); 367size_t push_ucs2(const void *base_ptr, void *dest, const char *src, size_t dest_len, int flags); 368size_t push_utf8_fstring(void *dest, const char *src); 369bool push_utf8_talloc(TALLOC_CTX *ctx, char **dest, const char *src, 370 size_t *converted_size); 371size_t pull_ucs2(const void *base_ptr, char *dest, const void *src, size_t dest_len, size_t src_len, int flags); 372size_t pull_ucs2_base_talloc(TALLOC_CTX *ctx, 373 const void *base_ptr, 374 char **ppdest, 375 const void *src, 376 size_t src_len, 377 int flags); 378size_t pull_ucs2_fstring(char *dest, const void *src); 379bool push_ucs2_talloc(TALLOC_CTX *ctx, smb_ucs2_t **dest, const char *src, 380 size_t *converted_size); 381bool pull_utf8_talloc(TALLOC_CTX *ctx, char **dest, const char *src, 382 size_t *converted_size); 383bool pull_ucs2_talloc(TALLOC_CTX *ctx, char **dest, const smb_ucs2_t *src, 384 size_t *converted_size); 385bool pull_ascii_talloc(TALLOC_CTX *ctx, char **dest, const char *src, 386 size_t *converted_size); 387size_t push_string_check_fn(const char *function, unsigned int line, 388 void *dest, const char *src, 389 size_t dest_len, int flags); 390size_t push_string_base(const char *function, unsigned int line, 391 const char *base, uint16 flags2, 392 void *dest, const char *src, 393 size_t dest_len, int flags); 394size_t pull_string_fn(const char *function, 395 unsigned int line, 396 const void *base_ptr, 397 uint16 smb_flags2, 398 char *dest, 399 const void *src, 400 size_t dest_len, 401 size_t src_len, 402 int flags); 403size_t pull_string_talloc_fn(const char *function, 404 unsigned int line, 405 TALLOC_CTX *ctx, 406 const void *base_ptr, 407 uint16 smb_flags2, 408 char **ppdest, 409 const void *src, 410 size_t src_len, 411 int flags); 412size_t align_string(const void *base_ptr, const char *p, int flags); 413codepoint_t next_codepoint(const char *str, size_t *size); 414 415/* The following definitions come from lib/clobber.c */ 416 417void clobber_region(const char *fn, unsigned int line, char *dest, size_t len); 418 419/* The following definitions come from lib/conn_tdb.c */ 420 421struct db_record *connections_fetch_record(TALLOC_CTX *mem_ctx, 422 TDB_DATA key); 423struct db_record *connections_fetch_entry(TALLOC_CTX *mem_ctx, 424 connection_struct *conn, 425 const char *name); 426int connections_traverse(int (*fn)(struct db_record *rec, 427 void *private_data), 428 void *private_data); 429int connections_forall(int (*fn)(struct db_record *rec, 430 const struct connections_key *key, 431 const struct connections_data *data, 432 void *private_data), 433 void *private_data); 434bool connections_init(bool rw); 435 436/* The following definitions come from lib/dbwrap_util.c */ 437 438int32_t dbwrap_fetch_int32(struct db_context *db, const char *keystr); 439int dbwrap_store_int32(struct db_context *db, const char *keystr, int32_t v); 440bool dbwrap_fetch_uint32(struct db_context *db, const char *keystr, 441 uint32_t *val); 442int dbwrap_store_uint32(struct db_context *db, const char *keystr, uint32_t v); 443NTSTATUS dbwrap_change_uint32_atomic(struct db_context *db, const char *keystr, 444 uint32_t *oldval, uint32_t change_val); 445NTSTATUS dbwrap_trans_change_uint32_atomic(struct db_context *db, 446 const char *keystr, 447 uint32_t *oldval, 448 uint32_t change_val); 449NTSTATUS dbwrap_change_int32_atomic(struct db_context *db, const char *keystr, 450 int32_t *oldval, int32_t change_val); 451NTSTATUS dbwrap_trans_change_int32_atomic(struct db_context *db, 452 const char *keystr, 453 int32_t *oldval, 454 int32_t change_val); 455NTSTATUS dbwrap_trans_store(struct db_context *db, TDB_DATA key, TDB_DATA dbuf, 456 int flag); 457NTSTATUS dbwrap_trans_delete(struct db_context *db, TDB_DATA key); 458NTSTATUS dbwrap_trans_store_int32(struct db_context *db, const char *keystr, 459 int32_t v); 460NTSTATUS dbwrap_trans_store_uint32(struct db_context *db, const char *keystr, 461 uint32_t v); 462NTSTATUS dbwrap_trans_store_bystring(struct db_context *db, const char *key, 463 TDB_DATA data, int flags); 464NTSTATUS dbwrap_trans_delete_bystring(struct db_context *db, const char *key); 465NTSTATUS dbwrap_trans_do(struct db_context *db, 466 NTSTATUS (*action)(struct db_context *, void *), 467 void *private_data); 468NTSTATUS dbwrap_delete_bystring_upper(struct db_context *db, const char *key); 469NTSTATUS dbwrap_store_bystring_upper(struct db_context *db, const char *key, 470 TDB_DATA data, int flags); 471TDB_DATA dbwrap_fetch_bystring_upper(struct db_context *db, TALLOC_CTX *mem_ctx, 472 const char *key); 473 474/* The following definitions come from lib/debug.c */ 475 476void gfree_debugsyms(void); 477const char *debug_classname_from_index(int ndx); 478int debug_add_class(const char *classname); 479int debug_lookup_classname(const char *classname); 480bool debug_parse_levels(const char *params_str); 481void debug_message(struct messaging_context *msg_ctx, void *private_data, uint32_t msg_type, struct server_id src, DATA_BLOB *data); 482void debug_init(void); 483void debug_register_msgs(struct messaging_context *msg_ctx); 484void setup_logging(const char *pname, bool interactive); 485void setup_logging_stdout( void ); 486void debug_set_logfile(const char *name); 487bool reopen_logs( void ); 488void force_check_log_size( void ); 489bool need_to_check_log_size( void ); 490void check_log_size( void ); 491void dbgflush( void ); 492bool dbghdrclass(int level, int cls, const char *location, const char *func); 493bool dbghdr(int level, const char *location, const char *func); 494 495/* The following definitions come from lib/display_sec.c */ 496 497char *get_sec_mask_str(TALLOC_CTX *ctx, uint32 type); 498void display_sec_access(uint32_t *info); 499void display_sec_ace_flags(uint8_t flags); 500void display_sec_ace(SEC_ACE *ace); 501void display_sec_acl(SEC_ACL *sec_acl); 502void display_acl_type(uint16 type); 503void display_sec_desc(SEC_DESC *sec); 504 505/* The following definitions come from lib/dmallocmsg.c */ 506 507void register_dmalloc_msgs(struct messaging_context *msg_ctx); 508 509/* The following definitions come from lib/dprintf.c */ 510 511void display_set_stderr(void); 512 513/* The following definitions come from lib/errmap_unix.c */ 514 515NTSTATUS map_nt_error_from_unix(int unix_error); 516int map_errno_from_nt_status(NTSTATUS status); 517 518/* The following definitions come from lib/fault.c */ 519void fault_setup(void (*fn)(void *)); 520void dump_core_setup(const char *progname); 521 522/* The following definitions come from lib/file_id.c */ 523 524struct file_id vfs_file_id_from_sbuf(connection_struct *conn, const SMB_STRUCT_STAT *sbuf); 525bool file_id_equal(const struct file_id *id1, const struct file_id *id2); 526const char *file_id_string_tos(const struct file_id *id); 527void push_file_id_16(char *buf, const struct file_id *id); 528void push_file_id_24(char *buf, const struct file_id *id); 529void pull_file_id_24(char *buf, struct file_id *id); 530 531/* The following definitions come from lib/gencache.c */ 532 533bool gencache_set(const char *keystr, const char *value, time_t timeout); 534bool gencache_del(const char *keystr); 535bool gencache_get(const char *keystr, char **valstr, time_t *timeout); 536bool gencache_get_data_blob(const char *keystr, DATA_BLOB *blob, 537 time_t *timeout, bool *was_expired); 538bool gencache_stabilize(void); 539bool gencache_set_data_blob(const char *keystr, const DATA_BLOB *blob, time_t timeout); 540void gencache_iterate(void (*fn)(const char* key, const char *value, time_t timeout, void* dptr), 541 void* data, const char* keystr_pattern); 542 543/* The following definitions come from lib/interface.c */ 544 545bool ismyaddr(const struct sockaddr *ip); 546bool ismyip_v4(struct in_addr ip); 547bool is_local_net(const struct sockaddr *from); 548void setup_linklocal_scope_id(struct sockaddr *pss); 549bool is_local_net_v4(struct in_addr from); 550int iface_count(void); 551int iface_count_v4_nl(void); 552const struct in_addr *first_ipv4_iface(void); 553struct interface *get_interface(int n); 554const struct sockaddr_storage *iface_n_sockaddr_storage(int n); 555const struct in_addr *iface_n_ip_v4(int n); 556const struct in_addr *iface_n_bcast_v4(int n); 557const struct sockaddr_storage *iface_n_bcast(int n); 558const struct sockaddr_storage *iface_ip(const struct sockaddr *ip); 559bool iface_local(const struct sockaddr *ip); 560void load_interfaces(void); 561void gfree_interfaces(void); 562bool interfaces_changed(void); 563 564/* The following definitions come from lib/ldap_debug_handler.c */ 565 566void init_ldap_debugging(void); 567 568/* The following definitions come from lib/ldap_escape.c */ 569 570char *escape_ldap_string(TALLOC_CTX *mem_ctx, const char *s); 571char *escape_rdn_val_string_alloc(const char *s); 572 573/* The following definitions come from lib/module.c */ 574 575NTSTATUS smb_load_module(const char *module_name); 576int smb_load_modules(const char **modules); 577NTSTATUS smb_probe_module(const char *subsystem, const char *module); 578NTSTATUS smb_load_module(const char *module_name); 579int smb_load_modules(const char **modules); 580NTSTATUS smb_probe_module(const char *subsystem, const char *module); 581void init_modules(void); 582 583/* The following definitions come from lib/ms_fnmatch.c */ 584 585int ms_fnmatch(const char *pattern, const char *string, bool translate_pattern, 586 bool is_case_sensitive); 587int gen_fnmatch(const char *pattern, const char *string); 588 589/* The following definitions come from lib/pam_errors.c */ 590 591NTSTATUS pam_to_nt_status(int pam_error); 592int nt_status_to_pam(NTSTATUS nt_status); 593NTSTATUS pam_to_nt_status(int pam_error); 594int nt_status_to_pam(NTSTATUS nt_status); 595 596/* The following definitions come from lib/pidfile.c */ 597 598pid_t pidfile_pid(const char *name); 599void pidfile_create(const char *program_name); 600void pidfile_unlink(void); 601 602/* The following definitions come from lib/popt_common.c */ 603 604void popt_common_set_auth_info(struct user_auth_info *auth_info); 605 606/* The following definitions come from lib/privileges.c */ 607 608bool get_privileges_for_sids(SE_PRIV *privileges, DOM_SID *slist, int scount); 609NTSTATUS privilege_enumerate_accounts(DOM_SID **sids, int *num_sids); 610NTSTATUS privilege_enum_sids(const SE_PRIV *mask, TALLOC_CTX *mem_ctx, 611 DOM_SID **sids, int *num_sids); 612bool grant_privilege(const DOM_SID *sid, const SE_PRIV *priv_mask); 613bool grant_privilege_by_name(DOM_SID *sid, const char *name); 614bool revoke_privilege(const DOM_SID *sid, const SE_PRIV *priv_mask); 615bool revoke_all_privileges( DOM_SID *sid ); 616bool revoke_privilege_by_name(DOM_SID *sid, const char *name); 617NTSTATUS privilege_create_account(const DOM_SID *sid ); 618NTSTATUS privilege_delete_account(const struct dom_sid *sid); 619NTSTATUS privilege_set_init(PRIVILEGE_SET *priv_set); 620NTSTATUS privilege_set_init_by_ctx(TALLOC_CTX *mem_ctx, PRIVILEGE_SET *priv_set); 621void privilege_set_free(PRIVILEGE_SET *priv_set); 622NTSTATUS dup_luid_attr(TALLOC_CTX *mem_ctx, LUID_ATTR **new_la, LUID_ATTR *old_la, int count); 623bool is_privileged_sid( const DOM_SID *sid ); 624bool grant_all_privileges( const DOM_SID *sid ); 625 626/* The following definitions come from lib/privileges_basic.c */ 627 628bool se_priv_copy( SE_PRIV *dst, const SE_PRIV *src ); 629bool se_priv_put_all_privileges(SE_PRIV *mask); 630void se_priv_add( SE_PRIV *mask, const SE_PRIV *addpriv ); 631void se_priv_remove( SE_PRIV *mask, const SE_PRIV *removepriv ); 632bool se_priv_equal( const SE_PRIV *mask1, const SE_PRIV *mask2 ); 633bool se_priv_from_name( const char *name, SE_PRIV *mask ); 634void dump_se_priv( int dbg_cl, int dbg_lvl, const SE_PRIV *mask ); 635bool is_privilege_assigned(const SE_PRIV *privileges, 636 const SE_PRIV *check); 637const char* get_privilege_dispname( const char *name ); 638bool user_has_privileges(const NT_USER_TOKEN *token, const SE_PRIV *privilege); 639bool user_has_any_privilege(NT_USER_TOKEN *token, const SE_PRIV *privilege); 640int count_all_privileges( void ); 641LUID_ATTR get_privilege_luid( SE_PRIV *mask ); 642const char *luid_to_privilege_name(const LUID *set); 643bool se_priv_to_privilege_set( PRIVILEGE_SET *set, SE_PRIV *mask ); 644bool privilege_set_to_se_priv( SE_PRIV *mask, struct lsa_PrivilegeSet *privset ); 645 646/* The following definitions come from lib/readline.c */ 647 648void smb_readline_done(void); 649char *smb_readline(const char *prompt, void (*callback)(void), 650 char **(completion_fn)(const char *text, int start, int end)); 651const char *smb_readline_get_line_buffer(void); 652void smb_readline_ca_char(char c); 653int cmd_history(void); 654 655/* The following definitions come from lib/recvfile.c */ 656 657ssize_t sys_recvfile(int fromfd, 658 int tofd, 659 SMB_OFF_T offset, 660 size_t count); 661ssize_t sys_recvfile(int fromfd, 662 int tofd, 663 SMB_OFF_T offset, 664 size_t count); 665ssize_t drain_socket(int sockfd, size_t count); 666 667/* The following definitions come from lib/secdesc.c */ 668 669uint32_t get_sec_info(const SEC_DESC *sd); 670SEC_DESC_BUF *sec_desc_merge(TALLOC_CTX *ctx, SEC_DESC_BUF *new_sdb, SEC_DESC_BUF *old_sdb); 671SEC_DESC *make_sec_desc(TALLOC_CTX *ctx, 672 enum security_descriptor_revision revision, 673 uint16 type, 674 const DOM_SID *owner_sid, const DOM_SID *grp_sid, 675 SEC_ACL *sacl, SEC_ACL *dacl, size_t *sd_size); 676SEC_DESC *dup_sec_desc(TALLOC_CTX *ctx, const SEC_DESC *src); 677NTSTATUS marshall_sec_desc(TALLOC_CTX *mem_ctx, 678 struct security_descriptor *secdesc, 679 uint8 **data, size_t *len); 680NTSTATUS marshall_sec_desc_buf(TALLOC_CTX *mem_ctx, 681 struct sec_desc_buf *secdesc_buf, 682 uint8_t **data, size_t *len); 683NTSTATUS unmarshall_sec_desc(TALLOC_CTX *mem_ctx, uint8 *data, size_t len, 684 struct security_descriptor **psecdesc); 685NTSTATUS unmarshall_sec_desc_buf(TALLOC_CTX *mem_ctx, uint8_t *data, size_t len, 686 struct sec_desc_buf **psecdesc_buf); 687SEC_DESC *make_standard_sec_desc(TALLOC_CTX *ctx, const DOM_SID *owner_sid, const DOM_SID *grp_sid, 688 SEC_ACL *dacl, size_t *sd_size); 689SEC_DESC_BUF *make_sec_desc_buf(TALLOC_CTX *ctx, size_t len, SEC_DESC *sec_desc); 690SEC_DESC_BUF *dup_sec_desc_buf(TALLOC_CTX *ctx, SEC_DESC_BUF *src); 691NTSTATUS sec_desc_add_sid(TALLOC_CTX *ctx, SEC_DESC **psd, DOM_SID *sid, uint32 mask, size_t *sd_size); 692NTSTATUS sec_desc_mod_sid(SEC_DESC *sd, DOM_SID *sid, uint32 mask); 693NTSTATUS sec_desc_del_sid(TALLOC_CTX *ctx, SEC_DESC **psd, DOM_SID *sid, size_t *sd_size); 694bool sd_has_inheritable_components(const SEC_DESC *parent_ctr, bool container); 695NTSTATUS se_create_child_secdesc(TALLOC_CTX *ctx, 696 SEC_DESC **ppsd, 697 size_t *psize, 698 const SEC_DESC *parent_ctr, 699 const DOM_SID *owner_sid, 700 const DOM_SID *group_sid, 701 bool container); 702NTSTATUS se_create_child_secdesc_buf(TALLOC_CTX *ctx, 703 SEC_DESC_BUF **ppsdb, 704 const SEC_DESC *parent_ctr, 705 bool container); 706 707/* The following definitions come from lib/select.c */ 708 709void sys_select_signal(char c); 710int sys_select(int maxfd, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *tval); 711int sys_select_intr(int maxfd, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *tval); 712 713/* The following definitions come from lib/sendfile.c */ 714 715ssize_t sys_sendfile(int tofd, int fromfd, const DATA_BLOB *header, SMB_OFF_T offset, size_t count); 716 717/* The following definitions come from lib/server_mutex.c */ 718 719struct named_mutex *grab_named_mutex(TALLOC_CTX *mem_ctx, const char *name, 720 int timeout); 721 722/* The following definitions come from lib/sharesec.c */ 723 724bool share_info_db_init(void); 725SEC_DESC *get_share_security_default( TALLOC_CTX *ctx, size_t *psize, uint32 def_access); 726SEC_DESC *get_share_security( TALLOC_CTX *ctx, const char *servicename, 727 size_t *psize); 728bool set_share_security(const char *share_name, SEC_DESC *psd); 729bool delete_share_security(const char *servicename); 730bool share_access_check(const NT_USER_TOKEN *token, const char *sharename, 731 uint32 desired_access); 732bool parse_usershare_acl(TALLOC_CTX *ctx, const char *acl_str, SEC_DESC **ppsd); 733 734/* The following definitions come from lib/smbldap.c */ 735 736int smb_ldap_start_tls(LDAP *ldap_struct, int version); 737int smb_ldap_setup_conn(LDAP **ldap_struct, const char *uri); 738int smb_ldap_upgrade_conn(LDAP *ldap_struct, int *new_version) ; 739int smb_ldap_setup_full_conn(LDAP **ldap_struct, const char *uri); 740int smbldap_search(struct smbldap_state *ldap_state, 741 const char *base, int scope, const char *filter, 742 const char *attrs[], int attrsonly, 743 LDAPMessage **res); 744int smbldap_search_paged(struct smbldap_state *ldap_state, 745 const char *base, int scope, const char *filter, 746 const char **attrs, int attrsonly, int pagesize, 747 LDAPMessage **res, void **cookie); 748int smbldap_modify(struct smbldap_state *ldap_state, const char *dn, LDAPMod *attrs[]); 749int smbldap_add(struct smbldap_state *ldap_state, const char *dn, LDAPMod *attrs[]); 750int smbldap_delete(struct smbldap_state *ldap_state, const char *dn); 751int smbldap_extended_operation(struct smbldap_state *ldap_state, 752 LDAP_CONST char *reqoid, struct berval *reqdata, 753 LDAPControl **serverctrls, LDAPControl **clientctrls, 754 char **retoidp, struct berval **retdatap); 755int smbldap_search_suffix (struct smbldap_state *ldap_state, 756 const char *filter, const char **search_attr, 757 LDAPMessage ** result); 758void smbldap_free_struct(struct smbldap_state **ldap_state) ; 759NTSTATUS smbldap_init(TALLOC_CTX *mem_ctx, struct event_context *event_ctx, 760 const char *location, 761 struct smbldap_state **smbldap_state); 762bool smbldap_has_control(LDAP *ld, const char *control); 763bool smbldap_has_extension(LDAP *ld, const char *extension); 764bool smbldap_has_naming_context(LDAP *ld, const char *naming_context); 765bool smbldap_set_creds(struct smbldap_state *ldap_state, bool anon, const char *dn, const char *secret); 766 767/* The following definitions come from lib/smbldap_util.c */ 768 769NTSTATUS smbldap_search_domain_info(struct smbldap_state *ldap_state, 770 LDAPMessage ** result, const char *domain_name, 771 bool try_add); 772 773/* The following definitions come from lib/smbrun.c */ 774 775int smbrun_no_sanitize(const char *cmd, int *outfd); 776int smbrun(const char *cmd, int *outfd); 777int smbrunsecret(const char *cmd, const char *secret); 778 779/* The following definitions come from lib/sock_exec.c */ 780 781int sock_exec(const char *prog); 782 783/* The following definitions come from lib/substitute.c */ 784 785void free_local_machine_name(void); 786bool set_local_machine_name(const char *local_name, bool perm); 787const char *get_local_machine_name(void); 788bool set_remote_machine_name(const char *remote_name, bool perm); 789const char *get_remote_machine_name(void); 790void sub_set_smb_name(const char *name); 791void set_current_user_info(const char *smb_name, const char *unix_name, 792 const char *domain); 793const char *get_current_username(void); 794void standard_sub_basic(const char *smb_name, const char *domain_name, 795 char *str, size_t len); 796char *talloc_sub_basic(TALLOC_CTX *mem_ctx, const char *smb_name, 797 const char *domain_name, const char *str); 798char *alloc_sub_basic(const char *smb_name, const char *domain_name, 799 const char *str); 800char *talloc_sub_specified(TALLOC_CTX *mem_ctx, 801 const char *input_string, 802 const char *username, 803 const char *domain, 804 uid_t uid, 805 gid_t gid); 806char *talloc_sub_advanced(TALLOC_CTX *mem_ctx, 807 const char *servicename, const char *user, 808 const char *connectpath, gid_t gid, 809 const char *smb_name, const char *domain_name, 810 const char *str); 811void standard_sub_advanced(const char *servicename, const char *user, 812 const char *connectpath, gid_t gid, 813 const char *smb_name, const char *domain_name, 814 char *str, size_t len); 815char *standard_sub_conn(TALLOC_CTX *ctx, connection_struct *conn, const char *str); 816 817/* The following definitions come from lib/sysacls.c */ 818 819int sys_acl_get_entry(SMB_ACL_T acl_d, int entry_id, SMB_ACL_ENTRY_T *entry_p); 820int sys_acl_get_tag_type(SMB_ACL_ENTRY_T entry_d, SMB_ACL_TAG_T *type_p); 821int sys_acl_get_permset(SMB_ACL_ENTRY_T entry_d, SMB_ACL_PERMSET_T *permset_p); 822void *sys_acl_get_qualifier(SMB_ACL_ENTRY_T entry_d); 823int sys_acl_clear_perms(SMB_ACL_PERMSET_T permset_d); 824int sys_acl_add_perm(SMB_ACL_PERMSET_T permset_d, SMB_ACL_PERM_T perm); 825int sys_acl_get_perm(SMB_ACL_PERMSET_T permset_d, SMB_ACL_PERM_T perm); 826char *sys_acl_to_text(SMB_ACL_T acl_d, ssize_t *len_p); 827SMB_ACL_T sys_acl_init(int count); 828int sys_acl_create_entry(SMB_ACL_T *acl_p, SMB_ACL_ENTRY_T *entry_p); 829int sys_acl_set_tag_type(SMB_ACL_ENTRY_T entry_d, SMB_ACL_TAG_T tag_type); 830int sys_acl_set_qualifier(SMB_ACL_ENTRY_T entry_d, void *qual_p); 831int sys_acl_set_permset(SMB_ACL_ENTRY_T entry_d, SMB_ACL_PERMSET_T permset_d); 832int sys_acl_free_text(char *text); 833int sys_acl_free_acl(SMB_ACL_T acl_d) ; 834int sys_acl_free_qualifier(void *qual, SMB_ACL_TAG_T tagtype); 835int sys_acl_valid(SMB_ACL_T acl_d); 836SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, 837 const char *path_p, SMB_ACL_TYPE_T type); 838SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); 839int sys_acl_set_file(vfs_handle_struct *handle, 840 const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); 841int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, 842 SMB_ACL_T acl_d); 843int sys_acl_delete_def_file(vfs_handle_struct *handle, 844 const char *path); 845SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, 846 const char *path_p, SMB_ACL_TYPE_T type); 847SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); 848int sys_acl_set_file(vfs_handle_struct *handle, 849 const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); 850int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, 851 SMB_ACL_T acl_d); 852int sys_acl_delete_def_file(vfs_handle_struct *handle, 853 const char *path); 854SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, 855 const char *path_p, SMB_ACL_TYPE_T type); 856SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); 857int sys_acl_set_file(vfs_handle_struct *handle, 858 const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); 859int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, 860 SMB_ACL_T acl_d); 861int sys_acl_delete_def_file(vfs_handle_struct *handle, 862 const char *path); 863SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, 864 const char *path_p, SMB_ACL_TYPE_T type); 865SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); 866int sys_acl_set_file(vfs_handle_struct *handle, 867 const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); 868int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, 869 SMB_ACL_T acl_d); 870int sys_acl_delete_def_file(vfs_handle_struct *handle, 871 const char *path); 872SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, 873 const char *path_p, SMB_ACL_TYPE_T type); 874SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); 875int sys_acl_set_file(vfs_handle_struct *handle, 876 const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); 877int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, 878 SMB_ACL_T acl_d); 879int sys_acl_delete_def_file(vfs_handle_struct *handle, 880 const char *path); 881SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, 882 const char *path_p, SMB_ACL_TYPE_T type); 883SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); 884int sys_acl_set_file(vfs_handle_struct *handle, 885 const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); 886int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, 887 SMB_ACL_T acl_d); 888int sys_acl_delete_def_file(vfs_handle_struct *handle, 889 const char *path); 890SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, 891 const char *path_p, SMB_ACL_TYPE_T type); 892SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); 893int sys_acl_set_file(vfs_handle_struct *handle, 894 const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); 895int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, 896 SMB_ACL_T acl_d); 897int sys_acl_delete_def_file(vfs_handle_struct *handle, 898 const char *path); 899int no_acl_syscall_error(int err); 900 901/* The following definitions come from lib/sysquotas.c */ 902 903int sys_get_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp); 904int sys_set_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp); 905 906/* The following definitions come from lib/sysquotas_*.c */ 907 908int sys_get_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp); 909int sys_set_vfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp); 910 911int sys_get_xfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp); 912int sys_set_xfs_quota(const char *path, const char *bdev, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dp); 913 914/* The following definitions come from lib/system.c */ 915 916void *sys_memalign( size_t align, size_t size ); 917int sys_usleep(long usecs); 918ssize_t sys_read(int fd, void *buf, size_t count); 919ssize_t sys_write(int fd, const void *buf, size_t count); 920ssize_t sys_writev(int fd, const struct iovec *iov, int iovcnt); 921ssize_t sys_pread(int fd, void *buf, size_t count, SMB_OFF_T off); 922ssize_t sys_pwrite(int fd, const void *buf, size_t count, SMB_OFF_T off); 923ssize_t sys_send(int s, const void *msg, size_t len, int flags); 924ssize_t sys_sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); 925ssize_t sys_recv(int fd, void *buf, size_t count, int flags); 926ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen); 927int sys_fcntl_ptr(int fd, int cmd, void *arg); 928int sys_fcntl_long(int fd, int cmd, long arg); 929void update_stat_ex_mtime(struct stat_ex *dst, struct timespec write_ts); 930void update_stat_ex_create_time(struct stat_ex *dst, struct timespec create_time); 931int sys_stat(const char *fname, SMB_STRUCT_STAT *sbuf, 932 bool fake_dir_create_times); 933int sys_fstat(int fd, SMB_STRUCT_STAT *sbuf, 934 bool fake_dir_create_times); 935int sys_lstat(const char *fname,SMB_STRUCT_STAT *sbuf, 936 bool fake_dir_create_times); 937int sys_ftruncate(int fd, SMB_OFF_T offset); 938int sys_posix_fallocate(int fd, SMB_OFF_T offset, SMB_OFF_T len); 939SMB_OFF_T sys_lseek(int fd, SMB_OFF_T offset, int whence); 940int sys_fseek(FILE *fp, SMB_OFF_T offset, int whence); 941SMB_OFF_T sys_ftell(FILE *fp); 942int sys_creat(const char *path, mode_t mode); 943int sys_open(const char *path, int oflag, mode_t mode); 944FILE *sys_fopen(const char *path, const char *type); 945void kernel_flock(int fd, uint32 share_mode, uint32 access_mask); 946SMB_STRUCT_DIR *sys_opendir(const char *name); 947SMB_STRUCT_DIRENT *sys_readdir(SMB_STRUCT_DIR *dirp); 948void sys_seekdir(SMB_STRUCT_DIR *dirp, long offset); 949long sys_telldir(SMB_STRUCT_DIR *dirp); 950void sys_rewinddir(SMB_STRUCT_DIR *dirp); 951int sys_closedir(SMB_STRUCT_DIR *dirp); 952int sys_mknod(const char *path, mode_t mode, SMB_DEV_T dev); 953int sys_waitpid(pid_t pid,int *status,int options); 954char *sys_getwd(char *s); 955void set_effective_capability(enum smbd_capability capability); 956void drop_effective_capability(enum smbd_capability capability); 957long sys_random(void); 958void sys_srandom(unsigned int seed); 959int groups_max(void); 960int sys_getgroups(int setlen, gid_t *gidset); 961int sys_setgroups(gid_t UNUSED(primary_gid), int setlen, gid_t *gidset); 962void sys_setpwent(void); 963struct passwd *sys_getpwent(void); 964void sys_endpwent(void); 965struct passwd *sys_getpwnam(const char *name); 966struct passwd *sys_getpwuid(uid_t uid); 967struct group *sys_getgrnam(const char *name); 968struct group *sys_getgrgid(gid_t gid); 969int sys_popen(const char *command); 970int sys_pclose(int fd); 971ssize_t sys_getxattr (const char *path, const char *name, void *value, size_t size); 972ssize_t sys_lgetxattr (const char *path, const char *name, void *value, size_t size); 973ssize_t sys_fgetxattr (int filedes, const char *name, void *value, size_t size); 974ssize_t sys_listxattr (const char *path, char *list, size_t size); 975ssize_t sys_llistxattr (const char *path, char *list, size_t size); 976ssize_t sys_flistxattr (int filedes, char *list, size_t size); 977int sys_removexattr (const char *path, const char *name); 978int sys_lremovexattr (const char *path, const char *name); 979int sys_fremovexattr (int filedes, const char *name); 980int sys_setxattr (const char *path, const char *name, const void *value, size_t size, int flags); 981int sys_lsetxattr (const char *path, const char *name, const void *value, size_t size, int flags); 982int sys_fsetxattr (int filedes, const char *name, const void *value, size_t size, int flags); 983uint32 unix_dev_major(SMB_DEV_T dev); 984uint32 unix_dev_minor(SMB_DEV_T dev); 985int sys_aio_read(SMB_STRUCT_AIOCB *aiocb); 986int sys_aio_write(SMB_STRUCT_AIOCB *aiocb); 987ssize_t sys_aio_return(SMB_STRUCT_AIOCB *aiocb); 988int sys_aio_cancel(int fd, SMB_STRUCT_AIOCB *aiocb); 989int sys_aio_error(const SMB_STRUCT_AIOCB *aiocb); 990int sys_aio_fsync(int op, SMB_STRUCT_AIOCB *aiocb); 991int sys_aio_suspend(const SMB_STRUCT_AIOCB * const cblist[], int n, const struct timespec *timeout); 992int sys_aio_read(SMB_STRUCT_AIOCB *aiocb); 993int sys_aio_write(SMB_STRUCT_AIOCB *aiocb); 994ssize_t sys_aio_return(SMB_STRUCT_AIOCB *aiocb); 995int sys_aio_cancel(int fd, SMB_STRUCT_AIOCB *aiocb); 996int sys_aio_error(const SMB_STRUCT_AIOCB *aiocb); 997int sys_aio_fsync(int op, SMB_STRUCT_AIOCB *aiocb); 998int sys_aio_suspend(const SMB_STRUCT_AIOCB * const cblist[], int n, const struct timespec *timeout); 999int sys_getpeereid( int s, uid_t *uid); 1000int sys_getnameinfo(const struct sockaddr *psa, 1001 socklen_t salen, 1002 char *host, 1003 size_t hostlen, 1004 char *service, 1005 size_t servlen, 1006 int flags); 1007int sys_connect(int fd, const struct sockaddr * addr); 1008 1009/* The following definitions come from lib/system_smbd.c */ 1010 1011bool getgroups_unix_user(TALLOC_CTX *mem_ctx, const char *user, 1012 gid_t primary_gid, 1013 gid_t **ret_groups, size_t *p_ngroups); 1014 1015/* The following definitions come from lib/tallocmsg.c */ 1016 1017void register_msg_pool_usage(struct messaging_context *msg_ctx); 1018 1019/* The following definitions come from lib/time.c */ 1020 1021void push_dos_date(uint8_t *buf, int offset, time_t unixdate, int zone_offset); 1022void push_dos_date2(uint8_t *buf,int offset,time_t unixdate, int zone_offset); 1023void push_dos_date3(uint8_t *buf,int offset,time_t unixdate, int zone_offset); 1024time_t pull_dos_date(const uint8_t *date_ptr, int zone_offset); 1025time_t pull_dos_date2(const uint8_t *date_ptr, int zone_offset); 1026time_t pull_dos_date3(const uint8_t *date_ptr, int zone_offset); 1027uint32 convert_time_t_to_uint32(time_t t); 1028time_t convert_uint32_to_time_t(uint32 u); 1029bool nt_time_is_zero(const NTTIME *nt); 1030time_t generalized_to_unix_time(const char *str); 1031int get_server_zone_offset(void); 1032int set_server_zone_offset(time_t t); 1033char *timeval_string(TALLOC_CTX *ctx, const struct timeval *tp, bool hires); 1034char *current_timestring(TALLOC_CTX *ctx, bool hires); 1035void srv_put_dos_date(char *buf,int offset,time_t unixdate); 1036void srv_put_dos_date2(char *buf,int offset, time_t unixdate); 1037void srv_put_dos_date3(char *buf,int offset,time_t unixdate); 1038void round_timespec(enum timestamp_set_resolution res, struct timespec *ts); 1039void put_long_date_timespec(enum timestamp_set_resolution res, char *p, struct timespec ts); 1040void put_long_date(char *p, time_t t); 1041void dos_filetime_timespec(struct timespec *tsp); 1042time_t make_unix_date2(const void *date_ptr, int zone_offset); 1043time_t make_unix_date3(const void *date_ptr, int zone_offset); 1044time_t srv_make_unix_date(const void *date_ptr); 1045time_t srv_make_unix_date2(const void *date_ptr); 1046time_t srv_make_unix_date3(const void *date_ptr); 1047time_t convert_timespec_to_time_t(struct timespec ts); 1048struct timespec convert_time_t_to_timespec(time_t t); 1049struct timespec convert_timeval_to_timespec(const struct timeval tv); 1050struct timeval convert_timespec_to_timeval(const struct timespec ts); 1051struct timespec timespec_current(void); 1052struct timespec timespec_min(const struct timespec *ts1, 1053 const struct timespec *ts2); 1054int timespec_compare(const struct timespec *ts1, const struct timespec *ts2); 1055void round_timespec_to_sec(struct timespec *ts); 1056void round_timespec_to_usec(struct timespec *ts); 1057struct timespec interpret_long_date(const char *p); 1058void cli_put_dos_date(struct cli_state *cli, char *buf, int offset, time_t unixdate); 1059void cli_put_dos_date2(struct cli_state *cli, char *buf, int offset, time_t unixdate); 1060void cli_put_dos_date3(struct cli_state *cli, char *buf, int offset, time_t unixdate); 1061time_t cli_make_unix_date(struct cli_state *cli, const void *date_ptr); 1062time_t cli_make_unix_date2(struct cli_state *cli, const void *date_ptr); 1063time_t cli_make_unix_date3(struct cli_state *cli, const void *date_ptr); 1064bool nt_time_equals(const NTTIME *nt1, const NTTIME *nt2); 1065void TimeInit(void); 1066void get_process_uptime(struct timeval *ret_time); 1067time_t nt_time_to_unix_abs(const NTTIME *nt); 1068time_t uint64s_nt_time_to_unix_abs(const uint64_t *src); 1069void unix_timespec_to_nt_time(NTTIME *nt, struct timespec ts); 1070void unix_to_nt_time_abs(NTTIME *nt, time_t t); 1071bool null_mtime(time_t mtime); 1072const char *time_to_asc(const time_t t); 1073const char *display_time(NTTIME nttime); 1074bool nt_time_is_set(const NTTIME *nt); 1075 1076/* The following definitions come from lib/username.c */ 1077 1078char *get_user_home_dir(TALLOC_CTX *mem_ctx, const char *user); 1079struct passwd *Get_Pwnam_alloc(TALLOC_CTX *mem_ctx, const char *user); 1080 1081/* The following definitions come from lib/util.c */ 1082 1083enum protocol_types get_Protocol(void); 1084void set_Protocol(enum protocol_types p); 1085bool all_zero(const uint8_t *ptr, size_t size); 1086bool set_global_myname(const char *myname); 1087const char *global_myname(void); 1088bool set_global_myworkgroup(const char *myworkgroup); 1089const char *lp_workgroup(void); 1090bool set_global_scope(const char *scope); 1091const char *global_scope(void); 1092void gfree_names(void); 1093void gfree_all( void ); 1094const char *my_netbios_names(int i); 1095bool set_netbios_aliases(const char **str_array); 1096bool init_names(void); 1097struct user_auth_info *user_auth_info_init(TALLOC_CTX *mem_ctx); 1098const char *get_cmdline_auth_info_username(const struct user_auth_info *auth_info); 1099void set_cmdline_auth_info_username(struct user_auth_info *auth_info, 1100 const char *username); 1101const char *get_cmdline_auth_info_domain(const struct user_auth_info *auth_info); 1102void set_cmdline_auth_info_domain(struct user_auth_info *auth_info, 1103 const char *domain); 1104void set_cmdline_auth_info_password(struct user_auth_info *auth_info, 1105 const char *password); 1106const char *get_cmdline_auth_info_password(const struct user_auth_info *auth_info); 1107bool set_cmdline_auth_info_signing_state(struct user_auth_info *auth_info, 1108 const char *arg); 1109int get_cmdline_auth_info_signing_state(const struct user_auth_info *auth_info); 1110void set_cmdline_auth_info_use_ccache(struct user_auth_info *auth_info, 1111 bool b); 1112bool get_cmdline_auth_info_use_ccache(const struct user_auth_info *auth_info); 1113void set_cmdline_auth_info_use_kerberos(struct user_auth_info *auth_info, 1114 bool b); 1115bool get_cmdline_auth_info_use_kerberos(const struct user_auth_info *auth_info); 1116void set_cmdline_auth_info_fallback_after_kerberos(struct user_auth_info *auth_info, 1117 bool b); 1118bool get_cmdline_auth_info_fallback_after_kerberos(const struct user_auth_info *auth_info); 1119void set_cmdline_auth_info_use_krb5_ticket(struct user_auth_info *auth_info); 1120void set_cmdline_auth_info_smb_encrypt(struct user_auth_info *auth_info); 1121void set_cmdline_auth_info_use_machine_account(struct user_auth_info *auth_info); 1122bool get_cmdline_auth_info_got_pass(const struct user_auth_info *auth_info); 1123bool get_cmdline_auth_info_smb_encrypt(const struct user_auth_info *auth_info); 1124bool get_cmdline_auth_info_use_machine_account(const struct user_auth_info *auth_info); 1125struct user_auth_info *get_cmdline_auth_info_copy(TALLOC_CTX *mem_ctx, 1126 const struct user_auth_info *info); 1127bool set_cmdline_auth_info_machine_account_creds(struct user_auth_info *auth_info); 1128void set_cmdline_auth_info_getpass(struct user_auth_info *auth_info); 1129bool file_exist_stat(const char *fname,SMB_STRUCT_STAT *sbuf, 1130 bool fake_dir_create_times); 1131bool socket_exist(const char *fname); 1132uint64_t get_file_size_stat(const SMB_STRUCT_STAT *sbuf); 1133SMB_OFF_T get_file_size(char *file_name); 1134char *attrib_string(uint16 mode); 1135void show_msg(char *buf); 1136void smb_set_enclen(char *buf,int len,uint16 enc_ctx_num); 1137void smb_setlen(char *buf,int len); 1138int set_message_bcc(char *buf,int num_bytes); 1139ssize_t message_push_blob(uint8 **outbuf, DATA_BLOB blob); 1140char *unix_clean_name(TALLOC_CTX *ctx, const char *s); 1141char *clean_name(TALLOC_CTX *ctx, const char *s); 1142ssize_t write_data_at_offset(int fd, const char *buffer, size_t N, SMB_OFF_T pos); 1143int set_blocking(int fd, bool set); 1144void smb_msleep(unsigned int t); 1145NTSTATUS reinit_after_fork(struct messaging_context *msg_ctx, 1146 struct event_context *ev_ctx, 1147 bool parent_longlived); 1148bool yesno(const char *p); 1149void *malloc_(size_t size); 1150void *memalign_array(size_t el_size, size_t align, unsigned int count); 1151void *calloc_array(size_t size, size_t nmemb); 1152void *Realloc(void *p, size_t size, bool free_old_on_error); 1153void add_to_large_array(TALLOC_CTX *mem_ctx, size_t element_size, 1154 void *element, void *_array, uint32 *num_elements, 1155 ssize_t *array_size); 1156char *get_myname(TALLOC_CTX *ctx); 1157char *get_mydnsdomname(TALLOC_CTX *ctx); 1158int interpret_protocol(const char *str,int def); 1159char *automount_lookup(TALLOC_CTX *ctx, const char *user_name); 1160char *automount_lookup(TALLOC_CTX *ctx, const char *user_name); 1161bool process_exists(const struct server_id pid); 1162const char *uidtoname(uid_t uid); 1163char *gidtoname(gid_t gid); 1164uid_t nametouid(const char *name); 1165gid_t nametogid(const char *name); 1166void smb_panic(const char *const why); 1167void log_stack_trace(void); 1168const char *readdirname(SMB_STRUCT_DIR *p); 1169bool is_in_path(const char *name, name_compare_entry *namelist, bool case_sensitive); 1170void set_namearray(name_compare_entry **ppname_array, const char *namelist); 1171void free_namearray(name_compare_entry *name_array); 1172bool fcntl_lock(int fd, int op, SMB_OFF_T offset, SMB_OFF_T count, int type); 1173bool fcntl_getlock(int fd, SMB_OFF_T *poffset, SMB_OFF_T *pcount, int *ptype, pid_t *ppid); 1174bool is_myname(const char *s); 1175bool is_myworkgroup(const char *s); 1176void ra_lanman_string( const char *native_lanman ); 1177const char *get_remote_arch_str(void); 1178void set_remote_arch(enum remote_arch_types type); 1179enum remote_arch_types get_remote_arch(void); 1180const char *tab_depth(int level, int depth); 1181int str_checksum(const char *s); 1182void zero_free(void *p, size_t size); 1183int set_maxfiles(int requested_max); 1184int smb_mkstemp(char *name_template); 1185void *smb_xmalloc_array(size_t size, unsigned int count); 1186char *myhostname(void); 1187char *lock_path(const char *name); 1188char *pid_path(const char *name); 1189char *lib_path(const char *name); 1190char *modules_path(const char *name); 1191char *data_path(const char *name); 1192char *state_path(const char *name); 1193char *cache_path(const char *name); 1194const char *shlib_ext(void); 1195bool parent_dirname(TALLOC_CTX *mem_ctx, const char *dir, char **parent, 1196 const char **name); 1197bool ms_has_wild(const char *s); 1198bool ms_has_wild_w(const smb_ucs2_t *s); 1199bool mask_match(const char *string, const char *pattern, bool is_case_sensitive); 1200bool mask_match_search(const char *string, const char *pattern, bool is_case_sensitive); 1201bool mask_match_list(const char *string, char **list, int listLen, bool is_case_sensitive); 1202bool unix_wild_match(const char *pattern, const char *string); 1203bool name_to_fqdn(fstring fqdn, const char *name); 1204void *talloc_append_blob(TALLOC_CTX *mem_ctx, void *buf, DATA_BLOB blob); 1205uint32 map_share_mode_to_deny_mode(uint32 share_access, uint32 private_options); 1206pid_t procid_to_pid(const struct server_id *proc); 1207void set_my_vnn(uint32 vnn); 1208uint32 get_my_vnn(void); 1209struct server_id pid_to_procid(pid_t pid); 1210struct server_id procid_self(void); 1211struct server_id server_id_self(void); 1212bool procid_equal(const struct server_id *p1, const struct server_id *p2); 1213bool cluster_id_equal(const struct server_id *id1, 1214 const struct server_id *id2); 1215bool procid_is_me(const struct server_id *pid); 1216struct server_id interpret_pid(const char *pid_string); 1217char *procid_str(TALLOC_CTX *mem_ctx, const struct server_id *pid); 1218char *procid_str_static(const struct server_id *pid); 1219bool procid_valid(const struct server_id *pid); 1220bool procid_is_local(const struct server_id *pid); 1221int this_is_smp(void); 1222bool trans_oob(uint32_t bufsize, uint32_t offset, uint32_t length); 1223bool is_offset_safe(const char *buf_base, size_t buf_len, char *ptr, size_t off); 1224char *get_safe_ptr(const char *buf_base, size_t buf_len, char *ptr, size_t off); 1225char *get_safe_str_ptr(const char *buf_base, size_t buf_len, char *ptr, size_t off); 1226int get_safe_SVAL(const char *buf_base, size_t buf_len, char *ptr, size_t off, int failval); 1227int get_safe_IVAL(const char *buf_base, size_t buf_len, char *ptr, size_t off, int failval); 1228void split_domain_user(TALLOC_CTX *mem_ctx, 1229 const char *full_name, 1230 char **domain, 1231 char **user); 1232void *_talloc_zero_zeronull(const void *ctx, size_t size, const char *name); 1233void *_talloc_memdup_zeronull(const void *t, const void *p, size_t size, const char *name); 1234void *_talloc_array_zeronull(const void *ctx, size_t el_size, unsigned count, const char *name); 1235void *_talloc_zero_array_zeronull(const void *ctx, size_t el_size, unsigned count, const char *name); 1236void *talloc_zeronull(const void *context, size_t size, const char *name); 1237bool is_valid_policy_hnd(const struct policy_handle *hnd); 1238bool policy_hnd_equal(const struct policy_handle *hnd1, 1239 const struct policy_handle *hnd2); 1240const char *strip_hostname(const char *s); 1241bool tevent_req_poll_ntstatus(struct tevent_req *req, 1242 struct tevent_context *ev, 1243 NTSTATUS *status); 1244bool is_executable(const char *fname); 1245bool map_open_params_to_ntcreate(const char *smb_base_fname, 1246 int deny_mode, int open_func, 1247 uint32 *paccess_mask, 1248 uint32 *pshare_mode, 1249 uint32 *pcreate_disposition, 1250 uint32 *pcreate_options); 1251 1252/* The following definitions come from lib/util_file.c */ 1253 1254char **file_lines_pload(const char *syscmd, int *numlines); 1255void file_lines_free(char **lines); 1256 1257/* The following definitions come from lib/util_nscd.c */ 1258 1259void smb_nscd_flush_user_cache(void); 1260void smb_nscd_flush_group_cache(void); 1261 1262/* The following definitions come from lib/util_nttoken.c */ 1263 1264NT_USER_TOKEN *dup_nt_token(TALLOC_CTX *mem_ctx, const NT_USER_TOKEN *ptoken); 1265NTSTATUS merge_nt_token(TALLOC_CTX *mem_ctx, 1266 const struct nt_user_token *token_1, 1267 const struct nt_user_token *token_2, 1268 struct nt_user_token **token_out); 1269bool token_sid_in_ace(const NT_USER_TOKEN *token, const SEC_ACE *ace); 1270 1271/* The following definitions come from lib/util_pw.c */ 1272 1273struct passwd *tcopy_passwd(TALLOC_CTX *mem_ctx, const struct passwd *from) ; 1274void flush_pwnam_cache(void); 1275struct passwd *getpwnam_alloc(TALLOC_CTX *mem_ctx, const char *name); 1276struct passwd *getpwuid_alloc(TALLOC_CTX *mem_ctx, uid_t uid) ; 1277 1278/* The following definitions come from lib/util_reg.c */ 1279 1280const char *reg_type_lookup(enum winreg_Type type); 1281bool push_reg_sz(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, const char *s); 1282bool push_reg_multi_sz(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, const char **a); 1283bool pull_reg_sz(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob, const char **s); 1284bool pull_reg_multi_sz(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob, const char ***a); 1285 1286/* The following definitions come from lib/util_reg_api.c */ 1287 1288WERROR registry_pull_value(TALLOC_CTX *mem_ctx, 1289 struct registry_value **pvalue, 1290 enum winreg_Type type, uint8 *data, 1291 uint32 size, uint32 length); 1292WERROR registry_push_value(TALLOC_CTX *mem_ctx, 1293 const struct registry_value *value, 1294 DATA_BLOB *presult); 1295 1296/* The following definitions come from lib/util_seaccess.c */ 1297 1298void se_map_generic(uint32 *access_mask, const struct generic_mapping *mapping); 1299void security_acl_map_generic(struct security_acl *sa, const struct generic_mapping *mapping); 1300void se_map_standard(uint32 *access_mask, struct standard_mapping *mapping); 1301NTSTATUS se_access_check(const SEC_DESC *sd, const NT_USER_TOKEN *token, 1302 uint32 acc_desired, uint32 *acc_granted); 1303NTSTATUS samr_make_sam_obj_sd(TALLOC_CTX *ctx, SEC_DESC **psd, size_t *sd_size); 1304 1305/* The following definitions come from lib/util_sec.c */ 1306 1307void sec_init(void); 1308uid_t sec_initial_uid(void); 1309gid_t sec_initial_gid(void); 1310bool non_root_mode(void); 1311void gain_root_privilege(void); 1312void gain_root_group_privilege(void); 1313void set_effective_uid(uid_t uid); 1314void set_effective_gid(gid_t gid); 1315void save_re_uid(void); 1316void restore_re_uid_fromroot(void); 1317void restore_re_uid(void); 1318void save_re_gid(void); 1319void restore_re_gid(void); 1320int set_re_uid(void); 1321void become_user_permanently(uid_t uid, gid_t gid); 1322bool is_setuid_root(void) ; 1323 1324/* The following definitions come from lib/util_sid.c */ 1325 1326const char *sid_type_lookup(uint32 sid_type) ; 1327NT_USER_TOKEN *get_system_token(void) ; 1328const char *get_global_sam_name(void) ; 1329char *sid_to_fstring(fstring sidstr_out, const DOM_SID *sid); 1330char *sid_string_talloc(TALLOC_CTX *mem_ctx, const DOM_SID *sid); 1331char *sid_string_dbg(const DOM_SID *sid); 1332char *sid_string_tos(const DOM_SID *sid); 1333bool string_to_sid(DOM_SID *sidout, const char *sidstr); 1334DOM_SID *string_sid_talloc(TALLOC_CTX *mem_ctx, const char *sidstr); 1335bool sid_append_rid(DOM_SID *sid, uint32 rid); 1336bool sid_compose(DOM_SID *dst, const DOM_SID *domain_sid, uint32 rid); 1337bool sid_split_rid(DOM_SID *sid, uint32 *rid); 1338bool sid_peek_rid(const DOM_SID *sid, uint32 *rid); 1339bool sid_peek_check_rid(const DOM_SID *exp_dom_sid, const DOM_SID *sid, uint32 *rid); 1340void sid_copy(DOM_SID *dst, const DOM_SID *src); 1341bool sid_linearize(char *outbuf, size_t len, const DOM_SID *sid); 1342bool sid_parse(const char *inbuf, size_t len, DOM_SID *sid); 1343int sid_compare(const DOM_SID *sid1, const DOM_SID *sid2); 1344int sid_compare_domain(const DOM_SID *sid1, const DOM_SID *sid2); 1345bool sid_equal(const DOM_SID *sid1, const DOM_SID *sid2); 1346bool non_mappable_sid(DOM_SID *sid); 1347char *sid_binstring(TALLOC_CTX *mem_ctx, const DOM_SID *sid); 1348char *sid_binstring_hex(const DOM_SID *sid); 1349DOM_SID *sid_dup_talloc(TALLOC_CTX *ctx, const DOM_SID *src); 1350NTSTATUS add_sid_to_array(TALLOC_CTX *mem_ctx, const DOM_SID *sid, 1351 DOM_SID **sids, size_t *num); 1352NTSTATUS add_sid_to_array_unique(TALLOC_CTX *mem_ctx, const DOM_SID *sid, 1353 DOM_SID **sids, size_t *num_sids); 1354void del_sid_from_array(const DOM_SID *sid, DOM_SID **sids, size_t *num); 1355bool add_rid_to_array_unique(TALLOC_CTX *mem_ctx, 1356 uint32 rid, uint32 **pp_rids, size_t *p_num); 1357bool is_null_sid(const DOM_SID *sid); 1358bool is_sid_in_token(const NT_USER_TOKEN *token, const DOM_SID *sid); 1359NTSTATUS sid_array_from_info3(TALLOC_CTX *mem_ctx, 1360 const struct netr_SamInfo3 *info3, 1361 DOM_SID **user_sids, 1362 size_t *num_user_sids, 1363 bool include_user_group_rid, 1364 bool skip_ressource_groups); 1365 1366/* The following definitions come from lib/util_sock.c */ 1367 1368bool is_broadcast_addr(const struct sockaddr *pss); 1369bool is_loopback_ip_v4(struct in_addr ip); 1370bool is_loopback_addr(const struct sockaddr *pss); 1371bool is_zero_addr(const struct sockaddr *pss); 1372void zero_ip_v4(struct in_addr *ip); 1373void in_addr_to_sockaddr_storage(struct sockaddr_storage *ss, 1374 struct in_addr ip); 1375bool same_net(const struct sockaddr *ip1, 1376 const struct sockaddr *ip2, 1377 const struct sockaddr *mask); 1378bool sockaddr_equal(const struct sockaddr *ip1, 1379 const struct sockaddr *ip2); 1380bool is_address_any(const struct sockaddr *psa); 1381uint16_t get_sockaddr_port(const struct sockaddr_storage *pss); 1382char *print_sockaddr(char *dest, 1383 size_t destlen, 1384 const struct sockaddr_storage *psa); 1385char *print_canonical_sockaddr(TALLOC_CTX *ctx, 1386 const struct sockaddr_storage *pss); 1387void set_sockaddr_port(struct sockaddr *psa, uint16_t port); 1388const char *client_name(int fd); 1389int get_socket_port(int fd); 1390const char *client_addr(int fd, char *addr, size_t addrlen); 1391const char *client_socket_addr(int fd, char *addr, size_t addr_len); 1392int client_socket_port(int fd); 1393void set_smb_read_error(enum smb_read_errors *pre, 1394 enum smb_read_errors newerr); 1395void cond_set_smb_read_error(enum smb_read_errors *pre, 1396 enum smb_read_errors newerr); 1397bool is_a_socket(int fd); 1398void set_socket_options(int fd, const char *options); 1399ssize_t read_udp_v4_socket(int fd, 1400 char *buf, 1401 size_t len, 1402 struct sockaddr_storage *psa); 1403NTSTATUS read_fd_with_timeout(int fd, char *buf, 1404 size_t mincnt, size_t maxcnt, 1405 unsigned int time_out, 1406 size_t *size_ret); 1407NTSTATUS read_data(int fd, char *buffer, size_t N); 1408ssize_t write_data(int fd, const char *buffer, size_t N); 1409ssize_t write_data_iov(int fd, const struct iovec *orig_iov, int iovcnt); 1410bool send_keepalive(int client); 1411NTSTATUS read_smb_length_return_keepalive(int fd, char *inbuf, 1412 unsigned int timeout, 1413 size_t *len); 1414NTSTATUS read_smb_length(int fd, char *inbuf, unsigned int timeout, 1415 size_t *len); 1416NTSTATUS receive_smb_raw(int fd, 1417 char *buffer, 1418 size_t buflen, 1419 unsigned int timeout, 1420 size_t maxlen, 1421 size_t *p_len); 1422int open_socket_in(int type, 1423 uint16_t port, 1424 int dlevel, 1425 const struct sockaddr_storage *psock, 1426 bool rebind); 1427NTSTATUS open_socket_out(const struct sockaddr_storage *pss, uint16_t port, 1428 int timeout, int *pfd); 1429struct tevent_req *open_socket_out_send(TALLOC_CTX *mem_ctx, 1430 struct event_context *ev, 1431 const struct sockaddr_storage *pss, 1432 uint16_t port, 1433 int timeout); 1434NTSTATUS open_socket_out_recv(struct tevent_req *req, int *pfd); 1435struct tevent_req *open_socket_out_defer_send(TALLOC_CTX *mem_ctx, 1436 struct event_context *ev, 1437 struct timeval wait_time, 1438 const struct sockaddr_storage *pss, 1439 uint16_t port, 1440 int timeout); 1441NTSTATUS open_socket_out_defer_recv(struct tevent_req *req, int *pfd); 1442bool open_any_socket_out(struct sockaddr_storage *addrs, int num_addrs, 1443 int timeout, int *fd_index, int *fd); 1444int open_udp_socket(const char *host, int port); 1445const char *get_peer_name(int fd, bool force_lookup); 1446const char *get_peer_addr(int fd, char *addr, size_t addr_len); 1447int create_pipe_sock(const char *socket_dir, 1448 const char *socket_name, 1449 mode_t dir_perms); 1450const char *get_mydnsfullname(void); 1451bool is_myname_or_ipaddr(const char *s); 1452struct tevent_req *getaddrinfo_send(TALLOC_CTX *mem_ctx, 1453 struct tevent_context *ev, 1454 struct fncall_context *ctx, 1455 const char *node, 1456 const char *service, 1457 const struct addrinfo *hints); 1458int getaddrinfo_recv(struct tevent_req *req, struct addrinfo **res); 1459struct tevent_req *tstream_read_packet_send(TALLOC_CTX *mem_ctx, 1460 struct tevent_context *ev, 1461 struct tstream_context *stream, 1462 size_t initial, 1463 ssize_t (*more)(uint8_t *buf, 1464 size_t buflen, 1465 void *private_data), 1466 void *private_data); 1467ssize_t tstream_read_packet_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, 1468 uint8_t **pbuf, int *perrno); 1469 1470/* The following definitions come from lib/util_str.c */ 1471 1472bool next_token(const char **ptr, char *buff, const char *sep, size_t bufsize); 1473bool next_token_talloc(TALLOC_CTX *ctx, 1474 const char **ptr, 1475 char **pp_buff, 1476 const char *sep); 1477bool next_token_no_ltrim_talloc(TALLOC_CTX *ctx, 1478 const char **ptr, 1479 char **pp_buff, 1480 const char *sep); 1481int StrCaseCmp(const char *s, const char *t); 1482int StrnCaseCmp(const char *s, const char *t, size_t len); 1483bool strnequal(const char *s1,const char *s2,size_t n); 1484bool strcsequal(const char *s1,const char *s2); 1485void strnorm(char *s, int case_default); 1486bool strisnormal(const char *s, int case_default); 1487char *push_skip_string(char *buf); 1488char *skip_string(const char *base, size_t len, char *buf); 1489size_t str_charnum(const char *s); 1490size_t str_ascii_charnum(const char *s); 1491bool trim_char(char *s,char cfront,char cback); 1492bool strhasupper(const char *s); 1493bool strhaslower(const char *s); 1494char *safe_strcpy_fn(const char *fn, 1495 int line, 1496 char *dest, 1497 const char *src, 1498 size_t maxlength); 1499char *safe_strcat_fn(const char *fn, 1500 int line, 1501 char *dest, 1502 const char *src, 1503 size_t maxlength); 1504char *alpha_strcpy_fn(const char *fn, 1505 int line, 1506 char *dest, 1507 const char *src, 1508 const char *other_safe_chars, 1509 size_t maxlength); 1510char *StrnCpy_fn(const char *fn, int line,char *dest,const char *src,size_t n); 1511bool in_list(const char *s, const char *list, bool casesensitive); 1512void string_free(char **s); 1513bool string_set(char **dest,const char *src); 1514void string_sub2(char *s,const char *pattern, const char *insert, size_t len, 1515 bool remove_unsafe_characters, bool replace_once, 1516 bool allow_trailing_dollar); 1517void string_sub_once(char *s, const char *pattern, 1518 const char *insert, size_t len); 1519void string_sub(char *s,const char *pattern, const char *insert, size_t len); 1520void fstring_sub(char *s,const char *pattern,const char *insert); 1521char *realloc_string_sub2(char *string, 1522 const char *pattern, 1523 const char *insert, 1524 bool remove_unsafe_characters, 1525 bool allow_trailing_dollar); 1526char *realloc_string_sub(char *string, 1527 const char *pattern, 1528 const char *insert); 1529char *talloc_string_sub2(TALLOC_CTX *mem_ctx, const char *src, 1530 const char *pattern, 1531 const char *insert, 1532 bool remove_unsafe_characters, 1533 bool replace_once, 1534 bool allow_trailing_dollar); 1535char *talloc_string_sub(TALLOC_CTX *mem_ctx, 1536 const char *src, 1537 const char *pattern, 1538 const char *insert); 1539void all_string_sub(char *s,const char *pattern,const char *insert, size_t len); 1540char *talloc_all_string_sub(TALLOC_CTX *ctx, 1541 const char *src, 1542 const char *pattern, 1543 const char *insert); 1544char *octal_string(int i); 1545char *string_truncate(char *s, unsigned int length); 1546char *strchr_m(const char *src, char c); 1547char *strrchr_m(const char *s, char c); 1548char *strnrchr_m(const char *s, char c, unsigned int n); 1549char *strstr_m(const char *src, const char *findstr); 1550void strlower_m(char *s); 1551void strupper_m(char *s); 1552size_t strlen_m_ext(const char *s, const charset_t dst_charset); 1553size_t strlen_m_ext_term(const char *s, const charset_t dst_charset); 1554size_t strlen_m(const char *s); 1555size_t strlen_m_term(const char *s); 1556size_t strlen_m_term_null(const char *s); 1557char *binary_string_rfc2254(TALLOC_CTX *mem_ctx, const uint8_t *buf, int len); 1558char *binary_string(char *buf, int len); 1559int fstr_sprintf(fstring s, const char *fmt, ...); 1560bool str_list_sub_basic( char **list, const char *smb_name, 1561 const char *domain_name ); 1562bool str_list_substitute(char **list, const char *pattern, const char *insert); 1563bool str_list_check(const char **list, const char *s); 1564bool str_list_check_ci(const char **list, const char *s); 1565 1566char *ipstr_list_make(char **ipstr_list, 1567 const struct ip_service *ip_list, 1568 int ip_count); 1569int ipstr_list_parse(const char *ipstr_list, struct ip_service **ip_list); 1570void ipstr_list_free(char* ipstr_list); 1571void rfc1738_unescape(char *buf); 1572DATA_BLOB base64_decode_data_blob(const char *s); 1573void base64_decode_inplace(char *s); 1574char *base64_encode_data_blob(TALLOC_CTX *mem_ctx, DATA_BLOB data); 1575uint64_t STR_TO_SMB_BIG_UINT(const char *nptr, const char **entptr); 1576SMB_OFF_T conv_str_size(const char * str); 1577void string_append(char **left, const char *right); 1578bool add_string_to_array(TALLOC_CTX *mem_ctx, 1579 const char *str, const char ***strings, 1580 int *num); 1581void sprintf_append(TALLOC_CTX *mem_ctx, char **string, ssize_t *len, 1582 size_t *bufsize, const char *fmt, ...); 1583int asprintf_strupper_m(char **strp, const char *fmt, ...); 1584char *talloc_asprintf_strupper_m(TALLOC_CTX *t, const char *fmt, ...); 1585char *talloc_asprintf_strlower_m(TALLOC_CTX *t, const char *fmt, ...); 1586char *sstring_sub(const char *src, char front, char back); 1587bool validate_net_name( const char *name, 1588 const char *invalid_chars, 1589 int max_len); 1590char *escape_shell_string(const char *src); 1591char **str_list_make_v3(TALLOC_CTX *mem_ctx, const char *string, const char *sep); 1592 1593/* The following definitions come from lib/util_unistr.c */ 1594 1595void gfree_case_tables(void); 1596void load_case_tables(void); 1597void init_valid_table(void); 1598size_t dos_PutUniCode(char *dst,const char *src, size_t len, bool null_terminate); 1599char *skip_unibuf(char *src, size_t len); 1600int rpcstr_push(void *dest, const char *src, size_t dest_len, int flags); 1601int rpcstr_push_talloc(TALLOC_CTX *ctx, smb_ucs2_t **dest, const char *src); 1602smb_ucs2_t toupper_w(smb_ucs2_t val); 1603smb_ucs2_t tolower_w( smb_ucs2_t val ); 1604bool islower_w(smb_ucs2_t c); 1605bool isupper_w(smb_ucs2_t c); 1606bool isvalid83_w(smb_ucs2_t c); 1607size_t strlen_w(const smb_ucs2_t *src); 1608size_t strnlen_w(const smb_ucs2_t *src, size_t max); 1609smb_ucs2_t *strchr_w(const smb_ucs2_t *s, smb_ucs2_t c); 1610smb_ucs2_t *strchr_wa(const smb_ucs2_t *s, char c); 1611smb_ucs2_t *strrchr_w(const smb_ucs2_t *s, smb_ucs2_t c); 1612smb_ucs2_t *strnrchr_w(const smb_ucs2_t *s, smb_ucs2_t c, unsigned int n); 1613smb_ucs2_t *strstr_w(const smb_ucs2_t *s, const smb_ucs2_t *ins); 1614bool strlower_w(smb_ucs2_t *s); 1615bool strupper_w(smb_ucs2_t *s); 1616void strnorm_w(smb_ucs2_t *s, int case_default); 1617int strcmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b); 1618int strncmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b, size_t len); 1619int strcasecmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b); 1620int strncasecmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b, size_t len); 1621bool strequal_w(const smb_ucs2_t *s1, const smb_ucs2_t *s2); 1622bool strnequal_w(const smb_ucs2_t *s1,const smb_ucs2_t *s2,size_t n); 1623smb_ucs2_t *strdup_w(const smb_ucs2_t *src); 1624smb_ucs2_t *strndup_w(const smb_ucs2_t *src, size_t len); 1625smb_ucs2_t *strncpy_w(smb_ucs2_t *dest, const smb_ucs2_t *src, const size_t max); 1626smb_ucs2_t *strncat_w(smb_ucs2_t *dest, const smb_ucs2_t *src, const size_t max); 1627smb_ucs2_t *strcat_w(smb_ucs2_t *dest, const smb_ucs2_t *src); 1628void string_replace_w(smb_ucs2_t *s, smb_ucs2_t oldc, smb_ucs2_t newc); 1629bool trim_string_w(smb_ucs2_t *s, const smb_ucs2_t *front, 1630 const smb_ucs2_t *back); 1631int strcmp_wa(const smb_ucs2_t *a, const char *b); 1632int strncmp_wa(const smb_ucs2_t *a, const char *b, size_t len); 1633smb_ucs2_t *strpbrk_wa(const smb_ucs2_t *s, const char *p); 1634smb_ucs2_t *strstr_wa(const smb_ucs2_t *s, const char *ins); 1635int toupper_ascii(int c); 1636int tolower_ascii(int c); 1637int isupper_ascii(int c); 1638int islower_ascii(int c); 1639 1640/* The following definitions come from lib/util_uuid.c */ 1641 1642void smb_uuid_pack(const struct GUID uu, UUID_FLAT *ptr); 1643void smb_uuid_unpack(const UUID_FLAT in, struct GUID *uu); 1644char *guid_binstring(TALLOC_CTX *mem_ctx, const struct GUID *guid); 1645 1646/* The following definitions come from lib/version.c */ 1647 1648const char *samba_version_string(void); 1649 1650/* The following definitions come from lib/winbind_util.c */ 1651 1652bool winbind_lookup_name(const char *dom_name, const char *name, DOM_SID *sid, 1653 enum lsa_SidType *name_type); 1654bool winbind_lookup_sid(TALLOC_CTX *mem_ctx, const DOM_SID *sid, 1655 const char **domain, const char **name, 1656 enum lsa_SidType *name_type); 1657bool winbind_ping(void); 1658bool winbind_sid_to_uid(uid_t *puid, const DOM_SID *sid); 1659bool winbind_uid_to_sid(DOM_SID *sid, uid_t uid); 1660bool winbind_sid_to_gid(gid_t *pgid, const DOM_SID *sid); 1661bool winbind_gid_to_sid(DOM_SID *sid, gid_t gid); 1662struct passwd * winbind_getpwnam(const char * sname); 1663struct passwd * winbind_getpwsid(const DOM_SID *sid); 1664wbcErr wb_is_trusted_domain(const char *domain); 1665bool winbind_lookup_rids(TALLOC_CTX *mem_ctx, 1666 const DOM_SID *domain_sid, 1667 int num_rids, uint32 *rids, 1668 const char **domain_name, 1669 const char ***names, enum lsa_SidType **types); 1670bool winbind_allocate_uid(uid_t *uid); 1671bool winbind_allocate_gid(gid_t *gid); 1672bool winbind_get_groups(TALLOC_CTX *mem_ctx, 1673 const char *account, 1674 uint32_t *num_groups, 1675 gid_t ** _groups); 1676bool winbind_get_sid_aliases(TALLOC_CTX *mem_ctx, 1677 const DOM_SID *dom_sid, 1678 const DOM_SID *members, 1679 size_t num_members, 1680 uint32_t **pp_alias_rids, 1681 size_t *p_num_alias_rids); 1682 1683 1684/* The following definitions come from lib/wins_srv.c */ 1685 1686bool wins_srv_is_dead(struct in_addr wins_ip, struct in_addr src_ip); 1687void wins_srv_alive(struct in_addr wins_ip, struct in_addr src_ip); 1688void wins_srv_died(struct in_addr wins_ip, struct in_addr src_ip); 1689unsigned wins_srv_count(void); 1690char **wins_srv_tags(void); 1691void wins_srv_tags_free(char **list); 1692struct in_addr wins_srv_ip_tag(const char *tag, struct in_addr src_ip); 1693unsigned wins_srv_count_tag(const char *tag); 1694 1695/* The following definitions come from libads/ads_status.c */ 1696 1697ADS_STATUS ads_build_error(enum ads_error_type etype, 1698 int rc, int minor_status); 1699ADS_STATUS ads_build_nt_error(enum ads_error_type etype, 1700 NTSTATUS nt_status); 1701NTSTATUS ads_ntstatus(ADS_STATUS status); 1702const char *ads_errstr(ADS_STATUS status); 1703NTSTATUS gss_err_to_ntstatus(uint32 maj, uint32 min); 1704 1705/* The following definitions come from libads/ads_struct.c */ 1706 1707char *ads_build_path(const char *realm, const char *sep, const char *field, int reverse); 1708char *ads_build_dn(const char *realm); 1709char *ads_build_domain(const char *dn); 1710ADS_STRUCT *ads_init(const char *realm, 1711 const char *workgroup, 1712 const char *ldap_server); 1713void ads_destroy(ADS_STRUCT **ads); 1714 1715const char *ads_get_ldap_server_name(ADS_STRUCT *ads); 1716 1717/* The following definitions come from libads/authdata.c */ 1718 1719struct PAC_LOGON_INFO *get_logon_info_from_pac(struct PAC_DATA *pac_data); 1720NTSTATUS kerberos_return_pac(TALLOC_CTX *mem_ctx, 1721 const char *name, 1722 const char *pass, 1723 time_t time_offset, 1724 time_t *expire_time, 1725 time_t *renew_till_time, 1726 const char *cache_name, 1727 bool request_pac, 1728 bool add_netbios_addr, 1729 time_t renewable_time, 1730 const char *impersonate_princ_s, 1731 struct PAC_DATA **pac_ret); 1732NTSTATUS kerberos_return_info3_from_pac(TALLOC_CTX *mem_ctx, 1733 const char *name, 1734 const char *pass, 1735 time_t time_offset, 1736 time_t *expire_time, 1737 time_t *renew_till_time, 1738 const char *cache_name, 1739 bool request_pac, 1740 bool add_netbios_addr, 1741 time_t renewable_time, 1742 const char *impersonate_princ_s, 1743 struct netr_SamInfo3 **info3); 1744 1745/* The following definitions come from libads/cldap.c */ 1746bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx, 1747 const char *server, 1748 const char *realm, 1749 uint32_t nt_version, 1750 struct netlogon_samlogon_response **reply); 1751bool ads_cldap_netlogon_5(TALLOC_CTX *mem_ctx, 1752 const char *server, 1753 const char *realm, 1754 struct NETLOGON_SAM_LOGON_RESPONSE_EX *reply5); 1755 1756/* The following definitions come from libads/disp_sec.c */ 1757 1758void ads_disp_sd(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, SEC_DESC *sd); 1759 1760/* The following definitions come from libads/dns.c */ 1761 1762NTSTATUS ads_dns_lookup_ns(TALLOC_CTX *ctx, 1763 const char *dnsdomain, 1764 struct dns_rr_ns **nslist, 1765 int *numns); 1766bool sitename_store(const char *realm, const char *sitename); 1767char *sitename_fetch(const char *realm); 1768bool stored_sitename_changed(const char *realm, const char *sitename); 1769NTSTATUS ads_dns_query_dcs(TALLOC_CTX *ctx, 1770 const char *realm, 1771 const char *sitename, 1772 struct dns_rr_srv **dclist, 1773 int *numdcs ); 1774NTSTATUS ads_dns_query_gcs(TALLOC_CTX *ctx, 1775 const char *realm, 1776 const char *sitename, 1777 struct dns_rr_srv **dclist, 1778 int *numdcs ); 1779NTSTATUS ads_dns_query_kdcs(TALLOC_CTX *ctx, 1780 const char *dns_forest_name, 1781 const char *sitename, 1782 struct dns_rr_srv **dclist, 1783 int *numdcs ); 1784NTSTATUS ads_dns_query_pdc(TALLOC_CTX *ctx, 1785 const char *dns_domain_name, 1786 struct dns_rr_srv **dclist, 1787 int *numdcs ); 1788NTSTATUS ads_dns_query_dcs_guid(TALLOC_CTX *ctx, 1789 const char *dns_forest_name, 1790 const struct GUID *domain_guid, 1791 struct dns_rr_srv **dclist, 1792 int *numdcs ); 1793 1794/* The following definitions come from libads/kerberos.c */ 1795 1796int kerberos_kinit_password_ext(const char *principal, 1797 const char *password, 1798 int time_offset, 1799 time_t *expire_time, 1800 time_t *renew_till_time, 1801 const char *cache_name, 1802 bool request_pac, 1803 bool add_netbios_addr, 1804 time_t renewable_time, 1805 NTSTATUS *ntstatus); 1806int ads_kinit_password(ADS_STRUCT *ads); 1807int ads_kdestroy(const char *cc_name); 1808char* kerberos_standard_des_salt( void ); 1809bool kerberos_secrets_store_des_salt( const char* salt ); 1810char* kerberos_secrets_fetch_des_salt( void ); 1811char *kerberos_get_default_realm_from_ccache( void ); 1812char *kerberos_get_realm_from_hostname(const char *hostname); 1813 1814bool kerberos_secrets_store_salting_principal(const char *service, 1815 int enctype, 1816 const char *principal); 1817int kerberos_kinit_password(const char *principal, 1818 const char *password, 1819 int time_offset, 1820 const char *cache_name); 1821bool create_local_private_krb5_conf_for_domain(const char *realm, 1822 const char *domain, 1823 const char *sitename, 1824 struct sockaddr_storage *pss, 1825 const char *kdc_name); 1826 1827/* The following definitions come from libads/kerberos_keytab.c */ 1828 1829int ads_keytab_add_entry(ADS_STRUCT *ads, const char *srvPrinc); 1830int ads_keytab_flush(ADS_STRUCT *ads); 1831int ads_keytab_create_default(ADS_STRUCT *ads); 1832int ads_keytab_list(const char *keytab_name); 1833 1834/* The following definitions come from libads/kerberos_verify.c */ 1835 1836NTSTATUS ads_verify_ticket(TALLOC_CTX *mem_ctx, 1837 const char *realm, 1838 time_t time_offset, 1839 const DATA_BLOB *ticket, 1840 char **principal, 1841 struct PAC_DATA **pac_data, 1842 DATA_BLOB *ap_rep, 1843 DATA_BLOB *session_key, 1844 bool use_replay_cache); 1845 1846/* The following definitions come from libads/krb5_errs.c */ 1847 1848 1849/* The following definitions come from libads/krb5_setpw.c */ 1850 1851ADS_STATUS ads_krb5_set_password(const char *kdc_host, const char *princ, 1852 const char *newpw, int time_offset); 1853ADS_STATUS kerberos_set_password(const char *kpasswd_server, 1854 const char *auth_principal, const char *auth_password, 1855 const char *target_principal, const char *new_password, 1856 int time_offset); 1857ADS_STATUS ads_set_machine_password(ADS_STRUCT *ads, 1858 const char *machine_account, 1859 const char *password); 1860 1861/* The following definitions come from libads/ldap.c */ 1862 1863bool ads_sitename_match(ADS_STRUCT *ads); 1864bool ads_closest_dc(ADS_STRUCT *ads); 1865ADS_STATUS ads_connect(ADS_STRUCT *ads); 1866ADS_STATUS ads_connect_user_creds(ADS_STRUCT *ads); 1867ADS_STATUS ads_connect_gc(ADS_STRUCT *ads); 1868void ads_disconnect(ADS_STRUCT *ads); 1869ADS_STATUS ads_do_search_all_fn(ADS_STRUCT *ads, const char *bind_path, 1870 int scope, const char *expr, const char **attrs, 1871 bool (*fn)(ADS_STRUCT *, char *, void **, void *), 1872 void *data_area); 1873char *ads_parent_dn(const char *dn); 1874ADS_MODLIST ads_init_mods(TALLOC_CTX *ctx); 1875ADS_STATUS ads_mod_str(TALLOC_CTX *ctx, ADS_MODLIST *mods, 1876 const char *name, const char *val); 1877ADS_STATUS ads_mod_strlist(TALLOC_CTX *ctx, ADS_MODLIST *mods, 1878 const char *name, const char **vals); 1879ADS_STATUS ads_gen_mod(ADS_STRUCT *ads, const char *mod_dn, ADS_MODLIST mods); 1880ADS_STATUS ads_gen_add(ADS_STRUCT *ads, const char *new_dn, ADS_MODLIST mods); 1881ADS_STATUS ads_del_dn(ADS_STRUCT *ads, char *del_dn); 1882char *ads_ou_string(ADS_STRUCT *ads, const char *org_unit); 1883char *ads_default_ou_string(ADS_STRUCT *ads, const char *wknguid); 1884ADS_STATUS ads_add_strlist(TALLOC_CTX *ctx, ADS_MODLIST *mods, 1885 const char *name, const char **vals); 1886uint32 ads_get_kvno(ADS_STRUCT *ads, const char *account_name); 1887uint32_t ads_get_machine_kvno(ADS_STRUCT *ads, const char *machine_name); 1888ADS_STATUS ads_clear_service_principal_names(ADS_STRUCT *ads, const char *machine_name); 1889ADS_STATUS ads_add_service_principal_name(ADS_STRUCT *ads, const char *machine_name, 1890 const char *my_fqdn, const char *spn); 1891ADS_STATUS ads_create_machine_acct(ADS_STRUCT *ads, const char *machine_name, 1892 const char *org_unit); 1893ADS_STATUS ads_move_machine_acct(ADS_STRUCT *ads, const char *machine_name, 1894 const char *org_unit, bool *moved); 1895int ads_count_replies(ADS_STRUCT *ads, void *res); 1896ADS_STATUS ads_USN(ADS_STRUCT *ads, uint32 *usn); 1897ADS_STATUS ads_current_time(ADS_STRUCT *ads); 1898ADS_STATUS ads_domain_func_level(ADS_STRUCT *ads, uint32 *val); 1899ADS_STATUS ads_domain_sid(ADS_STRUCT *ads, DOM_SID *sid); 1900ADS_STATUS ads_site_dn(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, const char **site_name); 1901ADS_STATUS ads_site_dn_for_machine(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, const char *computer_name, const char **site_dn); 1902ADS_STATUS ads_upn_suffixes(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, char ***suffixes, size_t *num_suffixes); 1903ADS_STATUS ads_get_joinable_ous(ADS_STRUCT *ads, 1904 TALLOC_CTX *mem_ctx, 1905 char ***ous, 1906 size_t *num_ous); 1907ADS_STATUS ads_get_sid_from_extended_dn(TALLOC_CTX *mem_ctx, 1908 const char *extended_dn, 1909 enum ads_extended_dn_flags flags, 1910 DOM_SID *sid); 1911char* ads_get_dnshostname( ADS_STRUCT *ads, TALLOC_CTX *ctx, const char *machine_name ); 1912char* ads_get_upn( ADS_STRUCT *ads, TALLOC_CTX *ctx, const char *machine_name ); 1913char* ads_get_samaccountname( ADS_STRUCT *ads, TALLOC_CTX *ctx, const char *machine_name ); 1914ADS_STATUS ads_join_realm(ADS_STRUCT *ads, const char *machine_name, 1915 uint32 account_type, const char *org_unit); 1916ADS_STATUS ads_leave_realm(ADS_STRUCT *ads, const char *hostname); 1917ADS_STATUS ads_find_samaccount(ADS_STRUCT *ads, 1918 TALLOC_CTX *mem_ctx, 1919 const char *samaccountname, 1920 uint32 *uac_ret, 1921 const char **dn_ret); 1922ADS_STATUS ads_config_path(ADS_STRUCT *ads, 1923 TALLOC_CTX *mem_ctx, 1924 char **config_path); 1925const char *ads_get_extended_right_name_by_guid(ADS_STRUCT *ads, 1926 const char *config_path, 1927 TALLOC_CTX *mem_ctx, 1928 const struct GUID *rights_guid); 1929ADS_STATUS ads_check_ou_dn(TALLOC_CTX *mem_ctx, 1930 ADS_STRUCT *ads, 1931 const char **account_ou); 1932 1933/* The following definitions come from libads/ldap_printer.c */ 1934 1935ADS_STATUS ads_mod_printer_entry(ADS_STRUCT *ads, char *prt_dn, 1936 TALLOC_CTX *ctx, const ADS_MODLIST *mods); 1937ADS_STATUS ads_add_printer_entry(ADS_STRUCT *ads, char *prt_dn, 1938 TALLOC_CTX *ctx, ADS_MODLIST *mods); 1939WERROR get_remote_printer_publishing_data(struct rpc_pipe_client *cli, 1940 TALLOC_CTX *mem_ctx, 1941 ADS_MODLIST *mods, 1942 const char *printer); 1943bool get_local_printer_publishing_data(TALLOC_CTX *mem_ctx, 1944 ADS_MODLIST *mods, 1945 NT_PRINTER_DATA *data); 1946 1947/* The following definitions come from libads/ldap_schema.c */ 1948 1949ADS_STATUS ads_get_attrnames_by_oids(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, 1950 const char *schema_path, 1951 const char **OIDs, size_t num_OIDs, 1952 char ***OIDs_out, char ***names, size_t *count); 1953const char *ads_get_attrname_by_guid(ADS_STRUCT *ads, 1954 const char *schema_path, 1955 TALLOC_CTX *mem_ctx, 1956 const struct GUID *schema_guid); 1957const char *ads_get_attrname_by_oid(ADS_STRUCT *ads, const char *schema_path, TALLOC_CTX *mem_ctx, const char * OID); 1958ADS_STATUS ads_schema_path(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, char **schema_path); 1959ADS_STATUS ads_check_posix_schema_mapping(TALLOC_CTX *mem_ctx, 1960 ADS_STRUCT *ads, 1961 enum wb_posix_mapping map_type, 1962 struct posix_schema **s ) ; 1963 1964/* The following definitions come from libads/ldap_user.c */ 1965 1966ADS_STATUS ads_add_user_acct(ADS_STRUCT *ads, const char *user, 1967 const char *container, const char *fullname); 1968ADS_STATUS ads_add_group_acct(ADS_STRUCT *ads, const char *group, 1969 const char *container, const char *comment); 1970 1971/* The following definitions come from libads/ldap_utils.c */ 1972 1973ADS_STATUS ads_ranged_search(ADS_STRUCT *ads, 1974 TALLOC_CTX *mem_ctx, 1975 int scope, 1976 const char *base, 1977 const char *filter, 1978 void *args, 1979 const char *range_attr, 1980 char ***strings, 1981 size_t *num_strings); 1982ADS_STATUS ads_ranged_search_internal(ADS_STRUCT *ads, 1983 TALLOC_CTX *mem_ctx, 1984 int scope, 1985 const char *base, 1986 const char *filter, 1987 const char **attrs, 1988 void *args, 1989 const char *range_attr, 1990 char ***strings, 1991 size_t *num_strings, 1992 uint32 *first_usn, 1993 int *num_retries, 1994 bool *more_values); 1995 1996/* The following definitions come from libads/ndr.c */ 1997 1998void ndr_print_ads_auth_flags(struct ndr_print *ndr, const char *name, uint32_t r); 1999void ndr_print_ads_struct(struct ndr_print *ndr, const char *name, const struct ads_struct *r); 2000 2001/* The following definitions come from libads/sasl.c */ 2002 2003ADS_STATUS ads_sasl_bind(ADS_STRUCT *ads); 2004 2005/* The following definitions come from libads/sasl_wrapping.c */ 2006 2007ADS_STATUS ads_setup_sasl_wrapping(ADS_STRUCT *ads, 2008 const struct ads_saslwrap_ops *ops, 2009 void *private_data); 2010ADS_STATUS ads_setup_sasl_wrapping(ADS_STRUCT *ads, 2011 const struct ads_saslwrap_ops *ops, 2012 void *private_data); 2013 2014/* The following definitions come from libads/util.c */ 2015 2016ADS_STATUS ads_change_trust_account_password(ADS_STRUCT *ads, char *host_principal); 2017ADS_STATUS ads_guess_service_principal(ADS_STRUCT *ads, 2018 char **returned_principal); 2019 2020/* The following definitions come from libgpo/gpo_filesync.c */ 2021 2022NTSTATUS gpo_copy_file(TALLOC_CTX *mem_ctx, 2023 struct cli_state *cli, 2024 const char *nt_path, 2025 const char *unix_path); 2026NTSTATUS gpo_sync_directories(TALLOC_CTX *mem_ctx, 2027 struct cli_state *cli, 2028 const char *nt_path, 2029 const char *local_path); 2030 2031/* The following definitions come from libgpo/gpo_ini.c */ 2032 2033NTSTATUS parse_gpt_ini(TALLOC_CTX *mem_ctx, 2034 const char *filename, 2035 uint32_t *version, 2036 char **display_name); 2037 2038/* The following definitions come from libgpo/gpo_reg.c */ 2039 2040struct nt_user_token *registry_create_system_token(TALLOC_CTX *mem_ctx); 2041WERROR gp_init_reg_ctx(TALLOC_CTX *mem_ctx, 2042 const char *initial_path, 2043 uint32_t desired_access, 2044 const struct nt_user_token *token, 2045 struct gp_registry_context **reg_ctx); 2046void gp_free_reg_ctx(struct gp_registry_context *reg_ctx); 2047WERROR gp_store_reg_subkey(TALLOC_CTX *mem_ctx, 2048 const char *subkeyname, 2049 struct registry_key *curr_key, 2050 struct registry_key **new_key); 2051WERROR gp_read_reg_subkey(TALLOC_CTX *mem_ctx, 2052 struct gp_registry_context *reg_ctx, 2053 const char *subkeyname, 2054 struct registry_key **key); 2055WERROR gp_store_reg_val_sz(TALLOC_CTX *mem_ctx, 2056 struct registry_key *key, 2057 const char *val_name, 2058 const char *val); 2059WERROR gp_read_reg_val_sz(TALLOC_CTX *mem_ctx, 2060 struct registry_key *key, 2061 const char *val_name, 2062 const char **val); 2063WERROR gp_reg_state_store(TALLOC_CTX *mem_ctx, 2064 uint32_t flags, 2065 const char *dn, 2066 const struct nt_user_token *token, 2067 struct GROUP_POLICY_OBJECT *gpo_list); 2068WERROR gp_reg_state_read(TALLOC_CTX *mem_ctx, 2069 uint32_t flags, 2070 const DOM_SID *sid, 2071 struct GROUP_POLICY_OBJECT **gpo_list); 2072WERROR gp_secure_key(TALLOC_CTX *mem_ctx, 2073 uint32_t flags, 2074 struct registry_key *key, 2075 const DOM_SID *sid); 2076void dump_reg_val(int lvl, const char *direction, 2077 const char *key, const char *subkey, 2078 struct registry_value *val); 2079void dump_reg_entry(uint32_t flags, 2080 const char *dir, 2081 struct gp_registry_entry *entry); 2082void dump_reg_entries(uint32_t flags, 2083 const char *dir, 2084 struct gp_registry_entry *entries, 2085 size_t num_entries); 2086bool add_gp_registry_entry_to_array(TALLOC_CTX *mem_ctx, 2087 struct gp_registry_entry *entry, 2088 struct gp_registry_entry **entries, 2089 size_t *num); 2090WERROR reg_apply_registry_entry(TALLOC_CTX *mem_ctx, 2091 struct registry_key *root_key, 2092 struct gp_registry_context *reg_ctx, 2093 struct gp_registry_entry *entry, 2094 const struct nt_user_token *token, 2095 uint32_t flags); 2096 2097 2098#include "librpc/gen_ndr/ndr_dfs.h" 2099#include "librpc/gen_ndr/ndr_dssetup.h" 2100#include "librpc/gen_ndr/ndr_echo.h" 2101#include "librpc/gen_ndr/ndr_eventlog.h" 2102#include "librpc/gen_ndr/ndr_krb5pac.h" 2103#include "librpc/gen_ndr/ndr_lsa.h" 2104#include "librpc/gen_ndr/ndr_misc.h" 2105#include "librpc/gen_ndr/ndr_netlogon.h" 2106#include "librpc/gen_ndr/ndr_notify.h" 2107#include "librpc/gen_ndr/ndr_ntsvcs.h" 2108#include "librpc/gen_ndr/ndr_samr.h" 2109#include "librpc/gen_ndr/ndr_security.h" 2110#include "librpc/gen_ndr/ndr_srvsvc.h" 2111#include "librpc/gen_ndr/ndr_svcctl.h" 2112#include "librpc/gen_ndr/ndr_winreg.h" 2113#include "librpc/gen_ndr/ndr_wkssvc.h" 2114#include "librpc/gen_ndr/ndr_drsuapi.h" 2115#include "librpc/gen_ndr/ndr_spoolss.h" 2116#include "librpc/gen_ndr/ndr_initshutdown.h" 2117 2118#include "librpc/ndr/libndr.h" 2119 2120/* The following definitions come from librpc/ndr/util.c */ 2121 2122enum ndr_err_code ndr_push_server_id(struct ndr_push *ndr, int ndr_flags, const struct server_id *r); 2123enum ndr_err_code ndr_pull_server_id(struct ndr_pull *ndr, int ndr_flags, struct server_id *r); 2124void ndr_print_server_id(struct ndr_print *ndr, const char *name, const struct server_id *r); 2125enum ndr_err_code ndr_push_file_id(struct ndr_push *ndr, int ndr_flags, const struct file_id *r); 2126enum ndr_err_code ndr_pull_file_id(struct ndr_pull *ndr, int ndr_flags, struct file_id *r); 2127void ndr_print_file_id(struct ndr_print *ndr, const char *name, const struct file_id *r); 2128_PUBLIC_ void ndr_print_bool(struct ndr_print *ndr, const char *name, const bool b); 2129_PUBLIC_ void ndr_print_sockaddr_storage(struct ndr_print *ndr, const char *name, const struct sockaddr_storage *ss); 2130const char *ndr_errstr(enum ndr_err_code err); 2131extern const struct ndr_syntax_id null_ndr_syntax_id; 2132 2133/* The following definitions come from librpc/ndr/sid.c */ 2134 2135char *dom_sid_string(TALLOC_CTX *mem_ctx, const struct dom_sid *sid); 2136 2137/* The following definitions come from librpc/rpc/binding.c */ 2138 2139const char *epm_floor_string(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor); 2140_PUBLIC_ char *dcerpc_binding_string(TALLOC_CTX *mem_ctx, const struct dcerpc_binding *b); 2141_PUBLIC_ NTSTATUS dcerpc_parse_binding(TALLOC_CTX *mem_ctx, const char *s, struct dcerpc_binding **b_out); 2142_PUBLIC_ NTSTATUS dcerpc_floor_get_lhs_data(const struct epm_floor *epm_floor, 2143 struct ndr_syntax_id *syntax); 2144const char *dcerpc_floor_get_rhs_data(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor); 2145enum dcerpc_transport_t dcerpc_transport_by_endpoint_protocol(int prot); 2146_PUBLIC_ enum dcerpc_transport_t dcerpc_transport_by_tower(const struct epm_tower *tower); 2147_PUBLIC_ const char *derpc_transport_string_by_transport(enum dcerpc_transport_t t); 2148_PUBLIC_ NTSTATUS dcerpc_binding_from_tower(TALLOC_CTX *mem_ctx, 2149 struct epm_tower *tower, 2150 struct dcerpc_binding **b_out); 2151_PUBLIC_ NTSTATUS dcerpc_binding_build_tower(TALLOC_CTX *mem_ctx, 2152 const struct dcerpc_binding *binding, 2153 struct epm_tower *tower); 2154 2155/* The following definitions come from librpc/rpc/dcerpc.c */ 2156 2157struct rpc_request *dcerpc_ndr_request_send(struct dcerpc_pipe *p, const struct GUID *object, 2158 const struct ndr_interface_table *table, uint32_t opnum, 2159 TALLOC_CTX *mem_ctx, void *r); 2160NTSTATUS dcerpc_ndr_request_recv(struct rpc_request *req); 2161_PUBLIC_ NTSTATUS dcerpc_pipe_connect(TALLOC_CTX *parent_ctx, struct dcerpc_pipe **pp, 2162 const char *binding_string, const struct ndr_interface_table *table, 2163 struct cli_credentials *credentials, struct event_context *ev, 2164 struct loadparm_context *lp_ctx); 2165 2166/* The following definitions come from libsmb/cliconnect.c */ 2167 2168ADS_STATUS cli_session_setup_spnego(struct cli_state *cli, const char *user, 2169 const char *pass, const char *user_domain, 2170 const char * dest_realm); 2171 2172NTSTATUS cli_session_setup(struct cli_state *cli, 2173 const char *user, 2174 const char *pass, int passlen, 2175 const char *ntpass, int ntpasslen, 2176 const char *workgroup); 2177struct tevent_req *cli_session_setup_guest_create(TALLOC_CTX *mem_ctx, 2178 struct event_context *ev, 2179 struct cli_state *cli, 2180 struct tevent_req **psmbreq); 2181struct tevent_req *cli_session_setup_guest_send(TALLOC_CTX *mem_ctx, 2182 struct event_context *ev, 2183 struct cli_state *cli); 2184NTSTATUS cli_session_setup_guest_recv(struct tevent_req *req); 2185bool cli_ulogoff(struct cli_state *cli); 2186struct tevent_req *cli_tcon_andx_create(TALLOC_CTX *mem_ctx, 2187 struct event_context *ev, 2188 struct cli_state *cli, 2189 const char *share, const char *dev, 2190 const char *pass, int passlen, 2191 struct tevent_req **psmbreq); 2192struct tevent_req *cli_tcon_andx_send(TALLOC_CTX *mem_ctx, 2193 struct event_context *ev, 2194 struct cli_state *cli, 2195 const char *share, const char *dev, 2196 const char *pass, int passlen); 2197NTSTATUS cli_tcon_andx_recv(struct tevent_req *req); 2198NTSTATUS cli_tcon_andx(struct cli_state *cli, const char *share, 2199 const char *dev, const char *pass, int passlen); 2200bool cli_tdis(struct cli_state *cli); 2201void cli_negprot_sendsync(struct cli_state *cli); 2202NTSTATUS cli_negprot(struct cli_state *cli); 2203struct tevent_req *cli_negprot_send(TALLOC_CTX *mem_ctx, 2204 struct event_context *ev, 2205 struct cli_state *cli); 2206NTSTATUS cli_negprot_recv(struct tevent_req *req); 2207bool cli_session_request(struct cli_state *cli, 2208 struct nmb_name *calling, struct nmb_name *called); 2209NTSTATUS cli_connect(struct cli_state *cli, 2210 const char *host, 2211 struct sockaddr_storage *dest_ss); 2212NTSTATUS cli_start_connection(struct cli_state **output_cli, 2213 const char *my_name, 2214 const char *dest_host, 2215 struct sockaddr_storage *dest_ss, int port, 2216 int signing_state, int flags, 2217 bool *retry) ; 2218NTSTATUS cli_full_connection(struct cli_state **output_cli, 2219 const char *my_name, 2220 const char *dest_host, 2221 struct sockaddr_storage *dest_ss, int port, 2222 const char *service, const char *service_type, 2223 const char *user, const char *domain, 2224 const char *password, int flags, 2225 int signing_state, 2226 bool *retry) ; 2227bool attempt_netbios_session_request(struct cli_state **ppcli, const char *srchost, const char *desthost, 2228 struct sockaddr_storage *pdest_ss); 2229NTSTATUS cli_raw_tcon(struct cli_state *cli, 2230 const char *service, const char *pass, const char *dev, 2231 uint16 *max_xmit, uint16 *tid); 2232struct cli_state *get_ipc_connect(char *server, 2233 struct sockaddr_storage *server_ss, 2234 const struct user_auth_info *user_info); 2235struct cli_state *get_ipc_connect_master_ip(TALLOC_CTX *ctx, 2236 struct ip_service *mb_ip, 2237 const struct user_auth_info *user_info, 2238 char **pp_workgroup_out); 2239struct cli_state *get_ipc_connect_master_ip_bcast(TALLOC_CTX *ctx, 2240 const struct user_auth_info *user_info, 2241 char **pp_workgroup_out); 2242 2243/* The following definitions come from libsmb/clidfs.c */ 2244 2245NTSTATUS cli_cm_force_encryption(struct cli_state *c, 2246 const char *username, 2247 const char *password, 2248 const char *domain, 2249 const char *sharename); 2250struct cli_state *cli_cm_open(TALLOC_CTX *ctx, 2251 struct cli_state *referring_cli, 2252 const char *server, 2253 const char *share, 2254 const struct user_auth_info *auth_info, 2255 bool show_hdr, 2256 bool force_encrypt, 2257 int max_protocol, 2258 int port, 2259 int name_type); 2260void cli_cm_display(const struct cli_state *c); 2261bool cli_dfs_get_referral(TALLOC_CTX *ctx, 2262 struct cli_state *cli, 2263 const char *path, 2264 CLIENT_DFS_REFERRAL**refs, 2265 size_t *num_refs, 2266 size_t *consumed); 2267bool cli_resolve_path(TALLOC_CTX *ctx, 2268 const char *mountpt, 2269 const struct user_auth_info *dfs_auth_info, 2270 struct cli_state *rootcli, 2271 const char *path, 2272 struct cli_state **targetcli, 2273 char **pp_targetpath); 2274 2275bool cli_check_msdfs_proxy(TALLOC_CTX *ctx, 2276 struct cli_state *cli, 2277 const char *sharename, 2278 char **pp_newserver, 2279 char **pp_newshare, 2280 bool force_encrypt, 2281 const char *username, 2282 const char *password, 2283 const char *domain); 2284/* The following definitions come from libsmb/clidgram.c */ 2285 2286bool send_getdc_request(TALLOC_CTX *mem_ctx, 2287 struct messaging_context *msg_ctx, 2288 struct sockaddr_storage *dc_ss, 2289 const char *domain_name, 2290 const DOM_SID *sid, 2291 uint32_t nt_version); 2292bool receive_getdc_response(TALLOC_CTX *mem_ctx, 2293 struct sockaddr_storage *dc_ss, 2294 const char *domain_name, 2295 uint32_t *nt_version, 2296 const char **dc_name, 2297 struct netlogon_samlogon_response **reply); 2298 2299/* The following definitions come from libsmb/clientgen.c */ 2300 2301int cli_set_message(char *buf,int num_words,int num_bytes,bool zero); 2302unsigned int cli_set_timeout(struct cli_state *cli, unsigned int timeout); 2303void cli_set_port(struct cli_state *cli, int port); 2304bool cli_state_seqnum_persistent(struct cli_state *cli, 2305 uint16_t mid); 2306bool cli_state_seqnum_remove(struct cli_state *cli, 2307 uint16_t mid); 2308bool cli_receive_smb(struct cli_state *cli); 2309ssize_t cli_receive_smb_data(struct cli_state *cli, char *buffer, size_t len); 2310bool cli_receive_smb_readX_header(struct cli_state *cli); 2311bool cli_send_smb(struct cli_state *cli); 2312bool cli_send_smb_direct_writeX(struct cli_state *cli, 2313 const char *p, 2314 size_t extradata); 2315void cli_setup_packet_buf(struct cli_state *cli, char *buf); 2316void cli_setup_packet(struct cli_state *cli); 2317void cli_setup_bcc(struct cli_state *cli, void *p); 2318NTSTATUS cli_set_domain(struct cli_state *cli, const char *domain); 2319NTSTATUS cli_set_username(struct cli_state *cli, const char *username); 2320NTSTATUS cli_set_password(struct cli_state *cli, const char *password); 2321NTSTATUS cli_init_creds(struct cli_state *cli, const char *username, const char *domain, const char *password); 2322struct cli_state *cli_initialise(void); 2323struct cli_state *cli_initialise_ex(int signing_state); 2324void cli_nt_pipes_close(struct cli_state *cli); 2325void cli_shutdown(struct cli_state *cli); 2326void cli_sockopt(struct cli_state *cli, const char *options); 2327uint16 cli_setpid(struct cli_state *cli, uint16 pid); 2328bool cli_set_case_sensitive(struct cli_state *cli, bool case_sensitive); 2329bool cli_send_keepalive(struct cli_state *cli); 2330struct tevent_req *cli_echo_send(TALLOC_CTX *mem_ctx, struct event_context *ev, 2331 struct cli_state *cli, uint16_t num_echos, 2332 DATA_BLOB data); 2333NTSTATUS cli_echo_recv(struct tevent_req *req); 2334NTSTATUS cli_echo(struct cli_state *cli, uint16_t num_echos, DATA_BLOB data); 2335bool cli_ucs2(struct cli_state *cli); 2336bool is_andx_req(uint8_t cmd); 2337 2338/* The following definitions come from libsmb/clierror.c */ 2339 2340const char *cli_errstr(struct cli_state *cli); 2341NTSTATUS cli_nt_error(struct cli_state *cli); 2342void cli_dos_error(struct cli_state *cli, uint8 *eclass, uint32 *ecode); 2343int cli_errno(struct cli_state *cli); 2344bool cli_is_error(struct cli_state *cli); 2345bool cli_is_nt_error(struct cli_state *cli); 2346bool cli_is_dos_error(struct cli_state *cli); 2347NTSTATUS cli_get_nt_error(struct cli_state *cli); 2348void cli_set_nt_error(struct cli_state *cli, NTSTATUS status); 2349void cli_reset_error(struct cli_state *cli); 2350bool cli_state_is_connected(struct cli_state *cli); 2351 2352/* The following definitions come from libsmb/clifile.c */ 2353 2354struct tevent_req *cli_posix_symlink_send(TALLOC_CTX *mem_ctx, 2355 struct event_context *ev, 2356 struct cli_state *cli, 2357 const char *oldname, 2358 const char *newname); 2359NTSTATUS cli_posix_symlink_recv(struct tevent_req *req); 2360NTSTATUS cli_posix_symlink(struct cli_state *cli, 2361 const char *oldname, 2362 const char *newname); 2363struct tevent_req *cli_posix_readlink_send(TALLOC_CTX *mem_ctx, 2364 struct event_context *ev, 2365 struct cli_state *cli, 2366 const char *fname, 2367 size_t len); 2368NTSTATUS cli_posix_readlink_recv(struct tevent_req *req, struct cli_state *cli, 2369 char *retpath, size_t len); 2370NTSTATUS cli_posix_readlink(struct cli_state *cli, const char *fname, 2371 char *linkpath, size_t len); 2372struct tevent_req *cli_posix_hardlink_send(TALLOC_CTX *mem_ctx, 2373 struct event_context *ev, 2374 struct cli_state *cli, 2375 const char *oldname, 2376 const char *newname); 2377NTSTATUS cli_posix_hardlink_recv(struct tevent_req *req); 2378NTSTATUS cli_posix_hardlink(struct cli_state *cli, 2379 const char *oldname, 2380 const char *newname); 2381uint32_t unix_perms_to_wire(mode_t perms); 2382mode_t wire_perms_to_unix(uint32_t perms); 2383struct tevent_req *cli_posix_getfacl_send(TALLOC_CTX *mem_ctx, 2384 struct event_context *ev, 2385 struct cli_state *cli, 2386 const char *fname); 2387NTSTATUS cli_posix_getfacl_recv(struct tevent_req *req, 2388 TALLOC_CTX *mem_ctx, 2389 size_t *prb_size, 2390 char **retbuf); 2391NTSTATUS cli_posix_getfacl(struct cli_state *cli, 2392 const char *fname, 2393 TALLOC_CTX *mem_ctx, 2394 size_t *prb_size, 2395 char **retbuf); 2396struct tevent_req *cli_posix_stat_send(TALLOC_CTX *mem_ctx, 2397 struct event_context *ev, 2398 struct cli_state *cli, 2399 const char *fname); 2400NTSTATUS cli_posix_stat_recv(struct tevent_req *req, 2401 SMB_STRUCT_STAT *sbuf); 2402NTSTATUS cli_posix_stat(struct cli_state *cli, 2403 const char *fname, 2404 SMB_STRUCT_STAT *sbuf); 2405struct tevent_req *cli_posix_chmod_send(TALLOC_CTX *mem_ctx, 2406 struct event_context *ev, 2407 struct cli_state *cli, 2408 const char *fname, 2409 mode_t mode); 2410NTSTATUS cli_posix_chmod_recv(struct tevent_req *req); 2411NTSTATUS cli_posix_chmod(struct cli_state *cli, const char *fname, mode_t mode); 2412struct tevent_req *cli_posix_chown_send(TALLOC_CTX *mem_ctx, 2413 struct event_context *ev, 2414 struct cli_state *cli, 2415 const char *fname, 2416 uid_t uid, 2417 gid_t gid); 2418NTSTATUS cli_posix_chown_recv(struct tevent_req *req); 2419NTSTATUS cli_posix_chown(struct cli_state *cli, 2420 const char *fname, 2421 uid_t uid, 2422 gid_t gid); 2423struct tevent_req *cli_rename_send(TALLOC_CTX *mem_ctx, 2424 struct event_context *ev, 2425 struct cli_state *cli, 2426 const char *fname_src, 2427 const char *fname_dst); 2428NTSTATUS cli_rename_recv(struct tevent_req *req); 2429NTSTATUS cli_rename(struct cli_state *cli, const char *fname_src, const char *fname_dst); 2430struct tevent_req *cli_ntrename_send(TALLOC_CTX *mem_ctx, 2431 struct event_context *ev, 2432 struct cli_state *cli, 2433 const char *fname_src, 2434 const char *fname_dst); 2435NTSTATUS cli_ntrename_recv(struct tevent_req *req); 2436NTSTATUS cli_ntrename(struct cli_state *cli, const char *fname_src, const char *fname_dst); 2437 2438struct tevent_req *cli_nt_hardlink_send(TALLOC_CTX *mem_ctx, 2439 struct event_context *ev, 2440 struct cli_state *cli, 2441 const char *fname_src, 2442 const char *fname_dst); 2443NTSTATUS cli_nt_hardlink_recv(struct tevent_req *req); 2444NTSTATUS cli_nt_hardlink(struct cli_state *cli, const char *fname_src, const char *fname_dst); 2445 2446struct tevent_req *cli_unlink_send(TALLOC_CTX *mem_ctx, 2447 struct event_context *ev, 2448 struct cli_state *cli, 2449 const char *fname, 2450 uint16_t mayhave_attrs); 2451NTSTATUS cli_unlink_recv(struct tevent_req *req); 2452NTSTATUS cli_unlink(struct cli_state *cli, const char *fname, uint16_t mayhave_attrs); 2453 2454struct tevent_req *cli_mkdir_send(TALLOC_CTX *mem_ctx, 2455 struct event_context *ev, 2456 struct cli_state *cli, 2457 const char *dname); 2458NTSTATUS cli_mkdir_recv(struct tevent_req *req); 2459NTSTATUS cli_mkdir(struct cli_state *cli, const char *dname); 2460struct tevent_req *cli_rmdir_send(TALLOC_CTX *mem_ctx, 2461 struct event_context *ev, 2462 struct cli_state *cli, 2463 const char *dname); 2464NTSTATUS cli_rmdir_recv(struct tevent_req *req); 2465NTSTATUS cli_rmdir(struct cli_state *cli, const char *dname); 2466struct tevent_req *cli_nt_delete_on_close_send(TALLOC_CTX *mem_ctx, 2467 struct event_context *ev, 2468 struct cli_state *cli, 2469 uint16_t fnum, 2470 bool flag); 2471NTSTATUS cli_nt_delete_on_close_recv(struct tevent_req *req); 2472NTSTATUS cli_nt_delete_on_close(struct cli_state *cli, uint16_t fnum, bool flag); 2473struct tevent_req *cli_ntcreate_send(TALLOC_CTX *mem_ctx, 2474 struct event_context *ev, 2475 struct cli_state *cli, 2476 const char *fname, 2477 uint32_t CreatFlags, 2478 uint32_t DesiredAccess, 2479 uint32_t FileAttributes, 2480 uint32_t ShareAccess, 2481 uint32_t CreateDisposition, 2482 uint32_t CreateOptions, 2483 uint8_t SecurityFlags); 2484NTSTATUS cli_ntcreate_recv(struct tevent_req *req, uint16_t *pfnum); 2485NTSTATUS cli_ntcreate(struct cli_state *cli, 2486 const char *fname, 2487 uint32_t CreatFlags, 2488 uint32_t DesiredAccess, 2489 uint32_t FileAttributes, 2490 uint32_t ShareAccess, 2491 uint32_t CreateDisposition, 2492 uint32_t CreateOptions, 2493 uint8_t SecurityFlags, 2494 uint16_t *pfid); 2495uint8_t *smb_bytes_push_str(uint8_t *buf, bool ucs2, const char *str, 2496 size_t str_len, size_t *pconverted_size); 2497struct tevent_req *cli_open_create(TALLOC_CTX *mem_ctx, 2498 struct event_context *ev, 2499 struct cli_state *cli, const char *fname, 2500 int flags, int share_mode, 2501 struct tevent_req **psmbreq); 2502struct tevent_req *cli_open_send(TALLOC_CTX *mem_ctx, struct event_context *ev, 2503 struct cli_state *cli, const char *fname, 2504 int flags, int share_mode); 2505NTSTATUS cli_open_recv(struct tevent_req *req, uint16_t *fnum); 2506NTSTATUS cli_open(struct cli_state *cli, const char *fname, int flags, int share_mode, uint16_t *pfnum); 2507struct tevent_req *cli_close_create(TALLOC_CTX *mem_ctx, 2508 struct event_context *ev, 2509 struct cli_state *cli, uint16_t fnum, 2510 struct tevent_req **psubreq); 2511struct tevent_req *cli_close_send(TALLOC_CTX *mem_ctx, 2512 struct event_context *ev, 2513 struct cli_state *cli, uint16_t fnum); 2514NTSTATUS cli_close_recv(struct tevent_req *req); 2515NTSTATUS cli_close(struct cli_state *cli, uint16_t fnum); 2516struct tevent_req *cli_ftruncate_send(TALLOC_CTX *mem_ctx, 2517 struct event_context *ev, 2518 struct cli_state *cli, 2519 uint16_t fnum, 2520 uint64_t size); 2521NTSTATUS cli_ftruncate_recv(struct tevent_req *req); 2522NTSTATUS cli_ftruncate(struct cli_state *cli, uint16_t fnum, uint64_t size); 2523NTSTATUS cli_locktype(struct cli_state *cli, uint16_t fnum, 2524 uint32_t offset, uint32_t len, 2525 int timeout, unsigned char locktype); 2526bool cli_lock(struct cli_state *cli, uint16_t fnum, 2527 uint32_t offset, uint32_t len, int timeout, enum brl_type lock_type); 2528struct tevent_req *cli_unlock_send(TALLOC_CTX *mem_ctx, 2529 struct event_context *ev, 2530 struct cli_state *cli, 2531 uint16_t fnum, 2532 uint64_t offset, 2533 uint64_t len); 2534NTSTATUS cli_unlock_recv(struct tevent_req *req); 2535NTSTATUS cli_unlock(struct cli_state *cli, uint16_t fnum, uint32_t offset, uint32_t len); 2536bool cli_lock64(struct cli_state *cli, uint16_t fnum, 2537 uint64_t offset, uint64_t len, int timeout, enum brl_type lock_type); 2538struct tevent_req *cli_unlock64_send(TALLOC_CTX *mem_ctx, 2539 struct event_context *ev, 2540 struct cli_state *cli, 2541 uint16_t fnum, 2542 uint64_t offset, 2543 uint64_t len); 2544NTSTATUS cli_unlock64_recv(struct tevent_req *req); 2545NTSTATUS cli_unlock64(struct cli_state *cli, uint16_t fnum, uint64_t offset, uint64_t len); 2546struct tevent_req *cli_posix_lock_send(TALLOC_CTX *mem_ctx, 2547 struct event_context *ev, 2548 struct cli_state *cli, 2549 uint16_t fnum, 2550 uint64_t offset, 2551 uint64_t len, 2552 bool wait_lock, 2553 enum brl_type lock_type); 2554NTSTATUS cli_posix_lock_recv(struct tevent_req *req); 2555NTSTATUS cli_posix_lock(struct cli_state *cli, uint16_t fnum, 2556 uint64_t offset, uint64_t len, 2557 bool wait_lock, enum brl_type lock_type); 2558struct tevent_req *cli_posix_unlock_send(TALLOC_CTX *mem_ctx, 2559 struct event_context *ev, 2560 struct cli_state *cli, 2561 uint16_t fnum, 2562 uint64_t offset, 2563 uint64_t len); 2564NTSTATUS cli_posix_unlock_recv(struct tevent_req *req); 2565NTSTATUS cli_posix_unlock(struct cli_state *cli, uint16_t fnum, uint64_t offset, uint64_t len); 2566struct tevent_req *cli_getattrE_send(TALLOC_CTX *mem_ctx, 2567 struct event_context *ev, 2568 struct cli_state *cli, 2569 uint16_t fnum); 2570NTSTATUS cli_getattrE_recv(struct tevent_req *req, 2571 uint16_t *attr, 2572 SMB_OFF_T *size, 2573 time_t *change_time, 2574 time_t *access_time, 2575 time_t *write_time); 2576NTSTATUS cli_getattrE(struct cli_state *cli, 2577 uint16_t fnum, 2578 uint16_t *attr, 2579 SMB_OFF_T *size, 2580 time_t *change_time, 2581 time_t *access_time, 2582 time_t *write_time); 2583struct tevent_req *cli_setattrE_send(TALLOC_CTX *mem_ctx, 2584 struct event_context *ev, 2585 struct cli_state *cli, 2586 uint16_t fnum, 2587 time_t change_time, 2588 time_t access_time, 2589 time_t write_time); 2590NTSTATUS cli_setattrE_recv(struct tevent_req *req); 2591NTSTATUS cli_setattrE(struct cli_state *cli, 2592 uint16_t fnum, 2593 time_t change_time, 2594 time_t access_time, 2595 time_t write_time); 2596struct tevent_req *cli_getatr_send(TALLOC_CTX *mem_ctx, 2597 struct event_context *ev, 2598 struct cli_state *cli, 2599 const char *fname); 2600NTSTATUS cli_getatr_recv(struct tevent_req *req, 2601 uint16_t *attr, 2602 SMB_OFF_T *size, 2603 time_t *write_time); 2604NTSTATUS cli_getatr(struct cli_state *cli, 2605 const char *fname, 2606 uint16_t *attr, 2607 SMB_OFF_T *size, 2608 time_t *write_time); 2609struct tevent_req *cli_setatr_send(TALLOC_CTX *mem_ctx, 2610 struct event_context *ev, 2611 struct cli_state *cli, 2612 const char *fname, 2613 uint16_t attr, 2614 time_t mtime); 2615NTSTATUS cli_setatr_recv(struct tevent_req *req); 2616NTSTATUS cli_setatr(struct cli_state *cli, 2617 const char *fname, 2618 uint16_t attr, 2619 time_t mtime); 2620struct tevent_req *cli_chkpath_send(TALLOC_CTX *mem_ctx, 2621 struct event_context *ev, 2622 struct cli_state *cli, 2623 const char *fname); 2624NTSTATUS cli_chkpath_recv(struct tevent_req *req); 2625NTSTATUS cli_chkpath(struct cli_state *cli, const char *path); 2626struct tevent_req *cli_dskattr_send(TALLOC_CTX *mem_ctx, 2627 struct event_context *ev, 2628 struct cli_state *cli); 2629NTSTATUS cli_dskattr_recv(struct tevent_req *req, int *bsize, int *total, 2630 int *avail); 2631NTSTATUS cli_dskattr(struct cli_state *cli, int *bsize, int *total, int *avail); 2632struct tevent_req *cli_ctemp_send(TALLOC_CTX *mem_ctx, 2633 struct event_context *ev, 2634 struct cli_state *cli, 2635 const char *path); 2636NTSTATUS cli_ctemp_recv(struct tevent_req *req, 2637 TALLOC_CTX *ctx, 2638 uint16_t *pfnum, 2639 char **outfile); 2640NTSTATUS cli_ctemp(struct cli_state *cli, 2641 TALLOC_CTX *ctx, 2642 const char *path, 2643 uint16_t *pfnum, 2644 char **out_path); 2645NTSTATUS cli_raw_ioctl(struct cli_state *cli, uint16_t fnum, uint32_t code, DATA_BLOB *blob); 2646bool cli_set_ea_path(struct cli_state *cli, const char *path, const char *ea_name, const char *ea_val, size_t ea_len); 2647bool cli_set_ea_fnum(struct cli_state *cli, uint16_t fnum, const char *ea_name, const char *ea_val, size_t ea_len); 2648bool cli_get_ea_list_path(struct cli_state *cli, const char *path, 2649 TALLOC_CTX *ctx, 2650 size_t *pnum_eas, 2651 struct ea_struct **pea_list); 2652bool cli_get_ea_list_fnum(struct cli_state *cli, uint16_t fnum, 2653 TALLOC_CTX *ctx, 2654 size_t *pnum_eas, 2655 struct ea_struct **pea_list); 2656struct tevent_req *cli_posix_open_send(TALLOC_CTX *mem_ctx, 2657 struct event_context *ev, 2658 struct cli_state *cli, 2659 const char *fname, 2660 int flags, 2661 mode_t mode); 2662NTSTATUS cli_posix_open_recv(struct tevent_req *req, uint16_t *pfnum); 2663NTSTATUS cli_posix_open(struct cli_state *cli, const char *fname, 2664 int flags, mode_t mode, uint16_t *fnum); 2665struct tevent_req *cli_posix_mkdir_send(TALLOC_CTX *mem_ctx, 2666 struct event_context *ev, 2667 struct cli_state *cli, 2668 const char *fname, 2669 mode_t mode); 2670NTSTATUS cli_posix_mkdir_recv(struct tevent_req *req); 2671NTSTATUS cli_posix_mkdir(struct cli_state *cli, const char *fname, mode_t mode); 2672 2673struct tevent_req *cli_posix_unlink_send(TALLOC_CTX *mem_ctx, 2674 struct event_context *ev, 2675 struct cli_state *cli, 2676 const char *fname); 2677NTSTATUS cli_posix_unlink_recv(struct tevent_req *req); 2678NTSTATUS cli_posix_unlink(struct cli_state *cli, const char *fname); 2679 2680struct tevent_req *cli_posix_rmdir_send(TALLOC_CTX *mem_ctx, 2681 struct event_context *ev, 2682 struct cli_state *cli, 2683 const char *fname); 2684NTSTATUS cli_posix_rmdir_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx); 2685NTSTATUS cli_posix_rmdir(struct cli_state *cli, const char *fname); 2686struct tevent_req *cli_notify_send(TALLOC_CTX *mem_ctx, 2687 struct tevent_context *ev, 2688 struct cli_state *cli, uint16_t fnum, 2689 uint32_t buffer_size, 2690 uint32_t completion_filter, bool recursive); 2691NTSTATUS cli_notify_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, 2692 uint32_t *pnum_changes, 2693 struct notify_change **pchanges); 2694 2695/* The following definitions come from libsmb/clifsinfo.c */ 2696 2697struct tevent_req *cli_unix_extensions_version_send(TALLOC_CTX *mem_ctx, 2698 struct tevent_context *ev, 2699 struct cli_state *cli); 2700NTSTATUS cli_unix_extensions_version_recv(struct tevent_req *req, 2701 uint16_t *pmajor, uint16_t *pminor, 2702 uint32_t *pcaplow, 2703 uint32_t *pcaphigh); 2704NTSTATUS cli_unix_extensions_version(struct cli_state *cli, uint16 *pmajor, 2705 uint16 *pminor, uint32 *pcaplow, 2706 uint32 *pcaphigh); 2707bool cli_set_unix_extensions_capabilities(struct cli_state *cli, uint16 major, uint16 minor, 2708 uint32 caplow, uint32 caphigh); 2709bool cli_get_fs_attr_info(struct cli_state *cli, uint32 *fs_attr); 2710bool cli_get_fs_volume_info_old(struct cli_state *cli, fstring volume_name, uint32 *pserial_number); 2711bool cli_get_fs_volume_info(struct cli_state *cli, fstring volume_name, uint32 *pserial_number, time_t *pdate); 2712bool cli_get_fs_full_size_info(struct cli_state *cli, 2713 uint64_t *total_allocation_units, 2714 uint64_t *caller_allocation_units, 2715 uint64_t *actual_allocation_units, 2716 uint64_t *sectors_per_allocation_unit, 2717 uint64_t *bytes_per_sector); 2718bool cli_get_posix_fs_info(struct cli_state *cli, 2719 uint32 *optimal_transfer_size, 2720 uint32 *block_size, 2721 uint64_t *total_blocks, 2722 uint64_t *blocks_available, 2723 uint64_t *user_blocks_available, 2724 uint64_t *total_file_nodes, 2725 uint64_t *free_file_nodes, 2726 uint64_t *fs_identifier); 2727NTSTATUS cli_raw_ntlm_smb_encryption_start(struct cli_state *cli, 2728 const char *user, 2729 const char *pass, 2730 const char *domain); 2731NTSTATUS cli_gss_smb_encryption_start(struct cli_state *cli); 2732NTSTATUS cli_force_encryption(struct cli_state *c, 2733 const char *username, 2734 const char *password, 2735 const char *domain); 2736 2737/* The following definitions come from libsmb/clikrb5.c */ 2738 2739bool unwrap_edata_ntstatus(TALLOC_CTX *mem_ctx, 2740 DATA_BLOB *edata, 2741 DATA_BLOB *edata_out); 2742bool unwrap_pac(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, DATA_BLOB *unwrapped_pac_data); 2743 2744/* The following definitions come from libsmb/clilist.c */ 2745 2746int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute, 2747 void (*fn)(const char *, file_info *, const char *, void *), void *state); 2748int cli_list_old(struct cli_state *cli,const char *Mask,uint16 attribute, 2749 void (*fn)(const char *, file_info *, const char *, void *), void *state); 2750int cli_list(struct cli_state *cli,const char *Mask,uint16 attribute, 2751 void (*fn)(const char *, file_info *, const char *, void *), void *state); 2752 2753/* The following definitions come from libsmb/climessage.c */ 2754 2755struct tevent_req *cli_message_send(TALLOC_CTX *mem_ctx, 2756 struct tevent_context *ev, 2757 struct cli_state *cli, 2758 const char *host, const char *username, 2759 const char *message); 2760NTSTATUS cli_message_recv(struct tevent_req *req); 2761NTSTATUS cli_message(struct cli_state *cli, const char *host, 2762 const char *username, const char *message); 2763 2764/* The following definitions come from libsmb/clioplock.c */ 2765 2766struct tevent_req *cli_oplock_ack_send(TALLOC_CTX *mem_ctx, 2767 struct tevent_context *ev, 2768 struct cli_state *cli, 2769 uint16_t fnum, uint8_t level); 2770NTSTATUS cli_oplock_ack_recv(struct tevent_req *req); 2771NTSTATUS cli_oplock_ack(struct cli_state *cli, uint16_t fnum, unsigned char level); 2772void cli_oplock_handler(struct cli_state *cli, 2773 NTSTATUS (*handler)(struct cli_state *, uint16_t, unsigned char)); 2774 2775/* The following definitions come from libsmb/cliprint.c */ 2776 2777int cli_print_queue(struct cli_state *cli, 2778 void (*fn)(struct print_job_info *)); 2779int cli_printjob_del(struct cli_state *cli, int job); 2780int cli_spl_open(struct cli_state *cli, const char *fname, int flags, int share_mode); 2781bool cli_spl_close(struct cli_state *cli, uint16_t fnum); 2782 2783/* The following definitions come from libsmb/cliquota.c */ 2784 2785NTSTATUS cli_get_quota_handle(struct cli_state *cli, uint16_t *quota_fnum); 2786void free_ntquota_list(SMB_NTQUOTA_LIST **qt_list); 2787bool cli_get_user_quota(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_STRUCT *pqt); 2788bool cli_set_user_quota(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_STRUCT *pqt); 2789bool cli_list_user_quota(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_LIST **pqt_list); 2790bool cli_get_fs_quota_info(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_STRUCT *pqt); 2791bool cli_set_fs_quota_info(struct cli_state *cli, int quota_fnum, SMB_NTQUOTA_STRUCT *pqt); 2792void dump_ntquota(SMB_NTQUOTA_STRUCT *qt, bool _verbose, bool _numeric, void (*_sidtostring)(fstring str, DOM_SID *sid, bool _numeric)); 2793void dump_ntquota_list(SMB_NTQUOTA_LIST **qtl, bool _verbose, bool _numeric, void (*_sidtostring)(fstring str, DOM_SID *sid, bool _numeric)); 2794 2795/* The following definitions come from libsmb/clirap.c */ 2796 2797bool cli_api(struct cli_state *cli, 2798 char *param, int prcnt, int mprcnt, 2799 char *data, int drcnt, int mdrcnt, 2800 char **rparam, unsigned int *rprcnt, 2801 char **rdata, unsigned int *rdrcnt); 2802bool cli_NetWkstaUserLogon(struct cli_state *cli,char *user, char *workstation); 2803int cli_RNetShareEnum(struct cli_state *cli, void (*fn)(const char *, uint32, const char *, void *), void *state); 2804bool cli_NetServerEnum(struct cli_state *cli, char *workgroup, uint32 stype, 2805 void (*fn)(const char *, uint32, const char *, void *), 2806 void *state); 2807bool cli_oem_change_password(struct cli_state *cli, const char *user, const char *new_password, 2808 const char *old_password); 2809bool cli_qpathinfo(struct cli_state *cli, 2810 const char *fname, 2811 time_t *change_time, 2812 time_t *access_time, 2813 time_t *write_time, 2814 SMB_OFF_T *size, 2815 uint16 *mode); 2816bool cli_setpathinfo(struct cli_state *cli, const char *fname, 2817 time_t create_time, 2818 time_t access_time, 2819 time_t write_time, 2820 time_t change_time, 2821 uint16 mode); 2822bool cli_qpathinfo2(struct cli_state *cli, const char *fname, 2823 struct timespec *create_time, 2824 struct timespec *access_time, 2825 struct timespec *write_time, 2826 struct timespec *change_time, 2827 SMB_OFF_T *size, uint16 *mode, 2828 SMB_INO_T *ino); 2829bool cli_qpathinfo_streams(struct cli_state *cli, const char *fname, 2830 TALLOC_CTX *mem_ctx, 2831 unsigned int *pnum_streams, 2832 struct stream_struct **pstreams); 2833bool cli_qfilename(struct cli_state *cli, uint16_t fnum, char *name, size_t namelen); 2834bool cli_qfileinfo(struct cli_state *cli, uint16_t fnum, 2835 uint16 *mode, SMB_OFF_T *size, 2836 struct timespec *create_time, 2837 struct timespec *access_time, 2838 struct timespec *write_time, 2839 struct timespec *change_time, 2840 SMB_INO_T *ino); 2841bool cli_qpathinfo_basic( struct cli_state *cli, const char *name, 2842 SMB_STRUCT_STAT *sbuf, uint32 *attributes ); 2843bool cli_qfileinfo_test(struct cli_state *cli, uint16_t fnum, int level, char **poutdata, uint32 *poutlen); 2844NTSTATUS cli_qpathinfo_alt_name(struct cli_state *cli, const char *fname, fstring alt_name); 2845 2846/* The following definitions come from libsmb/clirap2.c */ 2847 2848int cli_NetGroupDelete(struct cli_state *cli, const char *group_name); 2849int cli_NetGroupAdd(struct cli_state *cli, RAP_GROUP_INFO_1 *grinfo); 2850int cli_RNetGroupEnum(struct cli_state *cli, void (*fn)(const char *, const char *, void *), void *state); 2851int cli_RNetGroupEnum0(struct cli_state *cli, 2852 void (*fn)(const char *, void *), 2853 void *state); 2854int cli_NetGroupDelUser(struct cli_state * cli, const char *group_name, const char *user_name); 2855int cli_NetGroupAddUser(struct cli_state * cli, const char *group_name, const char *user_name); 2856int cli_NetGroupGetUsers(struct cli_state * cli, const char *group_name, void (*fn)(const char *, void *), void *state ); 2857int cli_NetUserGetGroups(struct cli_state * cli, const char *user_name, void (*fn)(const char *, void *), void *state ); 2858int cli_NetUserDelete(struct cli_state *cli, const char * user_name ); 2859int cli_NetUserAdd(struct cli_state *cli, RAP_USER_INFO_1 * userinfo ); 2860int cli_RNetUserEnum(struct cli_state *cli, void (*fn)(const char *, const char *, const char *, const char *, void *), void *state); 2861int cli_RNetUserEnum0(struct cli_state *cli, 2862 void (*fn)(const char *, void *), 2863 void *state); 2864int cli_NetFileClose(struct cli_state *cli, uint32 file_id ); 2865int cli_NetFileGetInfo(struct cli_state *cli, uint32 file_id, void (*fn)(const char *, const char *, uint16, uint16, uint32)); 2866int cli_NetFileEnum(struct cli_state *cli, const char * user, 2867 const char * base_path, 2868 void (*fn)(const char *, const char *, uint16, uint16, 2869 uint32)); 2870int cli_NetShareAdd(struct cli_state *cli, RAP_SHARE_INFO_2 * sinfo ); 2871int cli_NetShareDelete(struct cli_state *cli, const char * share_name ); 2872bool cli_get_pdc_name(struct cli_state *cli, const char *workgroup, char **pdc_name); 2873bool cli_get_server_domain(struct cli_state *cli); 2874bool cli_get_server_type(struct cli_state *cli, uint32 *pstype); 2875bool cli_get_server_name(TALLOC_CTX *mem_ctx, struct cli_state *cli, 2876 char **servername); 2877bool cli_ns_check_server_type(struct cli_state *cli, char *workgroup, uint32 stype); 2878bool cli_NetWkstaUserLogoff(struct cli_state *cli, const char *user, const char *workstation); 2879int cli_NetPrintQEnum(struct cli_state *cli, 2880 void (*qfn)(const char*,uint16,uint16,uint16,const char*,const char*,const char*,const char*,const char*,uint16,uint16), 2881 void (*jfn)(uint16,const char*,const char*,const char*,const char*,uint16,uint16,const char*,uint_t,uint_t,const char*)); 2882int cli_NetPrintQGetInfo(struct cli_state *cli, const char *printer, 2883 void (*qfn)(const char*,uint16,uint16,uint16,const char*,const char*,const char*,const char*,const char*,uint16,uint16), 2884 void (*jfn)(uint16,const char*,const char*,const char*,const char*,uint16,uint16,const char*,uint_t,uint_t,const char*)); 2885int cli_RNetServiceEnum(struct cli_state *cli, void (*fn)(const char *, const char *, void *), void *state); 2886int cli_NetSessionEnum(struct cli_state *cli, void (*fn)(char *, char *, uint16, uint16, uint16, uint_t, uint_t, uint_t, char *)); 2887int cli_NetSessionGetInfo(struct cli_state *cli, const char *workstation, 2888 void (*fn)(const char *, const char *, uint16, uint16, uint16, uint_t, uint_t, uint_t, const char *)); 2889int cli_NetSessionDel(struct cli_state *cli, const char *workstation); 2890int cli_NetConnectionEnum(struct cli_state *cli, const char *qualifier, 2891 void (*fn)(uint16_t conid, uint16_t contype, 2892 uint16_t numopens, uint16_t numusers, 2893 uint32_t contime, const char *username, 2894 const char *netname)); 2895 2896/* The following definitions come from libsmb/clireadwrite.c */ 2897 2898struct tevent_req *cli_read_andx_create(TALLOC_CTX *mem_ctx, 2899 struct event_context *ev, 2900 struct cli_state *cli, uint16_t fnum, 2901 off_t offset, size_t size, 2902 struct tevent_req **psmbreq); 2903struct tevent_req *cli_read_andx_send(TALLOC_CTX *mem_ctx, 2904 struct event_context *ev, 2905 struct cli_state *cli, uint16_t fnum, 2906 off_t offset, size_t size); 2907NTSTATUS cli_read_andx_recv(struct tevent_req *req, ssize_t *received, 2908 uint8_t **rcvbuf); 2909struct tevent_req *cli_pull_send(TALLOC_CTX *mem_ctx, 2910 struct event_context *ev, 2911 struct cli_state *cli, 2912 uint16_t fnum, off_t start_offset, 2913 SMB_OFF_T size, size_t window_size, 2914 NTSTATUS (*sink)(char *buf, size_t n, 2915 void *priv), 2916 void *priv); 2917NTSTATUS cli_pull_recv(struct tevent_req *req, SMB_OFF_T *received); 2918NTSTATUS cli_pull(struct cli_state *cli, uint16_t fnum, 2919 off_t start_offset, SMB_OFF_T size, size_t window_size, 2920 NTSTATUS (*sink)(char *buf, size_t n, void *priv), 2921 void *priv, SMB_OFF_T *received); 2922ssize_t cli_read(struct cli_state *cli, uint16_t fnum, char *buf, 2923 off_t offset, size_t size); 2924ssize_t cli_readraw(struct cli_state *cli, uint16_t fnum, char *buf, off_t offset, size_t size); 2925ssize_t cli_write(struct cli_state *cli, 2926 uint16_t fnum, uint16 write_mode, 2927 const char *buf, off_t offset, size_t size); 2928ssize_t cli_smbwrite(struct cli_state *cli, 2929 uint16_t fnum, char *buf, off_t offset, size_t size1); 2930struct tevent_req *cli_write_andx_create(TALLOC_CTX *mem_ctx, 2931 struct event_context *ev, 2932 struct cli_state *cli, uint16_t fnum, 2933 uint16_t mode, const uint8_t *buf, 2934 off_t offset, size_t size, 2935 struct tevent_req **reqs_before, 2936 int num_reqs_before, 2937 struct tevent_req **psmbreq); 2938struct tevent_req *cli_write_andx_send(TALLOC_CTX *mem_ctx, 2939 struct event_context *ev, 2940 struct cli_state *cli, uint16_t fnum, 2941 uint16_t mode, const uint8_t *buf, 2942 off_t offset, size_t size); 2943NTSTATUS cli_write_andx_recv(struct tevent_req *req, size_t *pwritten); 2944 2945struct tevent_req *cli_push_send(TALLOC_CTX *mem_ctx, struct event_context *ev, 2946 struct cli_state *cli, 2947 uint16_t fnum, uint16_t mode, 2948 off_t start_offset, size_t window_size, 2949 size_t (*source)(uint8_t *buf, size_t n, 2950 void *priv), 2951 void *priv); 2952NTSTATUS cli_push_recv(struct tevent_req *req); 2953NTSTATUS cli_push(struct cli_state *cli, uint16_t fnum, uint16_t mode, 2954 off_t start_offset, size_t window_size, 2955 size_t (*source)(uint8_t *buf, size_t n, void *priv), 2956 void *priv); 2957 2958/* The following definitions come from libsmb/clisecdesc.c */ 2959 2960SEC_DESC *cli_query_secdesc(struct cli_state *cli, uint16_t fnum, 2961 TALLOC_CTX *mem_ctx); 2962bool cli_set_secdesc(struct cli_state *cli, uint16_t fnum, SEC_DESC *sd); 2963 2964/* The following definitions come from libsmb/clispnego.c */ 2965 2966DATA_BLOB spnego_gen_negTokenInit(char guid[16], 2967 const char *OIDs[], 2968 const char *principal); 2969DATA_BLOB gen_negTokenInit(const char *OID, DATA_BLOB blob); 2970bool spnego_parse_negTokenInit(DATA_BLOB blob, 2971 char *OIDs[ASN1_MAX_OIDS], 2972 char **principal); 2973DATA_BLOB gen_negTokenTarg(const char *OIDs[], DATA_BLOB blob); 2974bool parse_negTokenTarg(DATA_BLOB blob, char *OIDs[ASN1_MAX_OIDS], DATA_BLOB *secblob); 2975DATA_BLOB spnego_gen_krb5_wrap(const DATA_BLOB ticket, const uint8 tok_id[2]); 2976bool spnego_parse_krb5_wrap(DATA_BLOB blob, DATA_BLOB *ticket, uint8 tok_id[2]); 2977int spnego_gen_negTokenTarg(const char *principal, int time_offset, 2978 DATA_BLOB *targ, 2979 DATA_BLOB *session_key_krb5, uint32 extra_ap_opts, 2980 time_t *expire_time); 2981bool spnego_parse_challenge(const DATA_BLOB blob, 2982 DATA_BLOB *chal1, DATA_BLOB *chal2); 2983DATA_BLOB spnego_gen_auth(DATA_BLOB blob); 2984bool spnego_parse_auth(DATA_BLOB blob, DATA_BLOB *auth); 2985DATA_BLOB spnego_gen_auth_response(DATA_BLOB *reply, NTSTATUS nt_status, 2986 const char *mechOID); 2987bool spnego_parse_auth_response(DATA_BLOB blob, NTSTATUS nt_status, 2988 const char *mechOID, 2989 DATA_BLOB *auth); 2990 2991/* The following definitions come from libsmb/clistr.c */ 2992 2993size_t clistr_push_fn(const char *function, 2994 unsigned int line, 2995 struct cli_state *cli, 2996 void *dest, 2997 const char *src, 2998 int dest_len, 2999 int flags); 3000size_t clistr_pull_fn(const char *function, 3001 unsigned int line, 3002 const char *inbuf, 3003 char *dest, 3004 const void *src, 3005 int dest_len, 3006 int src_len, 3007 int flags); 3008size_t clistr_pull_talloc_fn(const char *function, 3009 unsigned int line, 3010 TALLOC_CTX *ctx, 3011 const char *inbuf, 3012 char **pp_dest, 3013 const void *src, 3014 int src_len, 3015 int flags); 3016size_t clistr_align_out(struct cli_state *cli, const void *p, int flags); 3017size_t clistr_align_in(struct cli_state *cli, const void *p, int flags); 3018 3019/* The following definitions come from libsmb/clitrans.c */ 3020 3021bool cli_send_trans(struct cli_state *cli, int trans, 3022 const char *pipe_name, 3023 int fid, int flags, 3024 uint16 *setup, unsigned int lsetup, unsigned int msetup, 3025 const char *param, unsigned int lparam, unsigned int mparam, 3026 const char *data, unsigned int ldata, unsigned int mdata); 3027bool cli_receive_trans(struct cli_state *cli,int trans, 3028 char **param, unsigned int *param_len, 3029 char **data, unsigned int *data_len); 3030bool cli_send_nt_trans(struct cli_state *cli, 3031 int function, 3032 int flags, 3033 uint16 *setup, unsigned int lsetup, unsigned int msetup, 3034 char *param, unsigned int lparam, unsigned int mparam, 3035 char *data, unsigned int ldata, unsigned int mdata); 3036bool cli_receive_nt_trans(struct cli_state *cli, 3037 char **param, unsigned int *param_len, 3038 char **data, unsigned int *data_len); 3039struct tevent_req *cli_trans_send( 3040 TALLOC_CTX *mem_ctx, struct event_context *ev, 3041 struct cli_state *cli, uint8_t cmd, 3042 const char *pipe_name, uint16_t fid, uint16_t function, int flags, 3043 uint16_t *setup, uint8_t num_setup, uint8_t max_setup, 3044 uint8_t *param, uint32_t num_param, uint32_t max_param, 3045 uint8_t *data, uint32_t num_data, uint32_t max_data); 3046NTSTATUS cli_trans_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, 3047 uint16_t **setup, uint8_t *num_setup, 3048 uint8_t **param, uint32_t *num_param, 3049 uint8_t **data, uint32_t *num_data); 3050NTSTATUS cli_trans(TALLOC_CTX *mem_ctx, struct cli_state *cli, 3051 uint8_t trans_cmd, 3052 const char *pipe_name, uint16_t fid, uint16_t function, 3053 int flags, 3054 uint16_t *setup, uint8_t num_setup, uint8_t max_setup, 3055 uint8_t *param, uint32_t num_param, uint32_t max_param, 3056 uint8_t *data, uint32_t num_data, uint32_t max_data, 3057 uint16_t **rsetup, uint8_t *num_rsetup, 3058 uint8_t **rparam, uint32_t *num_rparam, 3059 uint8_t **rdata, uint32_t *num_rdata); 3060 3061/* The following definitions come from libsmb/conncache.c */ 3062 3063NTSTATUS check_negative_conn_cache_timeout( const char *domain, const char *server, unsigned int failed_cache_timeout ); 3064NTSTATUS check_negative_conn_cache( const char *domain, const char *server); 3065void add_failed_connection_entry(const char *domain, const char *server, NTSTATUS result) ; 3066void flush_negative_conn_cache_for_domain(const char *domain); 3067 3068/* The following definitions come from ../librpc/rpc/dcerpc_error.c */ 3069 3070const char *dcerpc_errstr(TALLOC_CTX *mem_ctx, uint32_t fault_code); 3071 3072/* The following definitions come from libsmb/dsgetdcname.c */ 3073 3074void debug_dsdcinfo_flags(int lvl, uint32_t flags); 3075NTSTATUS dsgetdcname(TALLOC_CTX *mem_ctx, 3076 struct messaging_context *msg_ctx, 3077 const char *domain_name, 3078 const struct GUID *domain_guid, 3079 const char *site_name, 3080 uint32_t flags, 3081 struct netr_DsRGetDCNameInfo **info); 3082 3083/* The following definitions come from libsmb/errormap.c */ 3084 3085NTSTATUS dos_to_ntstatus(uint8 eclass, uint32 ecode); 3086void ntstatus_to_dos(NTSTATUS ntstatus, uint8 *eclass, uint32 *ecode); 3087NTSTATUS werror_to_ntstatus(WERROR error); 3088WERROR ntstatus_to_werror(NTSTATUS error); 3089NTSTATUS map_nt_error_from_wbcErr(wbcErr wbc_err); 3090NTSTATUS map_nt_error_from_gss(uint32 gss_maj, uint32 minor); 3091 3092/* The following definitions come from libsmb/namecache.c */ 3093 3094bool namecache_enable(void); 3095bool namecache_store(const char *name, 3096 int name_type, 3097 int num_names, 3098 struct ip_service *ip_list); 3099bool namecache_fetch(const char *name, 3100 int name_type, 3101 struct ip_service **ip_list, 3102 int *num_names); 3103bool namecache_delete(const char *name, int name_type); 3104void namecache_flush(void); 3105bool namecache_status_store(const char *keyname, int keyname_type, 3106 int name_type, const struct sockaddr_storage *keyip, 3107 const char *srvname); 3108bool namecache_status_fetch(const char *keyname, 3109 int keyname_type, 3110 int name_type, 3111 const struct sockaddr_storage *keyip, 3112 char *srvname_out); 3113 3114/* The following definitions come from libsmb/namequery.c */ 3115 3116bool saf_store( const char *domain, const char *servername ); 3117bool saf_join_store( const char *domain, const char *servername ); 3118bool saf_delete( const char *domain ); 3119char *saf_fetch( const char *domain ); 3120NODE_STATUS_STRUCT *node_status_query(int fd, 3121 struct nmb_name *name, 3122 const struct sockaddr_storage *to_ss, 3123 int *num_names, 3124 struct node_status_extra *extra, 3125 int retry_time); 3126bool name_status_find(const char *q_name, 3127 int q_type, 3128 int type, 3129 const struct sockaddr_storage *to_ss, 3130 fstring name); 3131int ip_service_compare(struct ip_service *ss1, struct ip_service *ss2); 3132struct sockaddr_storage *name_query(int fd, 3133 const char *name, 3134 int name_type, 3135 bool bcast, 3136 bool recurse, 3137 const struct sockaddr_storage *to_ss, 3138 int *count, 3139 int *flags, 3140 bool *timed_out); 3141NTSTATUS name_resolve_bcast(const char *name, 3142 int name_type, 3143 struct ip_service **return_iplist, 3144 int *return_count); 3145NTSTATUS resolve_wins(const char *name, 3146 int name_type, 3147 struct ip_service **return_iplist, 3148 int *return_count); 3149NTSTATUS internal_resolve_name(const char *name, 3150 int name_type, 3151 const char *sitename, 3152 struct ip_service **return_iplist, 3153 int *return_count, 3154 const char *resolve_order); 3155bool resolve_name(const char *name, 3156 struct sockaddr_storage *return_ss, 3157 int name_type, 3158 bool prefer_ipv4); 3159NTSTATUS resolve_name_list(TALLOC_CTX *ctx, 3160 const char *name, 3161 int name_type, 3162 struct sockaddr_storage **return_ss_arr, 3163 unsigned int *p_num_entries); 3164bool find_master_ip(const char *group, struct sockaddr_storage *master_ss); 3165bool get_pdc_ip(const char *domain, struct sockaddr_storage *pss); 3166NTSTATUS get_sorted_dc_list( const char *domain, 3167 const char *sitename, 3168 struct ip_service **ip_list, 3169 int *count, 3170 bool ads_only ); 3171NTSTATUS get_kdc_list( const char *realm, 3172 const char *sitename, 3173 struct ip_service **ip_list, 3174 int *count); 3175 3176/* The following definitions come from libsmb/namequery_dc.c */ 3177 3178bool get_dc_name(const char *domain, 3179 const char *realm, 3180 fstring srv_name, 3181 struct sockaddr_storage *ss_out); 3182 3183/* The following definitions come from libsmb/nmblib.c */ 3184 3185void debug_nmb_packet(struct packet_struct *p); 3186void put_name(char *dest, const char *name, int pad, unsigned int name_type); 3187char *nmb_namestr(const struct nmb_name *n); 3188struct packet_struct *copy_packet(struct packet_struct *packet); 3189void free_packet(struct packet_struct *packet); 3190struct packet_struct *parse_packet(char *buf,int length, 3191 enum packet_type packet_type, 3192 struct in_addr ip, 3193 int port); 3194struct packet_struct *read_packet(int fd,enum packet_type packet_type); 3195void make_nmb_name( struct nmb_name *n, const char *name, int type); 3196bool nmb_name_equal(struct nmb_name *n1, struct nmb_name *n2); 3197int build_packet(char *buf, size_t buflen, struct packet_struct *p); 3198bool send_packet(struct packet_struct *p); 3199struct packet_struct *receive_packet(int fd,enum packet_type type,int t); 3200struct packet_struct *receive_nmb_packet(int fd, int t, int trn_id); 3201struct packet_struct *receive_dgram_packet(int fd, int t, 3202 const char *mailslot_name); 3203bool match_mailslot_name(struct packet_struct *p, const char *mailslot_name); 3204int matching_len_bits(unsigned char *p1, unsigned char *p2, size_t len); 3205void sort_query_replies(char *data, int n, struct in_addr ip); 3206char *name_mangle(TALLOC_CTX *mem_ctx, const char *In, char name_type); 3207int name_extract(unsigned char *buf,size_t buf_len, unsigned int ofs, fstring name); 3208int name_len(unsigned char *s1, size_t buf_len); 3209 3210/* The following definitions come from libsmb/nterr.c */ 3211 3212const char *nt_errstr(NTSTATUS nt_code); 3213const char *get_friendly_nt_error_msg(NTSTATUS nt_code); 3214const char *get_nt_error_c_code(NTSTATUS nt_code); 3215NTSTATUS nt_status_string_to_code(const char *nt_status_str); 3216NTSTATUS nt_status_squash(NTSTATUS nt_status); 3217 3218/* The following definitions come from libsmb/ntlmssp.c */ 3219 3220void debug_ntlmssp_flags(uint32 neg_flags); 3221NTSTATUS ntlmssp_set_username(NTLMSSP_STATE *ntlmssp_state, const char *user) ; 3222NTSTATUS ntlmssp_set_hashes(NTLMSSP_STATE *ntlmssp_state, 3223 const unsigned char lm_hash[16], 3224 const unsigned char nt_hash[16]) ; 3225NTSTATUS ntlmssp_set_password(NTLMSSP_STATE *ntlmssp_state, const char *password) ; 3226NTSTATUS ntlmssp_set_domain(NTLMSSP_STATE *ntlmssp_state, const char *domain) ; 3227NTSTATUS ntlmssp_set_workstation(NTLMSSP_STATE *ntlmssp_state, const char *workstation) ; 3228NTSTATUS ntlmssp_store_response(NTLMSSP_STATE *ntlmssp_state, 3229 DATA_BLOB response) ; 3230void ntlmssp_want_feature_list(NTLMSSP_STATE *ntlmssp_state, char *feature_list); 3231void ntlmssp_want_feature(NTLMSSP_STATE *ntlmssp_state, uint32 feature); 3232NTSTATUS ntlmssp_update(NTLMSSP_STATE *ntlmssp_state, 3233 const DATA_BLOB in, DATA_BLOB *out) ; 3234void ntlmssp_end(NTLMSSP_STATE **ntlmssp_state); 3235DATA_BLOB ntlmssp_weaken_keys(NTLMSSP_STATE *ntlmssp_state, TALLOC_CTX *mem_ctx); 3236NTSTATUS ntlmssp_server_start(NTLMSSP_STATE **ntlmssp_state); 3237NTSTATUS ntlmssp_client_start(NTLMSSP_STATE **ntlmssp_state); 3238 3239/* The following definitions come from libsmb/ntlmssp_sign.c */ 3240 3241NTSTATUS ntlmssp_sign_packet(NTLMSSP_STATE *ntlmssp_state, 3242 const uchar *data, size_t length, 3243 const uchar *whole_pdu, size_t pdu_length, 3244 DATA_BLOB *sig) ; 3245NTSTATUS ntlmssp_check_packet(NTLMSSP_STATE *ntlmssp_state, 3246 const uchar *data, size_t length, 3247 const uchar *whole_pdu, size_t pdu_length, 3248 const DATA_BLOB *sig) ; 3249NTSTATUS ntlmssp_seal_packet(NTLMSSP_STATE *ntlmssp_state, 3250 uchar *data, size_t length, 3251 uchar *whole_pdu, size_t pdu_length, 3252 DATA_BLOB *sig); 3253NTSTATUS ntlmssp_unseal_packet(NTLMSSP_STATE *ntlmssp_state, 3254 uchar *data, size_t length, 3255 uchar *whole_pdu, size_t pdu_length, 3256 DATA_BLOB *sig); 3257NTSTATUS ntlmssp_sign_init(NTLMSSP_STATE *ntlmssp_state); 3258 3259/* The following definitions come from libsmb/passchange.c */ 3260 3261NTSTATUS remote_password_change(const char *remote_machine, const char *user_name, 3262 const char *old_passwd, const char *new_passwd, 3263 char **err_str); 3264 3265/* The following definitions come from libsmb/samlogon_cache.c */ 3266 3267bool netsamlogon_cache_init(void); 3268bool netsamlogon_cache_shutdown(void); 3269void netsamlogon_clear_cached_user(struct netr_SamInfo3 *info3); 3270bool netsamlogon_cache_store(const char *username, struct netr_SamInfo3 *info3); 3271struct netr_SamInfo3 *netsamlogon_cache_get(TALLOC_CTX *mem_ctx, const DOM_SID *user_sid); 3272bool netsamlogon_cache_have(const DOM_SID *user_sid); 3273 3274/* The following definitions come from libsmb/smb_seal.c */ 3275 3276NTSTATUS get_enc_ctx_num(const uint8_t *buf, uint16 *p_enc_ctx_num); 3277bool common_encryption_on(struct smb_trans_enc_state *es); 3278NTSTATUS common_ntlm_decrypt_buffer(NTLMSSP_STATE *ntlmssp_state, char *buf); 3279NTSTATUS common_ntlm_encrypt_buffer(NTLMSSP_STATE *ntlmssp_state, 3280 uint16 enc_ctx_num, 3281 char *buf, 3282 char **ppbuf_out); 3283NTSTATUS common_encrypt_buffer(struct smb_trans_enc_state *es, char *buffer, char **buf_out); 3284NTSTATUS common_decrypt_buffer(struct smb_trans_enc_state *es, char *buf); 3285void common_free_encryption_state(struct smb_trans_enc_state **pp_es); 3286void common_free_enc_buffer(struct smb_trans_enc_state *es, char *buf); 3287bool cli_encryption_on(struct cli_state *cli); 3288void cli_free_encryption_context(struct cli_state *cli); 3289void cli_free_enc_buffer(struct cli_state *cli, char *buf); 3290NTSTATUS cli_decrypt_message(struct cli_state *cli); 3291NTSTATUS cli_encrypt_message(struct cli_state *cli, char *buf, char **buf_out); 3292 3293/* The following definitions come from libsmb/clisigning.c */ 3294 3295bool cli_simple_set_signing(struct cli_state *cli, 3296 const DATA_BLOB user_session_key, 3297 const DATA_BLOB response); 3298bool cli_temp_set_signing(struct cli_state *cli); 3299void cli_calculate_sign_mac(struct cli_state *cli, char *buf, uint32_t *seqnum); 3300bool cli_check_sign_mac(struct cli_state *cli, const char *buf, uint32_t seqnum); 3301bool client_is_signing_on(struct cli_state *cli); 3302bool client_is_signing_allowed(struct cli_state *cli); 3303bool client_is_signing_mandatory(struct cli_state *cli); 3304void cli_set_signing_negotiated(struct cli_state *cli); 3305 3306/* The following definitions come from smbd/signing.c */ 3307 3308struct smbd_server_connection; 3309bool srv_check_sign_mac(struct smbd_server_connection *conn, 3310 const char *inbuf, uint32_t *seqnum); 3311void srv_calculate_sign_mac(struct smbd_server_connection *conn, 3312 char *outbuf, uint32_t seqnum); 3313void srv_cancel_sign_response(struct smbd_server_connection *conn); 3314bool srv_init_signing(struct smbd_server_connection *conn); 3315void srv_set_signing_negotiated(struct smbd_server_connection *conn); 3316bool srv_is_signing_active(struct smbd_server_connection *conn); 3317bool srv_is_signing_negotiated(struct smbd_server_connection *conn); 3318void srv_set_signing(struct smbd_server_connection *conn, 3319 const DATA_BLOB user_session_key, 3320 const DATA_BLOB response); 3321 3322/* The following definitions come from libsmb/smberr.c */ 3323 3324const char *smb_dos_err_name(uint8 e_class, uint16 num); 3325const char *get_dos_error_msg(WERROR result); 3326const char *smb_dos_err_class(uint8 e_class); 3327char *smb_dos_errstr(char *inbuf); 3328WERROR map_werror_from_unix(int error); 3329 3330/* The following definitions come from libsmb/trustdom_cache.c */ 3331 3332bool trustdom_cache_enable(void); 3333bool trustdom_cache_shutdown(void); 3334bool trustdom_cache_store(char* name, char* alt_name, const DOM_SID *sid, 3335 time_t timeout); 3336bool trustdom_cache_fetch(const char* name, DOM_SID* sid); 3337uint32 trustdom_cache_fetch_timestamp( void ); 3338bool trustdom_cache_store_timestamp( uint32 t, time_t timeout ); 3339void trustdom_cache_flush(void); 3340void update_trustdom_cache( void ); 3341 3342/* The following definitions come from libsmb/trusts_util.c */ 3343 3344NTSTATUS trust_pw_change_and_store_it(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, 3345 const char *domain, 3346 const char *account_name, 3347 unsigned char orig_trust_passwd_hash[16], 3348 enum netr_SchannelType sec_channel_type); 3349NTSTATUS trust_pw_find_change_and_store_it(struct rpc_pipe_client *cli, 3350 TALLOC_CTX *mem_ctx, 3351 const char *domain) ; 3352bool enumerate_domain_trusts( TALLOC_CTX *mem_ctx, const char *domain, 3353 char ***domain_names, uint32 *num_domains, 3354 DOM_SID **sids ); 3355 3356/* The following definitions come from libsmb/unexpected.c */ 3357 3358void unexpected_packet(struct packet_struct *p); 3359void clear_unexpected(time_t t); 3360struct packet_struct *receive_unexpected(enum packet_type packet_type, int id, 3361 const char *mailslot_name); 3362 3363/* The following definitions come from locking/brlock.c */ 3364 3365bool brl_same_context(const struct lock_context *ctx1, 3366 const struct lock_context *ctx2); 3367NTSTATUS brl_lock_failed(files_struct *fsp, const struct lock_struct *lock, bool blocking_lock); 3368void brl_init(bool read_only); 3369void brl_shutdown(void); 3370 3371NTSTATUS brl_lock_windows_default(struct byte_range_lock *br_lck, 3372 struct lock_struct *plock, 3373 bool blocking_lock); 3374 3375NTSTATUS brl_lock(struct messaging_context *msg_ctx, 3376 struct byte_range_lock *br_lck, 3377 uint32 smbpid, 3378 struct server_id pid, 3379 br_off start, 3380 br_off size, 3381 enum brl_type lock_type, 3382 enum brl_flavour lock_flav, 3383 bool blocking_lock, 3384 uint32 *psmbpid, 3385 struct blocking_lock_record *blr); 3386bool brl_unlock(struct messaging_context *msg_ctx, 3387 struct byte_range_lock *br_lck, 3388 uint32 smbpid, 3389 struct server_id pid, 3390 br_off start, 3391 br_off size, 3392 enum brl_flavour lock_flav); 3393bool brl_unlock_windows_default(struct messaging_context *msg_ctx, 3394 struct byte_range_lock *br_lck, 3395 const struct lock_struct *plock); 3396bool brl_locktest(struct byte_range_lock *br_lck, 3397 uint32 smbpid, 3398 struct server_id pid, 3399 br_off start, 3400 br_off size, 3401 enum brl_type lock_type, 3402 enum brl_flavour lock_flav); 3403NTSTATUS brl_lockquery(struct byte_range_lock *br_lck, 3404 uint32 *psmbpid, 3405 struct server_id pid, 3406 br_off *pstart, 3407 br_off *psize, 3408 enum brl_type *plock_type, 3409 enum brl_flavour lock_flav); 3410bool brl_lock_cancel(struct byte_range_lock *br_lck, 3411 uint32 smbpid, 3412 struct server_id pid, 3413 br_off start, 3414 br_off size, 3415 enum brl_flavour lock_flav, 3416 struct blocking_lock_record *blr); 3417bool brl_lock_cancel_default(struct byte_range_lock *br_lck, 3418 struct lock_struct *plock); 3419void brl_close_fnum(struct messaging_context *msg_ctx, 3420 struct byte_range_lock *br_lck); 3421int brl_forall(void (*fn)(struct file_id id, struct server_id pid, 3422 enum brl_type lock_type, 3423 enum brl_flavour lock_flav, 3424 br_off start, br_off size, 3425 void *private_data), 3426 void *private_data); 3427struct byte_range_lock *brl_get_locks(TALLOC_CTX *mem_ctx, 3428 files_struct *fsp); 3429struct byte_range_lock *brl_get_locks_readonly(files_struct *fsp); 3430void brl_register_msgs(struct messaging_context *msg_ctx); 3431 3432/* The following definitions come from locking/locking.c */ 3433 3434const char *lock_type_name(enum brl_type lock_type); 3435const char *lock_flav_name(enum brl_flavour lock_flav); 3436void init_strict_lock_struct(files_struct *fsp, 3437 uint32 smbpid, 3438 br_off start, 3439 br_off size, 3440 enum brl_type lock_type, 3441 struct lock_struct *plock); 3442bool strict_lock_default(files_struct *fsp, 3443 struct lock_struct *plock); 3444void strict_unlock_default(files_struct *fsp, 3445 struct lock_struct *plock); 3446NTSTATUS query_lock(files_struct *fsp, 3447 uint32 *psmbpid, 3448 uint64_t *pcount, 3449 uint64_t *poffset, 3450 enum brl_type *plock_type, 3451 enum brl_flavour lock_flav); 3452struct byte_range_lock *do_lock(struct messaging_context *msg_ctx, 3453 files_struct *fsp, 3454 uint32 lock_pid, 3455 uint64_t count, 3456 uint64_t offset, 3457 enum brl_type lock_type, 3458 enum brl_flavour lock_flav, 3459 bool blocking_lock, 3460 NTSTATUS *perr, 3461 uint32 *plock_pid, 3462 struct blocking_lock_record *blr); 3463NTSTATUS do_unlock(struct messaging_context *msg_ctx, 3464 files_struct *fsp, 3465 uint32 lock_pid, 3466 uint64_t count, 3467 uint64_t offset, 3468 enum brl_flavour lock_flav); 3469NTSTATUS do_lock_cancel(files_struct *fsp, 3470 uint32 lock_pid, 3471 uint64_t count, 3472 uint64_t offset, 3473 enum brl_flavour lock_flav, 3474 struct blocking_lock_record *blr); 3475void locking_close_file(struct messaging_context *msg_ctx, 3476 files_struct *fsp); 3477bool locking_init(void); 3478bool locking_init_readonly(void); 3479bool locking_end(void); 3480char *share_mode_str(TALLOC_CTX *ctx, int num, const struct share_mode_entry *e); 3481struct share_mode_lock *get_share_mode_lock(TALLOC_CTX *mem_ctx, 3482 const struct file_id id, 3483 const char *servicepath, 3484 const struct smb_filename *smb_fname, 3485 const struct timespec *old_write_time); 3486struct share_mode_lock *fetch_share_mode_unlocked(TALLOC_CTX *mem_ctx, 3487 const struct file_id id); 3488bool rename_share_filename(struct messaging_context *msg_ctx, 3489 struct share_mode_lock *lck, 3490 const char *servicepath, 3491 const struct smb_filename *smb_fname); 3492void get_file_infos(struct file_id id, 3493 bool *delete_on_close, 3494 struct timespec *write_time); 3495bool is_valid_share_mode_entry(const struct share_mode_entry *e); 3496bool is_deferred_open_entry(const struct share_mode_entry *e); 3497bool is_unused_share_mode_entry(const struct share_mode_entry *e); 3498void set_share_mode(struct share_mode_lock *lck, files_struct *fsp, 3499 uid_t uid, uint16 mid, uint16 op_type); 3500void add_deferred_open(struct share_mode_lock *lck, uint16 mid, 3501 struct timeval request_time, 3502 struct file_id id); 3503bool del_share_mode(struct share_mode_lock *lck, files_struct *fsp); 3504void del_deferred_open_entry(struct share_mode_lock *lck, uint16 mid); 3505bool remove_share_oplock(struct share_mode_lock *lck, files_struct *fsp); 3506bool downgrade_share_oplock(struct share_mode_lock *lck, files_struct *fsp); 3507NTSTATUS can_set_delete_on_close(files_struct *fsp, uint32 dosmode); 3508void set_delete_on_close_token(struct share_mode_lock *lck, const UNIX_USER_TOKEN *tok); 3509void set_delete_on_close_lck(struct share_mode_lock *lck, bool delete_on_close, const UNIX_USER_TOKEN *tok); 3510bool set_delete_on_close(files_struct *fsp, bool delete_on_close, const UNIX_USER_TOKEN *tok); 3511bool set_sticky_write_time(struct file_id fileid, struct timespec write_time); 3512bool set_write_time(struct file_id fileid, struct timespec write_time); 3513int share_mode_forall(void (*fn)(const struct share_mode_entry *, const char *, 3514 const char *, void *), 3515 void *private_data); 3516 3517/* The following definitions come from locking/posix.c */ 3518 3519bool is_posix_locked(files_struct *fsp, 3520 uint64_t *pu_offset, 3521 uint64_t *pu_count, 3522 enum brl_type *plock_type, 3523 enum brl_flavour lock_flav); 3524bool posix_locking_init(bool read_only); 3525bool posix_locking_end(void); 3526void reduce_windows_lock_ref_count(files_struct *fsp, unsigned int dcount); 3527int fd_close_posix(struct files_struct *fsp); 3528bool set_posix_lock_windows_flavour(files_struct *fsp, 3529 uint64_t u_offset, 3530 uint64_t u_count, 3531 enum brl_type lock_type, 3532 const struct lock_context *lock_ctx, 3533 const struct lock_struct *plocks, 3534 int num_locks, 3535 int *errno_ret); 3536bool release_posix_lock_windows_flavour(files_struct *fsp, 3537 uint64_t u_offset, 3538 uint64_t u_count, 3539 enum brl_type deleted_lock_type, 3540 const struct lock_context *lock_ctx, 3541 const struct lock_struct *plocks, 3542 int num_locks); 3543bool set_posix_lock_posix_flavour(files_struct *fsp, 3544 uint64_t u_offset, 3545 uint64_t u_count, 3546 enum brl_type lock_type, 3547 int *errno_ret); 3548bool release_posix_lock_posix_flavour(files_struct *fsp, 3549 uint64_t u_offset, 3550 uint64_t u_count, 3551 const struct lock_context *lock_ctx, 3552 const struct lock_struct *plocks, 3553 int num_locks); 3554 3555/* The following definitions come from modules/vfs_default.c */ 3556 3557ssize_t vfswrap_llistxattr(struct vfs_handle_struct *handle, const char *path, char *list, size_t size); 3558ssize_t vfswrap_flistxattr(struct vfs_handle_struct *handle, struct files_struct *fsp, char *list, size_t size); 3559NTSTATUS vfs_default_init(void); 3560 3561/* The following definitions come from nmbd/asyncdns.c */ 3562 3563int asyncdns_fd(void); 3564void kill_async_dns_child(void); 3565void start_async_dns(void); 3566void run_dns_queue(void); 3567bool queue_dns_query(struct packet_struct *p,struct nmb_name *question); 3568bool queue_dns_query(struct packet_struct *p,struct nmb_name *question); 3569void kill_async_dns_child(void); 3570 3571/* The following definitions come from nmbd/nmbd.c */ 3572 3573struct event_context *nmbd_event_context(void); 3574struct messaging_context *nmbd_messaging_context(void); 3575 3576/* The following definitions come from nmbd/nmbd_become_dmb.c */ 3577 3578void add_domain_names(time_t t); 3579 3580/* The following definitions come from nmbd/nmbd_become_lmb.c */ 3581 3582void insert_permanent_name_into_unicast( struct subnet_record *subrec, 3583 struct nmb_name *nmbname, uint16 nb_type ); 3584void unbecome_local_master_browser(struct subnet_record *subrec, struct work_record *work, 3585 bool force_new_election); 3586void become_local_master_browser(struct subnet_record *subrec, struct work_record *work); 3587void set_workgroup_local_master_browser_name( struct work_record *work, const char *newname); 3588 3589/* The following definitions come from nmbd/nmbd_browserdb.c */ 3590 3591void update_browser_death_time( struct browse_cache_record *browc ); 3592struct browse_cache_record *create_browser_in_lmb_cache( const char *work_name, 3593 const char *browser_name, 3594 struct in_addr ip ); 3595struct browse_cache_record *find_browser_in_lmb_cache( const char *browser_name ); 3596void expire_lmb_browsers( time_t t ); 3597 3598/* The following definitions come from nmbd/nmbd_browsesync.c */ 3599 3600void dmb_expire_and_sync_browser_lists(time_t t); 3601void announce_and_sync_with_domain_master_browser( struct subnet_record *subrec, 3602 struct work_record *work); 3603void collect_all_workgroup_names_from_wins_server(time_t t); 3604void sync_all_dmbs(time_t t); 3605 3606/* The following definitions come from nmbd/nmbd_elections.c */ 3607 3608void check_master_browser_exists(time_t t); 3609void run_elections(time_t t); 3610void process_election(struct subnet_record *subrec, struct packet_struct *p, char *buf); 3611bool check_elections(void); 3612void nmbd_message_election(struct messaging_context *msg, 3613 void *private_data, 3614 uint32_t msg_type, 3615 struct server_id server_id, 3616 DATA_BLOB *data); 3617 3618/* The following definitions come from nmbd/nmbd_incomingdgrams.c */ 3619 3620void tell_become_backup(void); 3621void process_host_announce(struct subnet_record *subrec, struct packet_struct *p, char *buf); 3622void process_workgroup_announce(struct subnet_record *subrec, struct packet_struct *p, char *buf); 3623void process_local_master_announce(struct subnet_record *subrec, struct packet_struct *p, char *buf); 3624void process_master_browser_announce(struct subnet_record *subrec, 3625 struct packet_struct *p,char *buf); 3626void process_lm_host_announce(struct subnet_record *subrec, struct packet_struct *p, char *buf, int len); 3627void process_get_backup_list_request(struct subnet_record *subrec, 3628 struct packet_struct *p,char *buf); 3629void process_reset_browser(struct subnet_record *subrec, 3630 struct packet_struct *p,char *buf); 3631void process_announce_request(struct subnet_record *subrec, struct packet_struct *p, char *buf); 3632void process_lm_announce_request(struct subnet_record *subrec, struct packet_struct *p, char *buf, int len); 3633 3634/* The following definitions come from nmbd/nmbd_incomingrequests.c */ 3635 3636void process_name_release_request(struct subnet_record *subrec, 3637 struct packet_struct *p); 3638void process_name_refresh_request(struct subnet_record *subrec, 3639 struct packet_struct *p); 3640void process_name_registration_request(struct subnet_record *subrec, 3641 struct packet_struct *p); 3642void process_node_status_request(struct subnet_record *subrec, struct packet_struct *p); 3643void process_name_query_request(struct subnet_record *subrec, struct packet_struct *p); 3644 3645/* The following definitions come from nmbd/nmbd_lmhosts.c */ 3646 3647void load_lmhosts_file(const char *fname); 3648bool find_name_in_lmhosts(struct nmb_name *nmbname, struct name_record **namerecp); 3649 3650/* The following definitions come from nmbd/nmbd_logonnames.c */ 3651 3652void add_logon_names(void); 3653 3654/* The following definitions come from nmbd/nmbd_mynames.c */ 3655 3656void register_my_workgroup_one_subnet(struct subnet_record *subrec); 3657bool register_my_workgroup_and_names(void); 3658void release_wins_names(void); 3659void refresh_my_names(time_t t); 3660 3661/* The following definitions come from nmbd/nmbd_namelistdb.c */ 3662 3663void set_samba_nb_type(void); 3664void remove_name_from_namelist(struct subnet_record *subrec, 3665 struct name_record *namerec ); 3666struct name_record *find_name_on_subnet(struct subnet_record *subrec, 3667 const struct nmb_name *nmbname, 3668 bool self_only); 3669struct name_record *find_name_for_remote_broadcast_subnet(struct nmb_name *nmbname, 3670 bool self_only); 3671void update_name_ttl( struct name_record *namerec, int ttl ); 3672bool add_name_to_subnet( struct subnet_record *subrec, 3673 const char *name, 3674 int type, 3675 uint16 nb_flags, 3676 int ttl, 3677 enum name_source source, 3678 int num_ips, 3679 struct in_addr *iplist); 3680void standard_success_register(struct subnet_record *subrec, 3681 struct userdata_struct *userdata, 3682 struct nmb_name *nmbname, uint16 nb_flags, int ttl, 3683 struct in_addr registered_ip); 3684void standard_fail_register( struct subnet_record *subrec, 3685 struct nmb_name *nmbname ); 3686bool find_ip_in_name_record( struct name_record *namerec, struct in_addr ip ); 3687void add_ip_to_name_record( struct name_record *namerec, struct in_addr new_ip ); 3688void remove_ip_from_name_record( struct name_record *namerec, 3689 struct in_addr remove_ip ); 3690void standard_success_release( struct subnet_record *subrec, 3691 struct userdata_struct *userdata, 3692 struct nmb_name *nmbname, 3693 struct in_addr released_ip ); 3694void expire_names(time_t t); 3695void add_samba_names_to_subnet( struct subnet_record *subrec ); 3696void dump_name_record( struct name_record *namerec, XFILE *fp); 3697void dump_all_namelists(void); 3698 3699/* The following definitions come from nmbd/nmbd_namequery.c */ 3700 3701bool query_name(struct subnet_record *subrec, const char *name, int type, 3702 query_name_success_function success_fn, 3703 query_name_fail_function fail_fn, 3704 struct userdata_struct *userdata); 3705bool query_name_from_wins_server(struct in_addr ip_to, 3706 const char *name, int type, 3707 query_name_success_function success_fn, 3708 query_name_fail_function fail_fn, 3709 struct userdata_struct *userdata); 3710 3711/* The following definitions come from nmbd/nmbd_nameregister.c */ 3712 3713void register_name(struct subnet_record *subrec, 3714 const char *name, int type, uint16 nb_flags, 3715 register_name_success_function success_fn, 3716 register_name_fail_function fail_fn, 3717 struct userdata_struct *userdata); 3718void wins_refresh_name(struct name_record *namerec); 3719 3720/* The following definitions come from nmbd/nmbd_namerelease.c */ 3721 3722void release_name(struct subnet_record *subrec, struct name_record *namerec, 3723 release_name_success_function success_fn, 3724 release_name_fail_function fail_fn, 3725 struct userdata_struct *userdata); 3726 3727/* The following definitions come from nmbd/nmbd_nodestatus.c */ 3728 3729bool node_status(struct subnet_record *subrec, struct nmb_name *nmbname, 3730 struct in_addr send_ip, node_status_success_function success_fn, 3731 node_status_fail_function fail_fn, struct userdata_struct *userdata); 3732 3733/* The following definitions come from nmbd/nmbd_packets.c */ 3734 3735uint16 get_nb_flags(char *buf); 3736void set_nb_flags(char *buf, uint16 nb_flags); 3737struct response_record *queue_register_name( struct subnet_record *subrec, 3738 response_function resp_fn, 3739 timeout_response_function timeout_fn, 3740 register_name_success_function success_fn, 3741 register_name_fail_function fail_fn, 3742 struct userdata_struct *userdata, 3743 struct nmb_name *nmbname, 3744 uint16 nb_flags); 3745void queue_wins_refresh(struct nmb_name *nmbname, 3746 response_function resp_fn, 3747 timeout_response_function timeout_fn, 3748 uint16 nb_flags, 3749 struct in_addr refresh_ip, 3750 const char *tag); 3751struct response_record *queue_register_multihomed_name( struct subnet_record *subrec, 3752 response_function resp_fn, 3753 timeout_response_function timeout_fn, 3754 register_name_success_function success_fn, 3755 register_name_fail_function fail_fn, 3756 struct userdata_struct *userdata, 3757 struct nmb_name *nmbname, 3758 uint16 nb_flags, 3759 struct in_addr register_ip, 3760 struct in_addr wins_ip); 3761struct response_record *queue_release_name( struct subnet_record *subrec, 3762 response_function resp_fn, 3763 timeout_response_function timeout_fn, 3764 release_name_success_function success_fn, 3765 release_name_fail_function fail_fn, 3766 struct userdata_struct *userdata, 3767 struct nmb_name *nmbname, 3768 uint16 nb_flags, 3769 struct in_addr release_ip, 3770 struct in_addr dest_ip); 3771struct response_record *queue_query_name( struct subnet_record *subrec, 3772 response_function resp_fn, 3773 timeout_response_function timeout_fn, 3774 query_name_success_function success_fn, 3775 query_name_fail_function fail_fn, 3776 struct userdata_struct *userdata, 3777 struct nmb_name *nmbname); 3778struct response_record *queue_query_name_from_wins_server( struct in_addr to_ip, 3779 response_function resp_fn, 3780 timeout_response_function timeout_fn, 3781 query_name_success_function success_fn, 3782 query_name_fail_function fail_fn, 3783 struct userdata_struct *userdata, 3784 struct nmb_name *nmbname); 3785struct response_record *queue_node_status( struct subnet_record *subrec, 3786 response_function resp_fn, 3787 timeout_response_function timeout_fn, 3788 node_status_success_function success_fn, 3789 node_status_fail_function fail_fn, 3790 struct userdata_struct *userdata, 3791 struct nmb_name *nmbname, 3792 struct in_addr send_ip); 3793void reply_netbios_packet(struct packet_struct *orig_packet, 3794 int rcode, enum netbios_reply_type_code rcv_code, int opcode, 3795 int ttl, char *data,int len); 3796void queue_packet(struct packet_struct *packet); 3797void run_packet_queue(void); 3798void retransmit_or_expire_response_records(time_t t); 3799bool listen_for_packets(bool run_election); 3800bool send_mailslot(bool unique, const char *mailslot,char *buf, size_t len, 3801 const char *srcname, int src_type, 3802 const char *dstname, int dest_type, 3803 struct in_addr dest_ip,struct in_addr src_ip, 3804 int dest_port); 3805 3806/* The following definitions come from nmbd/nmbd_processlogon.c */ 3807 3808bool initialize_nmbd_proxy_logon(void); 3809 3810void process_logon_packet(struct packet_struct *p, char *buf,int len, 3811 const char *mailslot); 3812 3813/* The following definitions come from nmbd/nmbd_responserecordsdb.c */ 3814 3815void remove_response_record(struct subnet_record *subrec, 3816 struct response_record *rrec); 3817struct response_record *make_response_record( struct subnet_record *subrec, 3818 struct packet_struct *p, 3819 response_function resp_fn, 3820 timeout_response_function timeout_fn, 3821 success_function success_fn, 3822 fail_function fail_fn, 3823 struct userdata_struct *userdata); 3824struct response_record *find_response_record(struct subnet_record **ppsubrec, 3825 uint16 id); 3826bool is_refresh_already_queued(struct subnet_record *subrec, struct name_record *namerec); 3827 3828/* The following definitions come from nmbd/nmbd_sendannounce.c */ 3829 3830void send_browser_reset(int reset_type, const char *to_name, int to_type, struct in_addr to_ip); 3831void broadcast_announce_request(struct subnet_record *subrec, struct work_record *work); 3832void announce_my_server_names(time_t t); 3833void announce_my_lm_server_names(time_t t); 3834void reset_announce_timer(void); 3835void announce_myself_to_domain_master_browser(time_t t); 3836void announce_my_servers_removed(void); 3837void announce_remote(time_t t); 3838void browse_sync_remote(time_t t); 3839 3840/* The following definitions come from nmbd/nmbd_serverlistdb.c */ 3841 3842void remove_all_servers(struct work_record *work); 3843struct server_record *find_server_in_workgroup(struct work_record *work, const char *name); 3844void remove_server_from_workgroup(struct work_record *work, struct server_record *servrec); 3845struct server_record *create_server_on_workgroup(struct work_record *work, 3846 const char *name,int servertype, 3847 int ttl, const char *comment); 3848void update_server_ttl(struct server_record *servrec, int ttl); 3849void expire_servers(struct work_record *work, time_t t); 3850void write_browse_list_entry(XFILE *fp, const char *name, uint32 rec_type, 3851 const char *local_master_browser_name, const char *description); 3852void write_browse_list(time_t t, bool force_write); 3853 3854/* The following definitions come from nmbd/nmbd_subnetdb.c */ 3855 3856void close_subnet(struct subnet_record *subrec); 3857struct subnet_record *make_normal_subnet(const struct interface *iface); 3858bool create_subnets(void); 3859bool we_are_a_wins_client(void); 3860struct subnet_record *get_next_subnet_maybe_unicast(struct subnet_record *subrec); 3861struct subnet_record *get_next_subnet_maybe_unicast_or_wins_server(struct subnet_record *subrec); 3862 3863/* The following definitions come from nmbd/nmbd_synclists.c */ 3864 3865void sync_browse_lists(struct work_record *work, 3866 char *name, int nm_type, 3867 struct in_addr ip, bool local, bool servers); 3868void sync_check_completion(void); 3869 3870/* The following definitions come from nmbd/nmbd_winsproxy.c */ 3871 3872void make_wins_proxy_name_query_request( struct subnet_record *subrec, 3873 struct packet_struct *incoming_packet, 3874 struct nmb_name *question_name); 3875 3876/* The following definitions come from nmbd/nmbd_winsserver.c */ 3877 3878struct name_record *find_name_on_wins_subnet(const struct nmb_name *nmbname, bool self_only); 3879bool wins_store_changed_namerec(const struct name_record *namerec); 3880bool add_name_to_wins_subnet(const struct name_record *namerec); 3881bool remove_name_from_wins_namelist(struct name_record *namerec); 3882void dump_wins_subnet_namelist(XFILE *fp); 3883bool packet_is_for_wins_server(struct packet_struct *packet); 3884bool initialise_wins(void); 3885void wins_process_name_refresh_request( struct subnet_record *subrec, 3886 struct packet_struct *p ); 3887void wins_process_name_registration_request(struct subnet_record *subrec, 3888 struct packet_struct *p); 3889void wins_process_multihomed_name_registration_request( struct subnet_record *subrec, 3890 struct packet_struct *p); 3891void fetch_all_active_wins_1b_names(void); 3892void send_wins_name_query_response(int rcode, struct packet_struct *p, 3893 struct name_record *namerec); 3894void wins_process_name_query_request(struct subnet_record *subrec, 3895 struct packet_struct *p); 3896void wins_process_name_release_request(struct subnet_record *subrec, 3897 struct packet_struct *p); 3898void initiate_wins_processing(time_t t); 3899void wins_write_name_record(struct name_record *namerec, XFILE *fp); 3900void wins_write_database(time_t t, bool background); 3901void nmbd_wins_new_entry(struct messaging_context *msg, 3902 void *private_data, 3903 uint32_t msg_type, 3904 struct server_id server_id, 3905 DATA_BLOB *data); 3906 3907/* The following definitions come from nmbd/nmbd_workgroupdb.c */ 3908 3909struct work_record *find_workgroup_on_subnet(struct subnet_record *subrec, 3910 const char *name); 3911struct work_record *create_workgroup_on_subnet(struct subnet_record *subrec, 3912 const char *name, int ttl); 3913void update_workgroup_ttl(struct work_record *work, int ttl); 3914void initiate_myworkgroup_startup(struct subnet_record *subrec, struct work_record *work); 3915void dump_workgroups(bool force_write); 3916void expire_workgroups_and_servers(time_t t); 3917 3918/* The following definitions come from param/loadparm.c */ 3919 3920char *lp_smb_ports(void); 3921char *lp_dos_charset(void); 3922char *lp_unix_charset(void); 3923char *lp_display_charset(void); 3924char *lp_logfile(void); 3925char *lp_configfile(void); 3926char *lp_smb_passwd_file(void); 3927char *lp_private_dir(void); 3928char *lp_serverstring(void); 3929int lp_printcap_cache_time(void); 3930char *lp_addport_cmd(void); 3931char *lp_enumports_cmd(void); 3932char *lp_addprinter_cmd(void); 3933char *lp_deleteprinter_cmd(void); 3934char *lp_os2_driver_map(void); 3935char *lp_lockdir(void); 3936char *lp_statedir(void); 3937char *lp_cachedir(void); 3938char *lp_piddir(void); 3939char *lp_mangling_method(void); 3940int lp_mangle_prefix(void); 3941char *lp_utmpdir(void); 3942char *lp_wtmpdir(void); 3943bool lp_utmp(void); 3944char *lp_rootdir(void); 3945char *lp_defaultservice(void); 3946char *lp_msg_command(void); 3947char *lp_get_quota_command(void); 3948char *lp_set_quota_command(void); 3949char *lp_auto_services(void); 3950char *lp_passwd_program(void); 3951char *lp_passwd_chat(void); 3952char *lp_passwordserver(void); 3953char *lp_name_resolve_order(void); 3954char *lp_realm(void); 3955const char *lp_afs_username_map(void); 3956int lp_afs_token_lifetime(void); 3957char *lp_log_nt_token_command(void); 3958char *lp_username_map(void); 3959const char *lp_logon_script(void); 3960const char *lp_logon_path(void); 3961const char *lp_logon_drive(void); 3962const char *lp_logon_home(void); 3963char *lp_remote_announce(void); 3964char *lp_remote_browse_sync(void); 3965bool lp_nmbd_bind_explicit_broadcast(void); 3966const char **lp_wins_server_list(void); 3967const char **lp_interfaces(void); 3968const char *lp_socket_address(void); 3969char *lp_nis_home_map_name(void); 3970const char **lp_netbios_aliases(void); 3971const char *lp_passdb_backend(void); 3972const char **lp_preload_modules(void); 3973char *lp_panic_action(void); 3974char *lp_adduser_script(void); 3975char *lp_renameuser_script(void); 3976char *lp_deluser_script(void); 3977const char *lp_guestaccount(void); 3978char *lp_addgroup_script(void); 3979char *lp_delgroup_script(void); 3980char *lp_addusertogroup_script(void); 3981char *lp_deluserfromgroup_script(void); 3982char *lp_setprimarygroup_script(void); 3983char *lp_addmachine_script(void); 3984char *lp_shutdown_script(void); 3985char *lp_abort_shutdown_script(void); 3986char *lp_username_map_script(void); 3987char *lp_check_password_script(void); 3988char *lp_wins_hook(void); 3989const char *lp_template_homedir(void); 3990const char *lp_template_shell(void); 3991const char *lp_winbind_separator(void); 3992int lp_acl_compatibility(void); 3993bool lp_winbind_enum_users(void); 3994bool lp_winbind_enum_groups(void); 3995bool lp_winbind_use_default_domain(void); 3996bool lp_winbind_trusted_domains_only(void); 3997bool lp_winbind_nested_groups(void); 3998int lp_winbind_expand_groups(void); 3999bool lp_winbind_refresh_tickets(void); 4000bool lp_winbind_offline_logon(void); 4001bool lp_winbind_normalize_names(void); 4002bool lp_winbind_rpc_only(void); 4003bool lp_create_krb5_conf(void); 4004const char **lp_idmap_domains(void); 4005const char *lp_idmap_backend(void); 4006char *lp_idmap_alloc_backend(void); 4007int lp_idmap_cache_time(void); 4008int lp_idmap_negative_cache_time(void); 4009int lp_keepalive(void); 4010bool lp_passdb_expand_explicit(void); 4011char *lp_ldap_suffix(void); 4012char *lp_ldap_admin_dn(void); 4013int lp_ldap_ssl(void); 4014bool lp_ldap_ssl_ads(void); 4015int lp_ldap_deref(void); 4016int lp_ldap_follow_referral(void); 4017int lp_ldap_passwd_sync(void); 4018bool lp_ldap_delete_dn(void); 4019int lp_ldap_replication_sleep(void); 4020int lp_ldap_timeout(void); 4021int lp_ldap_connection_timeout(void); 4022int lp_ldap_page_size(void); 4023int lp_ldap_debug_level(void); 4024int lp_ldap_debug_threshold(void); 4025char *lp_add_share_cmd(void); 4026char *lp_change_share_cmd(void); 4027char *lp_delete_share_cmd(void); 4028char *lp_usershare_path(void); 4029const char **lp_usershare_prefix_allow_list(void); 4030const char **lp_usershare_prefix_deny_list(void); 4031const char **lp_eventlog_list(void); 4032bool lp_registry_shares(void); 4033bool lp_usershare_allow_guests(void); 4034bool lp_usershare_owner_only(void); 4035bool lp_disable_netbios(void); 4036bool lp_reset_on_zero_vc(void); 4037bool lp_ms_add_printer_wizard(void); 4038bool lp_dns_proxy(void); 4039bool lp_wins_support(void); 4040bool lp_we_are_a_wins_server(void); 4041bool lp_wins_proxy(void); 4042bool lp_local_master(void); 4043bool lp_domain_logons(void); 4044const char **lp_init_logon_delayed_hosts(void); 4045int lp_init_logon_delay(void); 4046bool lp_load_printers(void); 4047bool lp_readraw(void); 4048bool lp_large_readwrite(void); 4049bool lp_writeraw(void); 4050bool lp_null_passwords(void); 4051bool lp_obey_pam_restrictions(void); 4052bool lp_encrypted_passwords(void); 4053bool lp_update_encrypted(void); 4054int lp_client_schannel(void); 4055int lp_server_schannel(void); 4056bool lp_syslog_only(void); 4057bool lp_timestamp_logs(void); 4058bool lp_debug_prefix_timestamp(void); 4059bool lp_debug_hires_timestamp(void); 4060bool lp_debug_pid(void); 4061bool lp_debug_uid(void); 4062bool lp_debug_class(void); 4063bool lp_enable_core_files(void); 4064bool lp_browse_list(void); 4065bool lp_nis_home_map(void); 4066bool lp_bind_interfaces_only(void); 4067bool lp_pam_password_change(void); 4068bool lp_unix_password_sync(void); 4069bool lp_passwd_chat_debug(void); 4070int lp_passwd_chat_timeout(void); 4071bool lp_nt_pipe_support(void); 4072bool lp_nt_status_support(void); 4073bool lp_stat_cache(void); 4074int lp_max_stat_cache_size(void); 4075bool lp_allow_trusted_domains(void); 4076bool lp_map_untrusted_to_domain(void); 4077int lp_restrict_anonymous(void); 4078bool lp_lanman_auth(void); 4079bool lp_ntlm_auth(void); 4080bool lp_client_plaintext_auth(void); 4081bool lp_client_lanman_auth(void); 4082bool lp_client_ntlmv2_auth(void); 4083bool lp_host_msdfs(void); 4084bool lp_kernel_oplocks(void); 4085bool lp_enhanced_browsing(void); 4086bool lp_use_mmap(void); 4087bool lp_unix_extensions(void); 4088bool lp_use_spnego(void); 4089bool lp_client_use_spnego(void); 4090bool lp_hostname_lookups(void); 4091bool lp_change_notify(const struct share_params *p ); 4092bool lp_kernel_change_notify(const struct share_params *p ); 4093char * lp_dedicated_keytab_file(void); 4094int lp_kerberos_method(void); 4095bool lp_defer_sharing_violations(void); 4096bool lp_enable_privileges(void); 4097bool lp_enable_asu_support(void); 4098int lp_os_level(void); 4099int lp_max_ttl(void); 4100int lp_max_wins_ttl(void); 4101int lp_min_wins_ttl(void); 4102int lp_max_log_size(void); 4103int lp_max_open_files(void); 4104int lp_open_files_db_hash_size(void); 4105int lp_maxxmit(void); 4106int lp_maxmux(void); 4107int lp_passwordlevel(void); 4108int lp_usernamelevel(void); 4109int lp_deadtime(void); 4110bool lp_getwd_cache(void); 4111int lp_maxprotocol(void); 4112int lp_minprotocol(void); 4113int lp_security(void); 4114const char **lp_auth_methods(void); 4115bool lp_paranoid_server_security(void); 4116int lp_maxdisksize(void); 4117int lp_lpqcachetime(void); 4118int lp_max_smbd_processes(void); 4119bool _lp_disable_spoolss(void); 4120int lp_syslog(void); 4121int lp_lm_announce(void); 4122int lp_lm_interval(void); 4123int lp_machine_password_timeout(void); 4124int lp_map_to_guest(void); 4125int lp_oplock_break_wait_time(void); 4126int lp_lock_spin_time(void); 4127int lp_usershare_max_shares(void); 4128const char *lp_socket_options(void); 4129int lp_config_backend(void); 4130char *lp_preexec(int ); 4131char *lp_postexec(int ); 4132char *lp_rootpreexec(int ); 4133char *lp_rootpostexec(int ); 4134char *lp_servicename(int ); 4135const char *lp_const_servicename(int ); 4136char *lp_pathname(int ); 4137char *lp_dontdescend(int ); 4138char *lp_username(int ); 4139const char **lp_invalid_users(int ); 4140const char **lp_valid_users(int ); 4141const char **lp_admin_users(int ); 4142const char **lp_svcctl_list(void); 4143char *lp_cups_options(int ); 4144char *lp_cups_server(void); 4145int lp_cups_encrypt(void); 4146char *lp_iprint_server(void); 4147int lp_cups_connection_timeout(void); 4148const char *lp_ctdbd_socket(void); 4149const char **lp_cluster_addresses(void); 4150bool lp_clustering(void); 4151int lp_ctdb_timeout(void); 4152char *lp_printcommand(int ); 4153char *lp_lpqcommand(int ); 4154char *lp_lprmcommand(int ); 4155char *lp_lppausecommand(int ); 4156char *lp_lpresumecommand(int ); 4157char *lp_queuepausecommand(int ); 4158char *lp_queueresumecommand(int ); 4159const char *lp_printjob_username(int ); 4160const char **lp_hostsallow(int ); 4161const char **lp_hostsdeny(int ); 4162char *lp_magicscript(int ); 4163char *lp_magicoutput(int ); 4164char *lp_comment(int ); 4165char *lp_force_user(int ); 4166char *lp_force_group(int ); 4167const char **lp_readlist(int ); 4168const char **lp_writelist(int ); 4169const char **lp_printer_admin(int ); 4170char *lp_fstype(int ); 4171const char **lp_vfs_objects(int ); 4172char *lp_msdfs_proxy(int ); 4173char *lp_veto_files(int ); 4174char *lp_hide_files(int ); 4175char *lp_veto_oplocks(int ); 4176bool lp_msdfs_root(int ); 4177char *lp_aio_write_behind(int ); 4178char *lp_dfree_command(int ); 4179bool lp_autoloaded(int ); 4180bool lp_preexec_close(int ); 4181bool lp_rootpreexec_close(int ); 4182int lp_casesensitive(int ); 4183bool lp_preservecase(int ); 4184bool lp_shortpreservecase(int ); 4185bool lp_hide_dot_files(int ); 4186bool lp_hide_special_files(int ); 4187bool lp_hideunreadable(int ); 4188bool lp_hideunwriteable_files(int ); 4189bool lp_browseable(int ); 4190bool lp_access_based_share_enum(int ); 4191bool lp_readonly(int ); 4192bool lp_no_set_dir(int ); 4193bool lp_guest_ok(int ); 4194bool lp_guest_only(int ); 4195bool lp_administrative_share(int ); 4196bool lp_print_ok(int ); 4197bool lp_map_hidden(int ); 4198bool lp_map_archive(int ); 4199bool lp_store_dos_attributes(int ); 4200bool lp_dmapi_support(int ); 4201bool lp_locking(const struct share_params *p ); 4202int lp_strict_locking(const struct share_params *p ); 4203bool lp_posix_locking(const struct share_params *p ); 4204bool lp_share_modes(int ); 4205bool lp_oplocks(int ); 4206bool lp_level2_oplocks(int ); 4207bool lp_onlyuser(int ); 4208bool lp_manglednames(const struct share_params *p ); 4209bool lp_widelinks(int ); 4210bool lp_symlinks(int ); 4211bool lp_syncalways(int ); 4212bool lp_strict_allocate(int ); 4213bool lp_strict_sync(int ); 4214bool lp_map_system(int ); 4215bool lp_delete_readonly(int ); 4216bool lp_fake_oplocks(int ); 4217bool lp_recursive_veto_delete(int ); 4218bool lp_dos_filemode(int ); 4219bool lp_dos_filetimes(int ); 4220bool lp_dos_filetime_resolution(int ); 4221bool lp_fake_dir_create_times(int); 4222bool lp_blocking_locks(int ); 4223bool lp_inherit_perms(int ); 4224bool lp_inherit_acls(int ); 4225bool lp_inherit_owner(int ); 4226bool lp_use_client_driver(int ); 4227bool lp_default_devmode(int ); 4228bool lp_force_printername(int ); 4229bool lp_nt_acl_support(int ); 4230bool lp_force_unknown_acl_user(int ); 4231bool lp_ea_support(int ); 4232bool _lp_use_sendfile(int ); 4233bool lp_profile_acls(int ); 4234bool lp_map_acl_inherit(int ); 4235bool lp_afs_share(int ); 4236bool lp_acl_check_permissions(int ); 4237bool lp_acl_group_control(int ); 4238bool lp_acl_map_full_control(int ); 4239int lp_create_mask(int ); 4240int lp_force_create_mode(int ); 4241int lp_security_mask(int ); 4242int lp_force_security_mode(int ); 4243int lp_dir_mask(int ); 4244int lp_force_dir_mode(int ); 4245int lp_dir_security_mask(int ); 4246int lp_force_dir_security_mode(int ); 4247int lp_max_connections(int ); 4248int lp_defaultcase(int ); 4249int lp_minprintspace(int ); 4250int lp_printing(int ); 4251int lp_max_reported_jobs(int ); 4252int lp_oplock_contention_limit(int ); 4253int lp_csc_policy(int ); 4254int lp_write_cache_size(int ); 4255int lp_block_size(int ); 4256int lp_dfree_cache_time(int ); 4257int lp_allocation_roundup_size(int ); 4258int lp_aio_read_size(int ); 4259int lp_aio_write_size(int ); 4260int lp_map_readonly(int ); 4261int lp_directory_name_cache_size(int ); 4262int lp_smb_encrypt(int ); 4263char lp_magicchar(const struct share_params *p ); 4264int lp_winbind_cache_time(void); 4265int lp_winbind_reconnect_delay(void); 4266const char **lp_winbind_nss_info(void); 4267int lp_algorithmic_rid_base(void); 4268int lp_name_cache_timeout(void); 4269int lp_client_signing(void); 4270int lp_server_signing(void); 4271int lp_client_ldap_sasl_wrapping(void); 4272char *lp_parm_talloc_string(int snum, const char *type, const char *option, const char *def); 4273const char *lp_parm_const_string(int snum, const char *type, const char *option, const char *def); 4274const char **lp_parm_string_list(int snum, const char *type, const char *option, const char **def); 4275int lp_parm_int(int snum, const char *type, const char *option, int def); 4276unsigned long lp_parm_ulong(int snum, const char *type, const char *option, unsigned long def); 4277bool lp_parm_bool(int snum, const char *type, const char *option, bool def); 4278int lp_parm_enum(int snum, const char *type, const char *option, 4279 const struct enum_list *_enum, int def); 4280bool lp_add_home(const char *pszHomename, int iDefaultService, 4281 const char *user, const char *pszHomedir); 4282int lp_add_service(const char *pszService, int iDefaultService); 4283bool lp_add_printer(const char *pszPrintername, int iDefaultService); 4284bool lp_parameter_is_valid(const char *pszParmName); 4285bool lp_parameter_is_global(const char *pszParmName); 4286bool lp_parameter_is_canonical(const char *parm_name); 4287bool lp_canonicalize_parameter(const char *parm_name, const char **canon_parm, 4288 bool *inverse); 4289bool lp_canonicalize_parameter_with_value(const char *parm_name, 4290 const char *val, 4291 const char **canon_parm, 4292 const char **canon_val); 4293void show_parameter_list(void); 4294bool lp_string_is_valid_boolean(const char *parm_value); 4295bool lp_invert_boolean(const char *str, const char **inverse_str); 4296bool lp_canonicalize_boolean(const char *str, const char**canon_str); 4297bool service_ok(int iService); 4298bool process_registry_service(const char *service_name); 4299bool process_registry_shares(void); 4300bool lp_config_backend_is_registry(void); 4301bool lp_config_backend_is_file(void); 4302bool lp_file_list_changed(void); 4303bool lp_idmap_uid(uid_t *low, uid_t *high); 4304bool lp_idmap_gid(gid_t *low, gid_t *high); 4305const char *lp_ldap_machine_suffix(void); 4306const char *lp_ldap_user_suffix(void); 4307const char *lp_ldap_group_suffix(void); 4308const char *lp_ldap_idmap_suffix(void); 4309void *lp_local_ptr_by_snum(int snum, void *ptr); 4310bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue); 4311void init_locals(void); 4312bool lp_is_default(int snum, struct parm_struct *parm); 4313bool dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal); 4314struct parm_struct *lp_get_parameter(const char *param_name); 4315struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters); 4316bool lp_snum_ok(int iService); 4317void lp_add_one_printer(const char *name, const char *comment, void *pdata); 4318bool lp_loaded(void); 4319void lp_killunused(bool (*snumused) (int)); 4320void lp_kill_all_services(void); 4321void lp_killservice(int iServiceIn); 4322const char* server_role_str(uint32 role); 4323enum usershare_err parse_usershare_file(TALLOC_CTX *ctx, 4324 SMB_STRUCT_STAT *psbuf, 4325 const char *servicename, 4326 int snum, 4327 char **lines, 4328 int numlines, 4329 char **pp_sharepath, 4330 char **pp_comment, 4331 SEC_DESC **ppsd, 4332 bool *pallow_guest); 4333int load_usershare_service(const char *servicename); 4334int load_usershare_shares(void); 4335void gfree_loadparm(void); 4336void lp_set_in_client(bool b); 4337bool lp_is_in_client(void); 4338bool lp_load_ex(const char *pszFname, 4339 bool global_only, 4340 bool save_defaults, 4341 bool add_ipc, 4342 bool initialize_globals, 4343 bool allow_include_registry, 4344 bool allow_registry_shares); 4345bool lp_load(const char *pszFname, 4346 bool global_only, 4347 bool save_defaults, 4348 bool add_ipc, 4349 bool initialize_globals); 4350bool lp_load_initial_only(const char *pszFname); 4351bool lp_load_with_registry_shares(const char *pszFname, 4352 bool global_only, 4353 bool save_defaults, 4354 bool add_ipc, 4355 bool initialize_globals); 4356int lp_numservices(void); 4357void lp_dump(FILE *f, bool show_defaults, int maxtoprint); 4358void lp_dump_one(FILE * f, bool show_defaults, int snum); 4359int lp_servicenumber(const char *pszServiceName); 4360bool share_defined(const char *service_name); 4361struct share_params *get_share_params(TALLOC_CTX *mem_ctx, 4362 const char *sharename); 4363struct share_iterator *share_list_all(TALLOC_CTX *mem_ctx); 4364struct share_params *next_share(struct share_iterator *list); 4365struct share_params *next_printer(struct share_iterator *list); 4366struct share_params *snum2params_static(int snum); 4367const char *volume_label(int snum); 4368int lp_server_role(void); 4369bool lp_domain_master(void); 4370bool lp_preferred_master(void); 4371void lp_remove_service(int snum); 4372void lp_copy_service(int snum, const char *new_name); 4373int lp_default_server_announce(void); 4374int lp_major_announce_version(void); 4375int lp_minor_announce_version(void); 4376void lp_set_name_resolve_order(const char *new_order); 4377const char *lp_printername(int snum); 4378void lp_set_logfile(const char *name); 4379int lp_maxprintjobs(int snum); 4380const char *lp_printcapname(void); 4381bool lp_disable_spoolss( void ); 4382void lp_set_spoolss_state( uint32 state ); 4383uint32 lp_get_spoolss_state( void ); 4384bool lp_use_sendfile(int snum, struct smb_signing_state *signing_state); 4385void set_use_sendfile(int snum, bool val); 4386void set_store_dos_attributes(int snum, bool val); 4387void lp_set_mangling_method(const char *new_method); 4388bool lp_posix_pathnames(void); 4389void lp_set_posix_pathnames(void); 4390enum brl_flavour lp_posix_cifsu_locktype(files_struct *fsp); 4391void lp_set_posix_default_cifsx_readwrite_locktype(enum brl_flavour val); 4392int lp_min_receive_file_size(void); 4393char* lp_perfcount_module(void); 4394void lp_set_passdb_backend(const char *backend); 4395void widelinks_warning(int snum); 4396 4397/* The following definitions come from param/util.c */ 4398 4399uint32 get_int_param( const char* param ); 4400char* get_string_param( const char* param ); 4401 4402/* The following definitions come from passdb/login_cache.c */ 4403 4404bool login_cache_init(void); 4405bool login_cache_shutdown(void); 4406LOGIN_CACHE * login_cache_read(struct samu *sampass); 4407bool login_cache_write(const struct samu *sampass, LOGIN_CACHE entry); 4408bool login_cache_delentry(const struct samu *sampass); 4409 4410/* The following definitions come from passdb/lookup_sid.c */ 4411 4412bool lookup_name(TALLOC_CTX *mem_ctx, 4413 const char *full_name, int flags, 4414 const char **ret_domain, const char **ret_name, 4415 DOM_SID *ret_sid, enum lsa_SidType *ret_type); 4416bool lookup_name_smbconf(TALLOC_CTX *mem_ctx, 4417 const char *full_name, int flags, 4418 const char **ret_domain, const char **ret_name, 4419 DOM_SID *ret_sid, enum lsa_SidType *ret_type); 4420NTSTATUS lookup_sids(TALLOC_CTX *mem_ctx, int num_sids, 4421 const DOM_SID **sids, int level, 4422 struct lsa_dom_info **ret_domains, 4423 struct lsa_name_info **ret_names); 4424bool lookup_sid(TALLOC_CTX *mem_ctx, const DOM_SID *sid, 4425 const char **ret_domain, const char **ret_name, 4426 enum lsa_SidType *ret_type); 4427void store_uid_sid_cache(const DOM_SID *psid, uid_t uid); 4428void store_gid_sid_cache(const DOM_SID *psid, gid_t gid); 4429void uid_to_sid(DOM_SID *psid, uid_t uid); 4430void gid_to_sid(DOM_SID *psid, gid_t gid); 4431bool sid_to_uid(const DOM_SID *psid, uid_t *puid); 4432bool sid_to_gid(const DOM_SID *psid, gid_t *pgid); 4433 4434/* The following definitions come from passdb/machine_sid.c */ 4435 4436DOM_SID *get_global_sam_sid(void); 4437void reset_global_sam_sid(void) ; 4438bool sid_check_is_domain(const DOM_SID *sid); 4439bool sid_check_is_in_our_domain(const DOM_SID *sid); 4440 4441/* The following definitions come from passdb/passdb.c */ 4442 4443const char *my_sam_name(void); 4444struct samu *samu_new( TALLOC_CTX *ctx ); 4445NTSTATUS samu_set_unix(struct samu *user, const struct passwd *pwd); 4446NTSTATUS samu_alloc_rid_unix(struct samu *user, const struct passwd *pwd); 4447char *pdb_encode_acct_ctrl(uint32 acct_ctrl, size_t length); 4448uint32 pdb_decode_acct_ctrl(const char *p); 4449void pdb_sethexpwd(char p[33], const unsigned char *pwd, uint32 acct_ctrl); 4450bool pdb_gethexpwd(const char *p, unsigned char *pwd); 4451void pdb_sethexhours(char *p, const unsigned char *hours); 4452bool pdb_gethexhours(const char *p, unsigned char *hours); 4453int algorithmic_rid_base(void); 4454uid_t algorithmic_pdb_user_rid_to_uid(uint32 user_rid); 4455uid_t max_algorithmic_uid(void); 4456uint32 algorithmic_pdb_uid_to_user_rid(uid_t uid); 4457gid_t pdb_group_rid_to_gid(uint32 group_rid); 4458gid_t max_algorithmic_gid(void); 4459uint32 algorithmic_pdb_gid_to_group_rid(gid_t gid); 4460bool algorithmic_pdb_rid_is_user(uint32 rid); 4461bool lookup_global_sam_name(const char *name, int flags, uint32_t *rid, 4462 enum lsa_SidType *type); 4463NTSTATUS local_password_change(const char *user_name, 4464 int local_flags, 4465 const char *new_passwd, 4466 char **pp_err_str, 4467 char **pp_msg_str); 4468bool init_samu_from_buffer(struct samu *sampass, uint32_t level, 4469 uint8 *buf, uint32 buflen); 4470uint32 init_buffer_from_samu (uint8 **buf, struct samu *sampass, bool size_only); 4471bool pdb_copy_sam_account(struct samu *dst, struct samu *src ); 4472bool pdb_update_bad_password_count(struct samu *sampass, bool *updated); 4473bool pdb_update_autolock_flag(struct samu *sampass, bool *updated); 4474bool pdb_increment_bad_password_count(struct samu *sampass); 4475bool is_dc_trusted_domain_situation(const char *domain_name); 4476bool get_trust_pw_clear(const char *domain, char **ret_pwd, 4477 const char **account_name, 4478 enum netr_SchannelType *channel); 4479bool get_trust_pw_hash(const char *domain, uint8 ret_pwd[16], 4480 const char **account_name, 4481 enum netr_SchannelType *channel); 4482struct samr_LogonHours get_logon_hours_from_pdb(TALLOC_CTX *mem_ctx, 4483 struct samu *pw); 4484/* The following definitions come from passdb/pdb_compat.c */ 4485 4486uint32 pdb_get_user_rid (const struct samu *sampass); 4487uint32 pdb_get_group_rid (struct samu *sampass); 4488bool pdb_set_user_sid_from_rid (struct samu *sampass, uint32 rid, enum pdb_value_state flag); 4489bool pdb_set_group_sid_from_rid (struct samu *sampass, uint32 grid, enum pdb_value_state flag); 4490 4491/* The following definitions come from passdb/pdb_get_set.c */ 4492 4493uint32 pdb_get_acct_ctrl(const struct samu *sampass); 4494time_t pdb_get_logon_time(const struct samu *sampass); 4495time_t pdb_get_logoff_time(const struct samu *sampass); 4496time_t pdb_get_kickoff_time(const struct samu *sampass); 4497time_t pdb_get_bad_password_time(const struct samu *sampass); 4498time_t pdb_get_pass_last_set_time(const struct samu *sampass); 4499time_t pdb_get_pass_can_change_time(const struct samu *sampass); 4500time_t pdb_get_pass_can_change_time_noncalc(const struct samu *sampass); 4501time_t pdb_get_pass_must_change_time(const struct samu *sampass); 4502bool pdb_get_pass_can_change(const struct samu *sampass); 4503uint16 pdb_get_logon_divs(const struct samu *sampass); 4504uint32 pdb_get_hours_len(const struct samu *sampass); 4505const uint8 *pdb_get_hours(const struct samu *sampass); 4506const uint8 *pdb_get_nt_passwd(const struct samu *sampass); 4507const uint8 *pdb_get_lanman_passwd(const struct samu *sampass); 4508const uint8 *pdb_get_pw_history(const struct samu *sampass, uint32 *current_hist_len); 4509const char *pdb_get_plaintext_passwd(const struct samu *sampass); 4510const DOM_SID *pdb_get_user_sid(const struct samu *sampass); 4511const DOM_SID *pdb_get_group_sid(struct samu *sampass); 4512enum pdb_value_state pdb_get_init_flags(const struct samu *sampass, enum pdb_elements element); 4513const char *pdb_get_username(const struct samu *sampass); 4514const char *pdb_get_domain(const struct samu *sampass); 4515const char *pdb_get_nt_username(const struct samu *sampass); 4516const char *pdb_get_fullname(const struct samu *sampass); 4517const char *pdb_get_homedir(const struct samu *sampass); 4518const char *pdb_get_dir_drive(const struct samu *sampass); 4519const char *pdb_get_logon_script(const struct samu *sampass); 4520const char *pdb_get_profile_path(const struct samu *sampass); 4521const char *pdb_get_acct_desc(const struct samu *sampass); 4522const char *pdb_get_workstations(const struct samu *sampass); 4523const char *pdb_get_comment(const struct samu *sampass); 4524const char *pdb_get_munged_dial(const struct samu *sampass); 4525uint16 pdb_get_bad_password_count(const struct samu *sampass); 4526uint16 pdb_get_logon_count(const struct samu *sampass); 4527uint32 pdb_get_unknown_6(const struct samu *sampass); 4528void *pdb_get_backend_private_data(const struct samu *sampass, const struct pdb_methods *my_methods); 4529bool pdb_set_acct_ctrl(struct samu *sampass, uint32 acct_ctrl, enum pdb_value_state flag); 4530bool pdb_set_logon_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag); 4531bool pdb_set_logoff_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag); 4532bool pdb_set_kickoff_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag); 4533bool pdb_set_bad_password_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag); 4534bool pdb_set_pass_can_change_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag); 4535bool pdb_set_pass_must_change_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag); 4536bool pdb_set_pass_last_set_time(struct samu *sampass, time_t mytime, enum pdb_value_state flag); 4537bool pdb_set_hours_len(struct samu *sampass, uint32 len, enum pdb_value_state flag); 4538bool pdb_set_logon_divs(struct samu *sampass, uint16 hours, enum pdb_value_state flag); 4539bool pdb_set_init_flags(struct samu *sampass, enum pdb_elements element, enum pdb_value_state value_flag); 4540bool pdb_set_user_sid(struct samu *sampass, const DOM_SID *u_sid, enum pdb_value_state flag); 4541bool pdb_set_user_sid_from_string(struct samu *sampass, fstring u_sid, enum pdb_value_state flag); 4542bool pdb_set_group_sid(struct samu *sampass, const DOM_SID *g_sid, enum pdb_value_state flag); 4543bool pdb_set_username(struct samu *sampass, const char *username, enum pdb_value_state flag); 4544bool pdb_set_domain(struct samu *sampass, const char *domain, enum pdb_value_state flag); 4545bool pdb_set_nt_username(struct samu *sampass, const char *nt_username, enum pdb_value_state flag); 4546bool pdb_set_fullname(struct samu *sampass, const char *full_name, enum pdb_value_state flag); 4547bool pdb_set_logon_script(struct samu *sampass, const char *logon_script, enum pdb_value_state flag); 4548bool pdb_set_profile_path(struct samu *sampass, const char *profile_path, enum pdb_value_state flag); 4549bool pdb_set_dir_drive(struct samu *sampass, const char *dir_drive, enum pdb_value_state flag); 4550bool pdb_set_homedir(struct samu *sampass, const char *home_dir, enum pdb_value_state flag); 4551bool pdb_set_acct_desc(struct samu *sampass, const char *acct_desc, enum pdb_value_state flag); 4552bool pdb_set_workstations(struct samu *sampass, const char *workstations, enum pdb_value_state flag); 4553bool pdb_set_comment(struct samu *sampass, const char *comment, enum pdb_value_state flag); 4554bool pdb_set_munged_dial(struct samu *sampass, const char *munged_dial, enum pdb_value_state flag); 4555bool pdb_set_nt_passwd(struct samu *sampass, const uint8 pwd[NT_HASH_LEN], enum pdb_value_state flag); 4556bool pdb_set_lanman_passwd(struct samu *sampass, const uint8 pwd[LM_HASH_LEN], enum pdb_value_state flag); 4557bool pdb_set_pw_history(struct samu *sampass, const uint8 *pwd, uint32 historyLen, enum pdb_value_state flag); 4558bool pdb_set_plaintext_pw_only(struct samu *sampass, const char *password, enum pdb_value_state flag); 4559bool pdb_set_bad_password_count(struct samu *sampass, uint16 bad_password_count, enum pdb_value_state flag); 4560bool pdb_set_logon_count(struct samu *sampass, uint16 logon_count, enum pdb_value_state flag); 4561bool pdb_set_unknown_6(struct samu *sampass, uint32 unkn, enum pdb_value_state flag); 4562bool pdb_set_hours(struct samu *sampass, const uint8 *hours, enum pdb_value_state flag); 4563bool pdb_set_backend_private_data(struct samu *sampass, void *private_data, 4564 void (*free_fn)(void **), 4565 const struct pdb_methods *my_methods, 4566 enum pdb_value_state flag); 4567bool pdb_set_pass_can_change(struct samu *sampass, bool canchange); 4568bool pdb_set_plaintext_passwd(struct samu *sampass, const char *plaintext); 4569uint32 pdb_build_fields_present(struct samu *sampass); 4570 4571/* The following definitions come from passdb/pdb_interface.c */ 4572 4573NTSTATUS smb_register_passdb(int version, const char *name, pdb_init_function init) ; 4574struct pdb_init_function_entry *pdb_find_backend_entry(const char *name); 4575struct event_context *pdb_get_event_context(void); 4576NTSTATUS make_pdb_method_name(struct pdb_methods **methods, const char *selected); 4577struct pdb_domain_info *pdb_get_domain_info(TALLOC_CTX *mem_ctx); 4578bool pdb_getsampwnam(struct samu *sam_acct, const char *username) ; 4579bool guest_user_info( struct samu *user ); 4580bool pdb_getsampwsid(struct samu *sam_acct, const DOM_SID *sid) ; 4581NTSTATUS pdb_create_user(TALLOC_CTX *mem_ctx, const char *name, uint32 flags, 4582 uint32 *rid); 4583NTSTATUS pdb_delete_user(TALLOC_CTX *mem_ctx, struct samu *sam_acct); 4584NTSTATUS pdb_add_sam_account(struct samu *sam_acct) ; 4585NTSTATUS pdb_update_sam_account(struct samu *sam_acct) ; 4586NTSTATUS pdb_delete_sam_account(struct samu *sam_acct) ; 4587NTSTATUS pdb_rename_sam_account(struct samu *oldname, const char *newname); 4588NTSTATUS pdb_update_login_attempts(struct samu *sam_acct, bool success); 4589bool pdb_getgrsid(GROUP_MAP *map, DOM_SID sid); 4590bool pdb_getgrgid(GROUP_MAP *map, gid_t gid); 4591bool pdb_getgrnam(GROUP_MAP *map, const char *name); 4592NTSTATUS pdb_create_dom_group(TALLOC_CTX *mem_ctx, const char *name, 4593 uint32 *rid); 4594NTSTATUS pdb_delete_dom_group(TALLOC_CTX *mem_ctx, uint32 rid); 4595NTSTATUS pdb_add_group_mapping_entry(GROUP_MAP *map); 4596NTSTATUS pdb_update_group_mapping_entry(GROUP_MAP *map); 4597NTSTATUS pdb_delete_group_mapping_entry(DOM_SID sid); 4598bool pdb_enum_group_mapping(const DOM_SID *sid, enum lsa_SidType sid_name_use, GROUP_MAP **pp_rmap, 4599 size_t *p_num_entries, bool unix_only); 4600NTSTATUS pdb_enum_group_members(TALLOC_CTX *mem_ctx, 4601 const DOM_SID *sid, 4602 uint32 **pp_member_rids, 4603 size_t *p_num_members); 4604NTSTATUS pdb_enum_group_memberships(TALLOC_CTX *mem_ctx, struct samu *user, 4605 DOM_SID **pp_sids, gid_t **pp_gids, 4606 size_t *p_num_groups); 4607NTSTATUS pdb_set_unix_primary_group(TALLOC_CTX *mem_ctx, struct samu *user); 4608NTSTATUS pdb_add_groupmem(TALLOC_CTX *mem_ctx, uint32 group_rid, 4609 uint32 member_rid); 4610NTSTATUS pdb_del_groupmem(TALLOC_CTX *mem_ctx, uint32 group_rid, 4611 uint32 member_rid); 4612NTSTATUS pdb_create_alias(const char *name, uint32 *rid); 4613NTSTATUS pdb_delete_alias(const DOM_SID *sid); 4614NTSTATUS pdb_get_aliasinfo(const DOM_SID *sid, struct acct_info *info); 4615NTSTATUS pdb_set_aliasinfo(const DOM_SID *sid, struct acct_info *info); 4616NTSTATUS pdb_add_aliasmem(const DOM_SID *alias, const DOM_SID *member); 4617NTSTATUS pdb_del_aliasmem(const DOM_SID *alias, const DOM_SID *member); 4618NTSTATUS pdb_enum_aliasmem(const DOM_SID *alias, TALLOC_CTX *mem_ctx, 4619 DOM_SID **pp_members, size_t *p_num_members); 4620NTSTATUS pdb_enum_alias_memberships(TALLOC_CTX *mem_ctx, 4621 const DOM_SID *domain_sid, 4622 const DOM_SID *members, size_t num_members, 4623 uint32 **pp_alias_rids, 4624 size_t *p_num_alias_rids); 4625NTSTATUS pdb_lookup_rids(const DOM_SID *domain_sid, 4626 int num_rids, 4627 uint32 *rids, 4628 const char **names, 4629 enum lsa_SidType *attrs); 4630NTSTATUS pdb_lookup_names(const DOM_SID *domain_sid, 4631 int num_names, 4632 const char **names, 4633 uint32 *rids, 4634 enum lsa_SidType *attrs); 4635bool pdb_get_account_policy(enum pdb_policy_type type, uint32_t *value); 4636bool pdb_set_account_policy(enum pdb_policy_type type, uint32_t value); 4637bool pdb_get_seq_num(time_t *seq_num); 4638bool pdb_uid_to_sid(uid_t uid, DOM_SID *sid); 4639bool pdb_gid_to_sid(gid_t gid, DOM_SID *sid); 4640bool pdb_sid_to_id(const DOM_SID *sid, union unid_t *id, 4641 enum lsa_SidType *type); 4642uint32_t pdb_capabilities(void); 4643bool pdb_new_rid(uint32 *rid); 4644bool initialize_password_db(bool reload, struct event_context *event_ctx); 4645struct pdb_search *pdb_search_init(TALLOC_CTX *mem_ctx, 4646 enum pdb_search_type type); 4647struct pdb_search *pdb_search_users(TALLOC_CTX *mem_ctx, uint32 acct_flags); 4648struct pdb_search *pdb_search_groups(TALLOC_CTX *mem_ctx); 4649struct pdb_search *pdb_search_aliases(TALLOC_CTX *mem_ctx, const DOM_SID *sid); 4650uint32 pdb_search_entries(struct pdb_search *search, 4651 uint32 start_idx, uint32 max_entries, 4652 struct samr_displayentry **result); 4653bool pdb_get_trusteddom_pw(const char *domain, char** pwd, DOM_SID *sid, 4654 time_t *pass_last_set_time); 4655bool pdb_set_trusteddom_pw(const char* domain, const char* pwd, 4656 const DOM_SID *sid); 4657bool pdb_del_trusteddom_pw(const char *domain); 4658NTSTATUS pdb_enum_trusteddoms(TALLOC_CTX *mem_ctx, uint32 *num_domains, 4659 struct trustdom_info ***domains); 4660NTSTATUS make_pdb_method( struct pdb_methods **methods ) ; 4661 4662/* The following definitions come from passdb/pdb_ldap.c */ 4663 4664const char** get_userattr_list( TALLOC_CTX *mem_ctx, int schema_ver ); 4665int ldapsam_search_suffix_by_name(struct ldapsam_privates *ldap_state, 4666 const char *user, 4667 LDAPMessage ** result, 4668 const char **attr); 4669const char **talloc_attrs(TALLOC_CTX *mem_ctx, ...); 4670NTSTATUS pdb_init_ldapsam_compat(struct pdb_methods **pdb_method, const char *location); 4671NTSTATUS pdb_init_ldapsam(struct pdb_methods **pdb_method, const char *location); 4672NTSTATUS pdb_ldap_init(void); 4673 4674/* The following definitions come from passdb/pdb_nds.c */ 4675 4676int pdb_nds_get_password( 4677 struct smbldap_state *ldap_state, 4678 char *object_dn, 4679 size_t *pwd_len, 4680 char *pwd ); 4681int pdb_nds_set_password( 4682 struct smbldap_state *ldap_state, 4683 char *object_dn, 4684 const char *pwd ); 4685NTSTATUS pdb_nds_init(void); 4686 4687/* The following definitions come from passdb/pdb_smbpasswd.c */ 4688 4689NTSTATUS pdb_smbpasswd_init(void) ; 4690 4691/* The following definitions come from passdb/pdb_wbc_sam.c */ 4692 4693NTSTATUS pdb_wbc_sam_init(void); 4694 4695/* The following definitions come from passdb/pdb_tdb.c */ 4696 4697bool init_sam_from_buffer_v2(struct samu *sampass, uint8 *buf, uint32 buflen); 4698NTSTATUS pdb_tdbsam_init(void); 4699 4700/* The following definitions come from passdb/secrets.c */ 4701 4702bool secrets_init(void); 4703struct db_context *secrets_db_ctx(void); 4704void secrets_shutdown(void); 4705void *secrets_fetch(const char *key, size_t *size); 4706bool secrets_store(const char *key, const void *data, size_t size); 4707bool secrets_delete(const char *key); 4708bool secrets_store_domain_sid(const char *domain, const DOM_SID *sid); 4709bool secrets_fetch_domain_sid(const char *domain, DOM_SID *sid); 4710bool secrets_store_domain_guid(const char *domain, struct GUID *guid); 4711bool secrets_fetch_domain_guid(const char *domain, struct GUID *guid); 4712void *secrets_get_trust_account_lock(TALLOC_CTX *mem_ctx, const char *domain); 4713enum netr_SchannelType get_default_sec_channel(void); 4714bool secrets_fetch_trust_account_password_legacy(const char *domain, 4715 uint8 ret_pwd[16], 4716 time_t *pass_last_set_time, 4717 enum netr_SchannelType *channel); 4718bool secrets_fetch_trust_account_password(const char *domain, uint8 ret_pwd[16], 4719 time_t *pass_last_set_time, 4720 enum netr_SchannelType *channel); 4721bool secrets_fetch_trusted_domain_password(const char *domain, char** pwd, 4722 DOM_SID *sid, time_t *pass_last_set_time); 4723bool secrets_store_trusted_domain_password(const char* domain, const char* pwd, 4724 const DOM_SID *sid); 4725bool secrets_delete_machine_password(const char *domain); 4726bool secrets_delete_machine_password_ex(const char *domain); 4727bool secrets_delete_domain_sid(const char *domain); 4728bool secrets_store_machine_password(const char *pass, const char *domain, enum netr_SchannelType sec_channel); 4729char *secrets_fetch_prev_machine_password(const char *domain); 4730char *secrets_fetch_machine_password(const char *domain, 4731 time_t *pass_last_set_time, 4732 enum netr_SchannelType *channel); 4733bool trusted_domain_password_delete(const char *domain); 4734bool secrets_store_ldap_pw(const char* dn, char* pw); 4735bool fetch_ldap_pw(char **dn, char** pw); 4736NTSTATUS secrets_trusted_domains(TALLOC_CTX *mem_ctx, uint32 *num_domains, 4737 struct trustdom_info ***domains); 4738bool secrets_store_afs_keyfile(const char *cell, const struct afs_keyfile *keyfile); 4739bool secrets_fetch_afs_key(const char *cell, struct afs_key *result); 4740void secrets_fetch_ipc_userpass(char **username, char **domain, char **password); 4741bool secrets_store_generic(const char *owner, const char *key, const char *secret); 4742char *secrets_fetch_generic(const char *owner, const char *key); 4743bool secrets_delete_generic(const char *owner, const char *key); 4744bool secrets_store_local_schannel_key(uint8_t schannel_key[16]); 4745bool secrets_fetch_local_schannel_key(uint8_t schannel_key[16]); 4746 4747/* The following definitions come from passdb/secrets_schannel.c */ 4748 4749TDB_CONTEXT *open_schannel_session_store(TALLOC_CTX *mem_ctx); 4750NTSTATUS schannel_fetch_session_key(TALLOC_CTX *mem_ctx, 4751 const char *computer_name, 4752 struct netlogon_creds_CredentialState **pcreds); 4753NTSTATUS schannel_store_session_key(TALLOC_CTX *mem_ctx, 4754 struct netlogon_creds_CredentialState *creds); 4755 4756/* The following definitions come from passdb/util_builtin.c */ 4757 4758bool lookup_builtin_rid(TALLOC_CTX *mem_ctx, uint32 rid, const char **name); 4759bool lookup_builtin_name(const char *name, uint32 *rid); 4760const char *builtin_domain_name(void); 4761bool sid_check_is_builtin(const DOM_SID *sid); 4762bool sid_check_is_in_builtin(const DOM_SID *sid); 4763 4764/* The following definitions come from passdb/util_unixsids.c */ 4765 4766bool sid_check_is_unix_users(const DOM_SID *sid); 4767bool sid_check_is_in_unix_users(const DOM_SID *sid); 4768bool uid_to_unix_users_sid(uid_t uid, DOM_SID *sid); 4769bool gid_to_unix_groups_sid(gid_t gid, DOM_SID *sid); 4770const char *unix_users_domain_name(void); 4771bool lookup_unix_user_name(const char *name, DOM_SID *sid); 4772bool sid_check_is_unix_groups(const DOM_SID *sid); 4773bool sid_check_is_in_unix_groups(const DOM_SID *sid); 4774const char *unix_groups_domain_name(void); 4775bool lookup_unix_group_name(const char *name, DOM_SID *sid); 4776 4777/* The following definitions come from passdb/util_wellknown.c */ 4778 4779bool sid_check_is_wellknown_domain(const DOM_SID *sid, const char **name); 4780bool sid_check_is_in_wellknown_domain(const DOM_SID *sid); 4781bool lookup_wellknown_sid(TALLOC_CTX *mem_ctx, const DOM_SID *sid, 4782 const char **domain, const char **name); 4783bool lookup_wellknown_name(TALLOC_CTX *mem_ctx, const char *name, 4784 DOM_SID *sid, const char **domain); 4785 4786/* The following definitions come from printing/load.c */ 4787 4788void load_printers(void); 4789 4790/* The following definitions come from printing/lpq_parse.c */ 4791 4792bool parse_lpq_entry(enum printing_types printing_type,char *line, 4793 print_queue_struct *buf, 4794 print_status_struct *status,bool first); 4795uint32_t print_parse_jobid(const char *fname); 4796 4797/* The following definitions come from printing/notify.c */ 4798 4799int print_queue_snum(const char *qname); 4800void print_notify_send_messages(struct messaging_context *msg_ctx, 4801 unsigned int timeout); 4802void notify_printer_status_byname(const char *sharename, uint32 status); 4803void notify_printer_status(int snum, uint32 status); 4804void notify_job_status_byname(const char *sharename, uint32 jobid, uint32 status, 4805 uint32 flags); 4806void notify_job_status(const char *sharename, uint32 jobid, uint32 status); 4807void notify_job_total_bytes(const char *sharename, uint32 jobid, 4808 uint32 size); 4809void notify_job_total_pages(const char *sharename, uint32 jobid, 4810 uint32 pages); 4811void notify_job_username(const char *sharename, uint32 jobid, char *name); 4812void notify_job_name(const char *sharename, uint32 jobid, char *name); 4813void notify_job_submitted(const char *sharename, uint32 jobid, 4814 time_t submitted); 4815void notify_printer_driver(int snum, char *driver_name); 4816void notify_printer_comment(int snum, char *comment); 4817void notify_printer_sharename(int snum, char *share_name); 4818void notify_printer_printername(int snum, char *printername); 4819void notify_printer_port(int snum, char *port_name); 4820void notify_printer_location(int snum, char *location); 4821void notify_printer_byname( const char *printername, uint32 change, const char *value ); 4822 4823/* The following definitions come from printing/nt_printing.c */ 4824 4825bool nt_printing_init(struct messaging_context *msg_ctx); 4826uint32 update_c_setprinter(bool initialize); 4827uint32 get_c_setprinter(void); 4828int get_builtin_ntforms(nt_forms_struct **list); 4829bool get_a_builtin_ntform_by_string(const char *form_name, nt_forms_struct *form); 4830int get_ntforms(nt_forms_struct **list); 4831int write_ntforms(nt_forms_struct **list, int number); 4832bool add_a_form(nt_forms_struct **list, struct spoolss_AddFormInfo1 *form, int *count); 4833bool delete_a_form(nt_forms_struct **list, const char *del_name, int *count, WERROR *ret); 4834void update_a_form(nt_forms_struct **list, struct spoolss_AddFormInfo1 *form, int count); 4835int get_ntdrivers(fstring **list, const char *architecture, uint32 version); 4836const char *get_short_archi(const char *long_archi); 4837WERROR clean_up_driver_struct(struct pipes_struct *rpc_pipe, 4838 struct spoolss_AddDriverInfoCtr *r); 4839WERROR move_driver_to_download_area(struct pipes_struct *p, 4840 struct spoolss_AddDriverInfoCtr *r, 4841 WERROR *perr); 4842int pack_devicemode(NT_DEVICEMODE *nt_devmode, uint8 *buf, int buflen); 4843uint32 del_a_printer(const char *sharename); 4844NT_DEVICEMODE *construct_nt_devicemode(const fstring default_devicename); 4845void free_nt_devicemode(NT_DEVICEMODE **devmode_ptr); 4846int unpack_devicemode(NT_DEVICEMODE **nt_devmode, const uint8 *buf, int buflen); 4847int add_new_printer_key( NT_PRINTER_DATA *data, const char *name ); 4848int delete_printer_key( NT_PRINTER_DATA *data, const char *name ); 4849int lookup_printerkey( NT_PRINTER_DATA *data, const char *name ); 4850int get_printer_subkeys( NT_PRINTER_DATA *data, const char* key, fstring **subkeys ); 4851WERROR nt_printer_publish(Printer_entry *print_hnd, int snum, int action); 4852WERROR check_published_printers(void); 4853bool is_printer_published(Printer_entry *print_hnd, int snum, 4854 struct GUID *guid); 4855WERROR nt_printer_publish(Printer_entry *print_hnd, int snum, int action); 4856WERROR check_published_printers(void); 4857bool is_printer_published(Printer_entry *print_hnd, int snum, 4858 struct GUID *guid); 4859WERROR delete_all_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char *key ); 4860WERROR delete_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char *key, const char *value ); 4861WERROR add_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char *key, const char *value, 4862 uint32 type, uint8 *data, int real_len ); 4863struct regval_blob* get_printer_data( NT_PRINTER_INFO_LEVEL_2 *p2, const char *key, const char *value ); 4864WERROR mod_a_printer(NT_PRINTER_INFO_LEVEL *printer, uint32 level); 4865bool set_driver_init(NT_PRINTER_INFO_LEVEL *printer, uint32 level); 4866bool del_driver_init(const char *drivername); 4867WERROR save_driver_init(NT_PRINTER_INFO_LEVEL *printer, uint32 level, uint8 *data, uint32 data_len); 4868WERROR get_a_printer( Printer_entry *print_hnd, 4869 NT_PRINTER_INFO_LEVEL **pp_printer, 4870 uint32 level, 4871 const char *sharename); 4872WERROR get_a_printer_search( Printer_entry *print_hnd, 4873 NT_PRINTER_INFO_LEVEL **pp_printer, 4874 uint32 level, 4875 const char *sharename); 4876uint32 free_a_printer(NT_PRINTER_INFO_LEVEL **pp_printer, uint32 level); 4877uint32_t add_a_printer_driver(TALLOC_CTX *mem_ctx, 4878 struct spoolss_AddDriverInfoCtr *r, 4879 char **driver_name, 4880 uint32_t *version); 4881WERROR get_a_printer_driver(TALLOC_CTX *mem_ctx, 4882 struct spoolss_DriverInfo8 **driver_p, 4883 const char *drivername, const char *architecture, 4884 uint32_t version); 4885uint32_t free_a_printer_driver(struct spoolss_DriverInfo8 *driver); 4886bool printer_driver_in_use(const struct spoolss_DriverInfo8 *r); 4887bool printer_driver_files_in_use(TALLOC_CTX *mem_ctx, 4888 struct spoolss_DriverInfo8 *r); 4889WERROR delete_printer_driver(struct pipes_struct *rpc_pipe, 4890 const struct spoolss_DriverInfo8 *r, 4891 uint32 version, bool delete_files ); 4892WERROR nt_printing_setsec(const char *sharename, SEC_DESC_BUF *secdesc_ctr); 4893bool nt_printing_getsec(TALLOC_CTX *ctx, const char *sharename, SEC_DESC_BUF **secdesc_ctr); 4894void map_printer_permissions(SEC_DESC *sd); 4895void map_job_permissions(SEC_DESC *sd); 4896bool print_access_check(struct auth_serversupplied_info *server_info, int snum, 4897 int access_type); 4898bool print_time_access_check(const char *servicename); 4899char* get_server_name( Printer_entry *printer ); 4900 4901/* The following definitions come from printing/pcap.c */ 4902 4903bool pcap_cache_add_specific(struct pcap_cache **ppcache, const char *name, const char *comment); 4904void pcap_cache_destroy_specific(struct pcap_cache **ppcache); 4905bool pcap_cache_add(const char *name, const char *comment); 4906bool pcap_cache_loaded(void); 4907void pcap_cache_replace(const struct pcap_cache *cache); 4908void pcap_cache_reload(void); 4909bool pcap_printername_ok(const char *printername); 4910void pcap_printer_fn_specific(const struct pcap_cache *, void (*fn)(const char *, const char *, void *), void *); 4911void pcap_printer_fn(void (*fn)(const char *, const char *, void *), void *); 4912 4913/* The following definitions come from printing/print_aix.c */ 4914 4915bool aix_cache_reload(void); 4916 4917/* The following definitions come from printing/print_cups.c */ 4918 4919bool cups_cache_reload(void); 4920bool cups_pull_comment_location(NT_PRINTER_INFO_LEVEL_2 *printer); 4921 4922/* The following definitions come from printing/print_generic.c */ 4923 4924 4925/* The following definitions come from printing/print_iprint.c */ 4926 4927bool iprint_cache_reload(void); 4928 4929/* The following definitions come from printing/print_svid.c */ 4930 4931bool sysv_cache_reload(void); 4932 4933/* The following definitions come from printing/printfsp.c */ 4934 4935NTSTATUS print_fsp_open(struct smb_request *req, connection_struct *conn, 4936 const char *fname, 4937 uint16_t current_vuid, files_struct *fsp); 4938void print_fsp_end(files_struct *fsp, enum file_close_type close_type); 4939 4940/* The following definitions come from printing/printing.c */ 4941 4942uint16 pjobid_to_rap(const char* sharename, uint32 jobid); 4943bool rap_to_pjobid(uint16 rap_jobid, fstring sharename, uint32 *pjobid); 4944bool print_backend_init(struct messaging_context *msg_ctx); 4945void printing_end(void); 4946int unpack_pjob( uint8 *buf, int buflen, struct printjob *pjob ); 4947uint32 sysjob_to_jobid(int unix_jobid); 4948void pjob_delete(const char* sharename, uint32 jobid); 4949void start_background_queue(void); 4950bool print_notify_register_pid(int snum); 4951bool print_notify_deregister_pid(int snum); 4952bool print_job_exists(const char* sharename, uint32 jobid); 4953int print_job_fd(const char* sharename, uint32 jobid); 4954char *print_job_fname(const char* sharename, uint32 jobid); 4955NT_DEVICEMODE *print_job_devmode(const char* sharename, uint32 jobid); 4956bool print_job_set_place(const char *sharename, uint32 jobid, int place); 4957bool print_job_set_name(const char *sharename, uint32 jobid, char *name); 4958bool print_job_delete(struct auth_serversupplied_info *server_info, int snum, 4959 uint32 jobid, WERROR *errcode); 4960bool print_job_pause(struct auth_serversupplied_info *server_info, int snum, 4961 uint32 jobid, WERROR *errcode); 4962bool print_job_resume(struct auth_serversupplied_info *server_info, int snum, 4963 uint32 jobid, WERROR *errcode); 4964ssize_t print_job_write(int snum, uint32 jobid, const char *buf, SMB_OFF_T pos, size_t size); 4965int print_queue_length(int snum, print_status_struct *pstatus); 4966uint32 print_job_start(struct auth_serversupplied_info *server_info, int snum, 4967 const char *jobname, NT_DEVICEMODE *nt_devmode ); 4968void print_job_endpage(int snum, uint32 jobid); 4969bool print_job_end(int snum, uint32 jobid, enum file_close_type close_type); 4970int print_queue_status(int snum, 4971 print_queue_struct **ppqueue, 4972 print_status_struct *status); 4973WERROR print_queue_pause(struct auth_serversupplied_info *server_info, int snum); 4974WERROR print_queue_resume(struct auth_serversupplied_info *server_info, int snum); 4975WERROR print_queue_purge(struct auth_serversupplied_info *server_info, int snum); 4976 4977/* The following definitions come from printing/printing_db.c */ 4978 4979struct tdb_print_db *get_print_db_byname(const char *printername); 4980void release_print_db( struct tdb_print_db *pdb); 4981void close_all_print_db(void); 4982TDB_DATA get_printer_notify_pid_list(TDB_CONTEXT *tdb, const char *printer_name, bool cleanlist); 4983 4984/* The following definitions come from profile/profile.c */ 4985 4986void set_profile_level(int level, struct server_id src); 4987bool profile_setup(struct messaging_context *msg_ctx, bool rdonly); 4988 4989/* The following definitions come from registry/reg_api.c */ 4990 4991WERROR reg_openhive(TALLOC_CTX *mem_ctx, const char *hive, 4992 uint32 desired_access, 4993 const struct nt_user_token *token, 4994 struct registry_key **pkey); 4995WERROR reg_openkey(TALLOC_CTX *mem_ctx, struct registry_key *parent, 4996 const char *name, uint32 desired_access, 4997 struct registry_key **pkey); 4998WERROR reg_enumkey(TALLOC_CTX *mem_ctx, struct registry_key *key, 4999 uint32 idx, char **name, NTTIME *last_write_time); 5000WERROR reg_enumvalue(TALLOC_CTX *mem_ctx, struct registry_key *key, 5001 uint32 idx, char **pname, struct registry_value **pval); 5002WERROR reg_queryvalue(TALLOC_CTX *mem_ctx, struct registry_key *key, 5003 const char *name, struct registry_value **pval); 5004WERROR reg_queryinfokey(struct registry_key *key, uint32_t *num_subkeys, 5005 uint32_t *max_subkeylen, uint32_t *max_subkeysize, 5006 uint32_t *num_values, uint32_t *max_valnamelen, 5007 uint32_t *max_valbufsize, uint32_t *secdescsize, 5008 NTTIME *last_changed_time); 5009WERROR reg_createkey(TALLOC_CTX *ctx, struct registry_key *parent, 5010 const char *subkeypath, uint32 desired_access, 5011 struct registry_key **pkey, 5012 enum winreg_CreateAction *paction); 5013WERROR reg_deletekey(struct registry_key *parent, const char *path); 5014WERROR reg_setvalue(struct registry_key *key, const char *name, 5015 const struct registry_value *val); 5016WERROR reg_deletevalue(struct registry_key *key, const char *name); 5017WERROR reg_getkeysecurity(TALLOC_CTX *mem_ctx, struct registry_key *key, 5018 struct security_descriptor **psecdesc); 5019WERROR reg_setkeysecurity(struct registry_key *key, 5020 struct security_descriptor *psecdesc); 5021WERROR reg_getversion(uint32_t *version); 5022WERROR reg_restorekey(struct registry_key *key, const char *fname); 5023WERROR reg_savekey(struct registry_key *key, const char *fname); 5024WERROR reg_deleteallvalues(struct registry_key *key); 5025WERROR reg_open_path(TALLOC_CTX *mem_ctx, const char *orig_path, 5026 uint32 desired_access, const struct nt_user_token *token, 5027 struct registry_key **pkey); 5028WERROR reg_deletekey_recursive(TALLOC_CTX *ctx, 5029 struct registry_key *parent, 5030 const char *path); 5031WERROR reg_deletesubkeys_recursive(TALLOC_CTX *ctx, 5032 struct registry_key *parent, 5033 const char *path); 5034WERROR reg_create_path(TALLOC_CTX *mem_ctx, const char *orig_path, 5035 uint32 desired_access, 5036 const struct nt_user_token *token, 5037 enum winreg_CreateAction *paction, 5038 struct registry_key **pkey); 5039WERROR reg_delete_path(const struct nt_user_token *token, 5040 const char *orig_path); 5041 5042/* The following definitions come from registry/reg_backend_current_version.c */ 5043 5044 5045/* The following definitions come from registry/reg_backend_db.c */ 5046 5047WERROR init_registry_key(const char *add_path); 5048WERROR init_registry_data(void); 5049WERROR regdb_init(void); 5050WERROR regdb_open( void ); 5051int regdb_close( void ); 5052WERROR regdb_transaction_start(void); 5053WERROR regdb_transaction_commit(void); 5054WERROR regdb_transaction_cancel(void); 5055int regdb_get_seqnum(void); 5056bool regdb_store_keys(const char *key, struct regsubkey_ctr *ctr); 5057int regdb_fetch_keys(const char *key, struct regsubkey_ctr *ctr); 5058int regdb_fetch_values(const char* key, struct regval_ctr *values); 5059bool regdb_store_values(const char *key, struct regval_ctr *values); 5060bool regdb_subkeys_need_update(struct regsubkey_ctr *subkeys); 5061bool regdb_values_need_update(struct regval_ctr *values); 5062 5063/* The following definitions come from registry/reg_backend_hkpt_params.c */ 5064 5065 5066/* The following definitions come from registry/reg_backend_netlogon_params.c */ 5067 5068 5069/* The following definitions come from registry/reg_backend_perflib.c */ 5070 5071 5072/* The following definitions come from registry/reg_backend_printing.c */ 5073 5074 5075/* The following definitions come from registry/reg_backend_prod_options.c */ 5076 5077 5078/* The following definitions come from registry/reg_backend_shares.c */ 5079 5080 5081/* The following definitions come from registry/reg_backend_smbconf.c */ 5082 5083 5084/* The following definitions come from registry/reg_backend_tcpip_params.c */ 5085 5086 5087/* The following definitions come from registry/reg_cachehook.c */ 5088 5089WERROR reghook_cache_init(void); 5090WERROR reghook_cache_add(const char *keyname, struct registry_ops *ops); 5091struct registry_ops *reghook_cache_find(const char *keyname); 5092void reghook_dump_cache( int debuglevel ); 5093 5094/* The following definitions come from registry/reg_dispatcher.c */ 5095 5096bool store_reg_keys(struct registry_key_handle *key, 5097 struct regsubkey_ctr *subkeys); 5098bool store_reg_values(struct registry_key_handle *key, struct regval_ctr *val); 5099WERROR create_reg_subkey(struct registry_key_handle *key, const char *subkey); 5100WERROR delete_reg_subkey(struct registry_key_handle *key, const char *subkey); 5101int fetch_reg_keys(struct registry_key_handle *key, 5102 struct regsubkey_ctr *subkey_ctr); 5103int fetch_reg_values(struct registry_key_handle *key, struct regval_ctr *val); 5104bool regkey_access_check(struct registry_key_handle *key, uint32 requested, 5105 uint32 *granted, 5106 const struct nt_user_token *token); 5107WERROR regkey_get_secdesc(TALLOC_CTX *mem_ctx, struct registry_key_handle *key, 5108 struct security_descriptor **psecdesc); 5109WERROR regkey_set_secdesc(struct registry_key_handle *key, 5110 struct security_descriptor *psecdesc); 5111bool reg_subkeys_need_update(struct registry_key_handle *key, 5112 struct regsubkey_ctr *subkeys); 5113bool reg_values_need_update(struct registry_key_handle *key, 5114 struct regval_ctr *values); 5115 5116/* The following definitions come from registry/reg_eventlog.c */ 5117 5118bool eventlog_init_keys(void); 5119bool eventlog_add_source( const char *eventlog, const char *sourcename, 5120 const char *messagefile ); 5121 5122/* The following definitions come from registry/reg_init_basic.c */ 5123 5124WERROR registry_init_common(void); 5125WERROR registry_init_basic(void); 5126 5127/* The following definitions come from registry/reg_init_full.c */ 5128 5129WERROR registry_init_full(void); 5130 5131/* The following definitions come from registry/reg_init_smbconf.c */ 5132 5133NTSTATUS registry_create_admin_token(TALLOC_CTX *mem_ctx, 5134 NT_USER_TOKEN **ptoken); 5135WERROR registry_init_smbconf(const char *keyname); 5136 5137/* The following definitions come from registry/reg_objects.c */ 5138 5139WERROR regsubkey_ctr_init(TALLOC_CTX *mem_ctx, struct regsubkey_ctr **ctr); 5140WERROR regsubkey_ctr_reinit(struct regsubkey_ctr *ctr); 5141WERROR regsubkey_ctr_set_seqnum(struct regsubkey_ctr *ctr, int seqnum); 5142int regsubkey_ctr_get_seqnum(struct regsubkey_ctr *ctr); 5143WERROR regsubkey_ctr_addkey( struct regsubkey_ctr *ctr, const char *keyname ); 5144WERROR regsubkey_ctr_delkey( struct regsubkey_ctr *ctr, const char *keyname ); 5145bool regsubkey_ctr_key_exists( struct regsubkey_ctr *ctr, const char *keyname ); 5146int regsubkey_ctr_numkeys( struct regsubkey_ctr *ctr ); 5147char* regsubkey_ctr_specific_key( struct regsubkey_ctr *ctr, uint32 key_index ); 5148int regval_ctr_numvals(struct regval_ctr *ctr); 5149struct regval_blob* dup_registry_value(struct regval_blob *val); 5150void free_registry_value(struct regval_blob *val); 5151uint8* regval_data_p(struct regval_blob *val); 5152uint32 regval_size(struct regval_blob *val); 5153char* regval_name(struct regval_blob *val); 5154uint32 regval_type(struct regval_blob *val); 5155struct regval_blob* regval_ctr_specific_value(struct regval_ctr *ctr, 5156 uint32 idx); 5157bool regval_ctr_key_exists(struct regval_ctr *ctr, const char *value); 5158struct regval_blob *regval_compose(TALLOC_CTX *ctx, const char *name, 5159 uint16 type, 5160 const char *data_p, size_t size); 5161int regval_ctr_addvalue(struct regval_ctr *ctr, const char *name, uint16 type, 5162 const char *data_p, size_t size); 5163int regval_ctr_addvalue_sz(struct regval_ctr *ctr, const char *name, const char *data); 5164int regval_ctr_addvalue_multi_sz(struct regval_ctr *ctr, const char *name, const char **data); 5165int regval_ctr_copyvalue(struct regval_ctr *ctr, struct regval_blob *val); 5166int regval_ctr_delvalue(struct regval_ctr *ctr, const char *name); 5167struct regval_blob* regval_ctr_getvalue(struct regval_ctr *ctr, 5168 const char *name); 5169uint32 regval_dword(struct regval_blob *val); 5170const char *regval_sz(struct regval_blob *val); 5171 5172/* The following definitions come from registry/reg_perfcount.c */ 5173 5174void perfcount_init_keys( void ); 5175uint32 reg_perfcount_get_base_index(void); 5176uint32 reg_perfcount_get_last_counter(uint32 base_index); 5177uint32 reg_perfcount_get_last_help(uint32 last_counter); 5178uint32 reg_perfcount_get_counter_help(uint32 base_index, char **retbuf); 5179uint32 reg_perfcount_get_counter_names(uint32 base_index, char **retbuf); 5180WERROR reg_perfcount_get_hkpd(prs_struct *ps, uint32 max_buf_size, uint32 *outbuf_len, const char *object_ids); 5181 5182/* The following definitions come from registry/reg_util.c */ 5183 5184bool reg_split_path(char *path, char **base, char **new_path); 5185bool reg_split_key(char *path, char **base, char **key); 5186char *normalize_reg_path(TALLOC_CTX *ctx, const char *keyname ); 5187void normalize_dbkey(char *key); 5188char *reg_remaining_path(TALLOC_CTX *ctx, const char *key); 5189 5190/* The following definitions come from registry/reg_util_legacy.c */ 5191 5192WERROR regkey_open_internal(TALLOC_CTX *ctx, 5193 struct registry_key_handle **regkey, 5194 const char *path, 5195 const struct nt_user_token *token, 5196 uint32 access_desired ); 5197 5198/* The following definitions come from registry/regfio.c */ 5199 5200 5201/* The following definitions come from rpc_client/cli_lsarpc.c */ 5202 5203NTSTATUS rpccli_lsa_open_policy(struct rpc_pipe_client *cli, 5204 TALLOC_CTX *mem_ctx, 5205 bool sec_qos, uint32 des_access, 5206 struct policy_handle *pol); 5207NTSTATUS rpccli_lsa_open_policy2(struct rpc_pipe_client *cli, 5208 TALLOC_CTX *mem_ctx, bool sec_qos, 5209 uint32 des_access, struct policy_handle *pol); 5210NTSTATUS rpccli_lsa_lookup_sids(struct rpc_pipe_client *cli, 5211 TALLOC_CTX *mem_ctx, 5212 struct policy_handle *pol, 5213 int num_sids, 5214 const DOM_SID *sids, 5215 char ***pdomains, 5216 char ***pnames, 5217 enum lsa_SidType **ptypes); 5218NTSTATUS rpccli_lsa_lookup_sids3(struct rpc_pipe_client *cli, 5219 TALLOC_CTX *mem_ctx, 5220 struct policy_handle *pol, 5221 int num_sids, 5222 const DOM_SID *sids, 5223 char ***pdomains, 5224 char ***pnames, 5225 enum lsa_SidType **ptypes); 5226NTSTATUS rpccli_lsa_lookup_names(struct rpc_pipe_client *cli, 5227 TALLOC_CTX *mem_ctx, 5228 struct policy_handle *pol, int num_names, 5229 const char **names, 5230 const char ***dom_names, 5231 int level, 5232 DOM_SID **sids, 5233 enum lsa_SidType **types); 5234NTSTATUS rpccli_lsa_lookup_names4(struct rpc_pipe_client *cli, 5235 TALLOC_CTX *mem_ctx, 5236 struct policy_handle *pol, int num_names, 5237 const char **names, 5238 const char ***dom_names, 5239 int level, 5240 DOM_SID **sids, 5241 enum lsa_SidType **types); 5242 5243bool fetch_domain_sid( char *domain, char *remote_machine, DOM_SID *psid); 5244 5245/* The following definitions come from rpc_client/cli_netlogon.c */ 5246 5247NTSTATUS rpccli_netlogon_setup_creds(struct rpc_pipe_client *cli, 5248 const char *server_name, 5249 const char *domain, 5250 const char *clnt_name, 5251 const char *machine_account, 5252 const unsigned char machine_pwd[16], 5253 enum netr_SchannelType sec_chan_type, 5254 uint32_t *neg_flags_inout); 5255NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli, 5256 TALLOC_CTX *mem_ctx, 5257 uint32 logon_parameters, 5258 const char *domain, 5259 const char *username, 5260 const char *password, 5261 const char *workstation, 5262 int logon_type); 5263NTSTATUS rpccli_netlogon_sam_network_logon(struct rpc_pipe_client *cli, 5264 TALLOC_CTX *mem_ctx, 5265 uint32 logon_parameters, 5266 const char *server, 5267 const char *username, 5268 const char *domain, 5269 const char *workstation, 5270 const uint8 chal[8], 5271 uint16_t validation_level, 5272 DATA_BLOB lm_response, 5273 DATA_BLOB nt_response, 5274 struct netr_SamInfo3 **info3); 5275NTSTATUS rpccli_netlogon_sam_network_logon_ex(struct rpc_pipe_client *cli, 5276 TALLOC_CTX *mem_ctx, 5277 uint32 logon_parameters, 5278 const char *server, 5279 const char *username, 5280 const char *domain, 5281 const char *workstation, 5282 const uint8 chal[8], 5283 uint16_t validation_level, 5284 DATA_BLOB lm_response, 5285 DATA_BLOB nt_response, 5286 struct netr_SamInfo3 **info3); 5287NTSTATUS rpccli_netlogon_set_trust_password(struct rpc_pipe_client *cli, 5288 TALLOC_CTX *mem_ctx, 5289 const char *account_name, 5290 const unsigned char orig_trust_passwd_hash[16], 5291 const char *new_trust_pwd_cleartext, 5292 const unsigned char new_trust_passwd_hash[16], 5293 enum netr_SchannelType sec_channel_type); 5294 5295/* The following definitions come from rpc_client/cli_pipe.c */ 5296 5297struct tevent_req *rpc_api_pipe_req_send(TALLOC_CTX *mem_ctx, 5298 struct event_context *ev, 5299 struct rpc_pipe_client *cli, 5300 uint8_t op_num, 5301 prs_struct *req_data); 5302NTSTATUS rpc_api_pipe_req_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, 5303 prs_struct *reply_pdu); 5304struct tevent_req *rpc_pipe_bind_send(TALLOC_CTX *mem_ctx, 5305 struct event_context *ev, 5306 struct rpc_pipe_client *cli, 5307 struct cli_pipe_auth_data *auth); 5308NTSTATUS rpc_pipe_bind_recv(struct tevent_req *req); 5309NTSTATUS rpc_pipe_bind(struct rpc_pipe_client *cli, 5310 struct cli_pipe_auth_data *auth); 5311unsigned int rpccli_set_timeout(struct rpc_pipe_client *cli, 5312 unsigned int timeout); 5313bool rpccli_is_connected(struct rpc_pipe_client *rpc_cli); 5314bool rpccli_get_pwd_hash(struct rpc_pipe_client *cli, uint8_t nt_hash[16]); 5315NTSTATUS rpccli_anon_bind_data(TALLOC_CTX *mem_ctx, 5316 struct cli_pipe_auth_data **presult); 5317NTSTATUS rpccli_schannel_bind_data(TALLOC_CTX *mem_ctx, const char *domain, 5318 enum dcerpc_AuthLevel auth_level, 5319 struct netlogon_creds_CredentialState *creds, 5320 struct cli_pipe_auth_data **presult); 5321NTSTATUS rpc_pipe_open_tcp(TALLOC_CTX *mem_ctx, const char *host, 5322 const struct ndr_syntax_id *abstract_syntax, 5323 struct rpc_pipe_client **presult); 5324NTSTATUS rpc_pipe_open_ncalrpc(TALLOC_CTX *mem_ctx, const char *socket_path, 5325 const struct ndr_syntax_id *abstract_syntax, 5326 struct rpc_pipe_client **presult); 5327NTSTATUS rpc_pipe_open_internal(TALLOC_CTX *mem_ctx, const struct ndr_syntax_id *abstract_syntax, 5328 NTSTATUS (*dispatch) (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *r), 5329 struct auth_serversupplied_info *serversupplied_info, 5330 struct rpc_pipe_client **presult); 5331NTSTATUS cli_rpc_pipe_open_noauth(struct cli_state *cli, 5332 const struct ndr_syntax_id *interface, 5333 struct rpc_pipe_client **presult); 5334NTSTATUS cli_rpc_pipe_open_noauth_transport(struct cli_state *cli, 5335 enum dcerpc_transport_t transport, 5336 const struct ndr_syntax_id *interface, 5337 struct rpc_pipe_client **presult); 5338NTSTATUS cli_rpc_pipe_open_ntlmssp(struct cli_state *cli, 5339 const struct ndr_syntax_id *interface, 5340 enum dcerpc_transport_t transport, 5341 enum dcerpc_AuthLevel auth_level, 5342 const char *domain, 5343 const char *username, 5344 const char *password, 5345 struct rpc_pipe_client **presult); 5346NTSTATUS cli_rpc_pipe_open_spnego_ntlmssp(struct cli_state *cli, 5347 const struct ndr_syntax_id *interface, 5348 enum dcerpc_transport_t transport, 5349 enum dcerpc_AuthLevel auth_level, 5350 const char *domain, 5351 const char *username, 5352 const char *password, 5353 struct rpc_pipe_client **presult); 5354NTSTATUS get_schannel_session_key(struct cli_state *cli, 5355 const char *domain, 5356 uint32 *pneg_flags, 5357 struct rpc_pipe_client **presult); 5358NTSTATUS cli_rpc_pipe_open_schannel_with_key(struct cli_state *cli, 5359 const struct ndr_syntax_id *interface, 5360 enum dcerpc_transport_t transport, 5361 enum dcerpc_AuthLevel auth_level, 5362 const char *domain, 5363 struct netlogon_creds_CredentialState **pdc, 5364 struct rpc_pipe_client **presult); 5365NTSTATUS cli_rpc_pipe_open_ntlmssp_auth_schannel(struct cli_state *cli, 5366 const struct ndr_syntax_id *interface, 5367 enum dcerpc_transport_t transport, 5368 enum dcerpc_AuthLevel auth_level, 5369 const char *domain, 5370 const char *username, 5371 const char *password, 5372 struct rpc_pipe_client **presult); 5373NTSTATUS cli_rpc_pipe_open_schannel(struct cli_state *cli, 5374 const struct ndr_syntax_id *interface, 5375 enum dcerpc_transport_t transport, 5376 enum dcerpc_AuthLevel auth_level, 5377 const char *domain, 5378 struct rpc_pipe_client **presult); 5379NTSTATUS cli_rpc_pipe_open_krb5(struct cli_state *cli, 5380 const struct ndr_syntax_id *interface, 5381 enum dcerpc_AuthLevel auth_level, 5382 const char *service_princ, 5383 const char *username, 5384 const char *password, 5385 struct rpc_pipe_client **presult); 5386NTSTATUS cli_get_session_key(TALLOC_CTX *mem_ctx, 5387 struct rpc_pipe_client *cli, 5388 DATA_BLOB *session_key); 5389NTSTATUS rpc_pipe_open_local(TALLOC_CTX *mem_ctx, 5390 struct rpc_cli_smbd_conn *conn, 5391 const struct ndr_syntax_id *syntax, 5392 struct rpc_pipe_client **presult); 5393 5394/* The following definitions come from rpc_client/rpc_transport_np.c */ 5395 5396struct tevent_req *rpc_transport_np_init_send(TALLOC_CTX *mem_ctx, 5397 struct event_context *ev, 5398 struct cli_state *cli, 5399 const struct ndr_syntax_id *abstract_syntax); 5400NTSTATUS rpc_transport_np_init_recv(struct tevent_req *req, 5401 TALLOC_CTX *mem_ctx, 5402 struct rpc_cli_transport **presult); 5403NTSTATUS rpc_transport_np_init(TALLOC_CTX *mem_ctx, struct cli_state *cli, 5404 const struct ndr_syntax_id *abstract_syntax, 5405 struct rpc_cli_transport **presult); 5406struct cli_state *rpc_pipe_np_smb_conn(struct rpc_pipe_client *p); 5407 5408/* The following definitions come from rpc_client/rpc_transport_smbd.c */ 5409 5410struct tevent_req *rpc_cli_smbd_conn_init_send(TALLOC_CTX *mem_ctx, 5411 struct event_context *ev, 5412 void (*stdout_callback)(char *buf, 5413 size_t len, 5414 void *priv), 5415 void *priv); 5416NTSTATUS rpc_cli_smbd_conn_init_recv(struct tevent_req *req, 5417 TALLOC_CTX *mem_ctx, 5418 struct rpc_cli_smbd_conn **pconn); 5419NTSTATUS rpc_cli_smbd_conn_init(TALLOC_CTX *mem_ctx, 5420 struct rpc_cli_smbd_conn **pconn, 5421 void (*stdout_callback)(char *buf, 5422 size_t len, 5423 void *priv), 5424 void *priv); 5425 5426struct tevent_req *rpc_transport_smbd_init_send(TALLOC_CTX *mem_ctx, 5427 struct event_context *ev, 5428 struct rpc_cli_smbd_conn *conn, 5429 const struct ndr_syntax_id *abstract_syntax); 5430NTSTATUS rpc_transport_smbd_init_recv(struct tevent_req *req, 5431 TALLOC_CTX *mem_ctx, 5432 struct rpc_cli_transport **presult); 5433NTSTATUS rpc_transport_smbd_init(TALLOC_CTX *mem_ctx, 5434 struct rpc_cli_smbd_conn *conn, 5435 const struct ndr_syntax_id *abstract_syntax, 5436 struct rpc_cli_transport **presult); 5437struct cli_state *rpc_pipe_smbd_smb_conn(struct rpc_pipe_client *p); 5438 5439/* The following definitions come from rpc_client/rpc_transport_sock.c */ 5440 5441NTSTATUS rpc_transport_sock_init(TALLOC_CTX *mem_ctx, int fd, 5442 struct rpc_cli_transport **presult); 5443 5444/* The following definitions come from rpc_client/cli_samr.c */ 5445 5446NTSTATUS rpccli_samr_chgpasswd_user(struct rpc_pipe_client *cli, 5447 TALLOC_CTX *mem_ctx, 5448 struct policy_handle *user_handle, 5449 const char *newpassword, 5450 const char *oldpassword); 5451NTSTATUS rpccli_samr_chgpasswd_user2(struct rpc_pipe_client *cli, 5452 TALLOC_CTX *mem_ctx, 5453 const char *username, 5454 const char *newpassword, 5455 const char *oldpassword); 5456NTSTATUS rpccli_samr_chng_pswd_auth_crap(struct rpc_pipe_client *cli, 5457 TALLOC_CTX *mem_ctx, 5458 const char *username, 5459 DATA_BLOB new_nt_password_blob, 5460 DATA_BLOB old_nt_hash_enc_blob, 5461 DATA_BLOB new_lm_password_blob, 5462 DATA_BLOB old_lm_hash_enc_blob); 5463NTSTATUS rpccli_samr_chgpasswd_user3(struct rpc_pipe_client *cli, 5464 TALLOC_CTX *mem_ctx, 5465 const char *username, 5466 const char *newpassword, 5467 const char *oldpassword, 5468 struct samr_DomInfo1 **dominfo1, 5469 struct samr_ChangeReject **reject); 5470void get_query_dispinfo_params(int loop_count, uint32 *max_entries, 5471 uint32 *max_size); 5472NTSTATUS rpccli_try_samr_connects(struct rpc_pipe_client *cli, 5473 TALLOC_CTX *mem_ctx, 5474 uint32_t access_mask, 5475 struct policy_handle *connect_pol); 5476 5477/* The following definitions come from rpc_client/cli_spoolss.c */ 5478 5479WERROR rpccli_spoolss_openprinter_ex(struct rpc_pipe_client *cli, 5480 TALLOC_CTX *mem_ctx, 5481 const char *printername, 5482 uint32_t access_desired, 5483 struct policy_handle *handle); 5484WERROR rpccli_spoolss_getprinterdriver(struct rpc_pipe_client *cli, 5485 TALLOC_CTX *mem_ctx, 5486 struct policy_handle *handle, 5487 const char *architecture, 5488 uint32_t level, 5489 uint32_t offered, 5490 union spoolss_DriverInfo *info); 5491WERROR rpccli_spoolss_getprinterdriver2(struct rpc_pipe_client *cli, 5492 TALLOC_CTX *mem_ctx, 5493 struct policy_handle *handle, 5494 const char *architecture, 5495 uint32_t level, 5496 uint32_t offered, 5497 uint32_t client_major_version, 5498 uint32_t client_minor_version, 5499 union spoolss_DriverInfo *info, 5500 uint32_t *server_major_version, 5501 uint32_t *server_minor_version); 5502WERROR rpccli_spoolss_addprinterex(struct rpc_pipe_client *cli, 5503 TALLOC_CTX *mem_ctx, 5504 struct spoolss_SetPrinterInfoCtr *info_ctr); 5505WERROR rpccli_spoolss_getprinter(struct rpc_pipe_client *cli, 5506 TALLOC_CTX *mem_ctx, 5507 struct policy_handle *handle, 5508 uint32_t level, 5509 uint32_t offered, 5510 union spoolss_PrinterInfo *info); 5511WERROR rpccli_spoolss_getjob(struct rpc_pipe_client *cli, 5512 TALLOC_CTX *mem_ctx, 5513 struct policy_handle *handle, 5514 uint32_t job_id, 5515 uint32_t level, 5516 uint32_t offered, 5517 union spoolss_JobInfo *info); 5518WERROR rpccli_spoolss_enumforms(struct rpc_pipe_client *cli, 5519 TALLOC_CTX *mem_ctx, 5520 struct policy_handle *handle, 5521 uint32_t level, 5522 uint32_t offered, 5523 uint32_t *count, 5524 union spoolss_FormInfo **info); 5525WERROR rpccli_spoolss_enumprintprocessors(struct rpc_pipe_client *cli, 5526 TALLOC_CTX *mem_ctx, 5527 const char *servername, 5528 const char *environment, 5529 uint32_t level, 5530 uint32_t offered, 5531 uint32_t *count, 5532 union spoolss_PrintProcessorInfo **info); 5533WERROR rpccli_spoolss_enumprintprocessordatatypes(struct rpc_pipe_client *cli, 5534 TALLOC_CTX *mem_ctx, 5535 const char *servername, 5536 const char *print_processor_name, 5537 uint32_t level, 5538 uint32_t offered, 5539 uint32_t *count, 5540 union spoolss_PrintProcDataTypesInfo **info); 5541WERROR rpccli_spoolss_enumports(struct rpc_pipe_client *cli, 5542 TALLOC_CTX *mem_ctx, 5543 const char *servername, 5544 uint32_t level, 5545 uint32_t offered, 5546 uint32_t *count, 5547 union spoolss_PortInfo **info); 5548WERROR rpccli_spoolss_enummonitors(struct rpc_pipe_client *cli, 5549 TALLOC_CTX *mem_ctx, 5550 const char *servername, 5551 uint32_t level, 5552 uint32_t offered, 5553 uint32_t *count, 5554 union spoolss_MonitorInfo **info); 5555WERROR rpccli_spoolss_enumjobs(struct rpc_pipe_client *cli, 5556 TALLOC_CTX *mem_ctx, 5557 struct policy_handle *handle, 5558 uint32_t firstjob, 5559 uint32_t numjobs, 5560 uint32_t level, 5561 uint32_t offered, 5562 uint32_t *count, 5563 union spoolss_JobInfo **info); 5564WERROR rpccli_spoolss_enumprinterdrivers(struct rpc_pipe_client *cli, 5565 TALLOC_CTX *mem_ctx, 5566 const char *server, 5567 const char *environment, 5568 uint32_t level, 5569 uint32_t offered, 5570 uint32_t *count, 5571 union spoolss_DriverInfo **info); 5572WERROR rpccli_spoolss_enumprinters(struct rpc_pipe_client *cli, 5573 TALLOC_CTX *mem_ctx, 5574 uint32_t flags, 5575 const char *server, 5576 uint32_t level, 5577 uint32_t offered, 5578 uint32_t *count, 5579 union spoolss_PrinterInfo **info); 5580WERROR rpccli_spoolss_getprinterdata(struct rpc_pipe_client *cli, 5581 TALLOC_CTX *mem_ctx, 5582 struct policy_handle *handle, 5583 const char *value_name, 5584 uint32_t offered, 5585 enum winreg_Type *type, 5586 uint32_t *needed_p, 5587 uint8_t **data_p); 5588WERROR rpccli_spoolss_enumprinterkey(struct rpc_pipe_client *cli, 5589 TALLOC_CTX *mem_ctx, 5590 struct policy_handle *handle, 5591 const char *key_name, 5592 const char ***key_buffer, 5593 uint32_t offered); 5594WERROR rpccli_spoolss_enumprinterdataex(struct rpc_pipe_client *cli, 5595 TALLOC_CTX *mem_ctx, 5596 struct policy_handle *handle, 5597 const char *key_name, 5598 uint32_t offered, 5599 uint32_t *count, 5600 struct spoolss_PrinterEnumValues **info); 5601 5602/* The following definitions come from rpc_client/init_spoolss.c */ 5603 5604bool init_systemtime(struct spoolss_Time *r, 5605 struct tm *unixtime); 5606WERROR pull_spoolss_PrinterData(TALLOC_CTX *mem_ctx, 5607 const DATA_BLOB *blob, 5608 union spoolss_PrinterData *data, 5609 enum winreg_Type type); 5610WERROR push_spoolss_PrinterData(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, 5611 enum winreg_Type type, 5612 union spoolss_PrinterData *data); 5613void spoolss_printerinfo2_to_setprinterinfo2(const struct spoolss_PrinterInfo2 *i, 5614 struct spoolss_SetPrinterInfo2 *s); 5615 5616/* The following definitions come from rpc_client/init_lsa.c */ 5617 5618void init_lsa_String(struct lsa_String *name, const char *s); 5619void init_lsa_StringLarge(struct lsa_StringLarge *name, const char *s); 5620void init_lsa_AsciiString(struct lsa_AsciiString *name, const char *s); 5621void init_lsa_AsciiStringLarge(struct lsa_AsciiStringLarge *name, const char *s); 5622 5623/* The following definitions come from rpc_client/init_netlogon.c */ 5624 5625NTSTATUS serverinfo_to_SamInfo2(struct auth_serversupplied_info *server_info, 5626 uint8_t *pipe_session_key, 5627 size_t pipe_session_key_len, 5628 struct netr_SamInfo2 *sam2); 5629NTSTATUS serverinfo_to_SamInfo3(struct auth_serversupplied_info *server_info, 5630 uint8_t *pipe_session_key, 5631 size_t pipe_session_key_len, 5632 struct netr_SamInfo3 *sam3); 5633NTSTATUS serverinfo_to_SamInfo6(struct auth_serversupplied_info *server_info, 5634 uint8_t *pipe_session_key, 5635 size_t pipe_session_key_len, 5636 struct netr_SamInfo6 *sam6); 5637void init_netr_CryptPassword(const char *pwd, 5638 unsigned char session_key[16], 5639 struct netr_CryptPassword *pwd_buf); 5640 5641/* The following definitions come from rpc_client/init_samr.c */ 5642 5643void init_samr_CryptPasswordEx(const char *pwd, 5644 DATA_BLOB *session_key, 5645 struct samr_CryptPasswordEx *pwd_buf); 5646void init_samr_CryptPassword(const char *pwd, 5647 DATA_BLOB *session_key, 5648 struct samr_CryptPassword *pwd_buf); 5649 5650/* The following definitions come from rpc_client/ndr.c */ 5651 5652struct tevent_req *cli_do_rpc_ndr_send(TALLOC_CTX *mem_ctx, 5653 struct tevent_context *ev, 5654 struct rpc_pipe_client *cli, 5655 const struct ndr_interface_table *table, 5656 uint32_t opnum, 5657 void *r); 5658NTSTATUS cli_do_rpc_ndr_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx); 5659NTSTATUS cli_do_rpc_ndr(struct rpc_pipe_client *cli, 5660 TALLOC_CTX *mem_ctx, 5661 const struct ndr_interface_table *table, 5662 uint32 opnum, void *r); 5663 5664/* The following definitions come from rpc_parse/parse_misc.c */ 5665 5666bool smb_io_time(const char *desc, NTTIME *nttime, prs_struct *ps, int depth); 5667bool smb_io_uuid(const char *desc, struct GUID *uuid, 5668 prs_struct *ps, int depth); 5669 5670/* The following definitions come from rpc_parse/parse_prs.c */ 5671 5672void prs_dump(const char *name, int v, prs_struct *ps); 5673void prs_dump_before(const char *name, int v, prs_struct *ps); 5674void prs_dump_region(const char *name, int v, prs_struct *ps, 5675 int from_off, int to_off); 5676void prs_debug(prs_struct *ps, int depth, const char *desc, const char *fn_name); 5677bool prs_init(prs_struct *ps, uint32 size, TALLOC_CTX *ctx, bool io); 5678void prs_mem_free(prs_struct *ps); 5679void prs_mem_clear(prs_struct *ps); 5680char *prs_alloc_mem_(prs_struct *ps, size_t size, unsigned int count); 5681char *prs_alloc_mem(prs_struct *ps, size_t size, unsigned int count); 5682TALLOC_CTX *prs_get_mem_context(prs_struct *ps); 5683void prs_give_memory(prs_struct *ps, char *buf, uint32 size, bool is_dynamic); 5684char *prs_take_memory(prs_struct *ps, uint32 *psize); 5685bool prs_set_buffer_size(prs_struct *ps, uint32 newsize); 5686bool prs_grow(prs_struct *ps, uint32 extra_space); 5687bool prs_force_grow(prs_struct *ps, uint32 extra_space); 5688char *prs_data_p(prs_struct *ps); 5689uint32 prs_data_size(prs_struct *ps); 5690uint32 prs_offset(prs_struct *ps); 5691bool prs_set_offset(prs_struct *ps, uint32 offset); 5692bool prs_append_prs_data(prs_struct *dst, prs_struct *src); 5693bool prs_append_some_data(prs_struct *dst, void *src_base, uint32_t start, 5694 uint32_t len); 5695bool prs_append_some_prs_data(prs_struct *dst, prs_struct *src, int32 start, uint32 len); 5696bool prs_copy_data_in(prs_struct *dst, const char *src, uint32 len); 5697bool prs_copy_data_out(char *dst, prs_struct *src, uint32 len); 5698bool prs_copy_all_data_out(char *dst, prs_struct *src); 5699void prs_set_endian_data(prs_struct *ps, bool endian); 5700bool prs_align(prs_struct *ps); 5701bool prs_align_uint16(prs_struct *ps); 5702bool prs_align_uint64(prs_struct *ps); 5703bool prs_align_custom(prs_struct *ps, uint8 boundary); 5704bool prs_align_needed(prs_struct *ps, uint32 needed); 5705char *prs_mem_get(prs_struct *ps, uint32 extra_size); 5706void prs_switch_type(prs_struct *ps, bool io); 5707void prs_force_dynamic(prs_struct *ps); 5708void prs_set_session_key(prs_struct *ps, const char sess_key[16]); 5709bool prs_uint8(const char *name, prs_struct *ps, int depth, uint8 *data8); 5710bool prs_uint16(const char *name, prs_struct *ps, int depth, uint16 *data16); 5711bool prs_uint32(const char *name, prs_struct *ps, int depth, uint32 *data32); 5712bool prs_int32(const char *name, prs_struct *ps, int depth, int32 *data32); 5713bool prs_uint64(const char *name, prs_struct *ps, int depth, uint64 *data64); 5714bool prs_dcerpc_status(const char *name, prs_struct *ps, int depth, NTSTATUS *status); 5715bool prs_uint8s(bool charmode, const char *name, prs_struct *ps, int depth, uint8 *data8s, int len); 5716bool prs_uint16s(bool charmode, const char *name, prs_struct *ps, int depth, uint16 *data16s, int len); 5717bool prs_uint32s(bool charmode, const char *name, prs_struct *ps, int depth, uint32 *data32s, int len); 5718bool prs_unistr(const char *name, prs_struct *ps, int depth, UNISTR *str); 5719bool prs_init_data_blob(prs_struct *prs, DATA_BLOB *blob, TALLOC_CTX *mem_ctx); 5720bool prs_data_blob(prs_struct *prs, DATA_BLOB *blob, TALLOC_CTX *mem_ctx); 5721 5722/* The following definitions come from rpc_parse/parse_rpc.c */ 5723 5724bool smb_register_ndr_interface(const struct ndr_interface_table *interface); 5725const struct ndr_interface_table *get_iface_from_syntax( 5726 const struct ndr_syntax_id *syntax); 5727const char *get_pipe_name_from_syntax(TALLOC_CTX *mem_ctx, 5728 const struct ndr_syntax_id *syntax); 5729void init_rpc_hdr(RPC_HDR *hdr, enum dcerpc_pkt_type pkt_type, uint8 flags, 5730 uint32 call_id, int data_len, int auth_len); 5731bool smb_io_rpc_hdr(const char *desc, RPC_HDR *rpc, prs_struct *ps, int depth); 5732void init_rpc_context(RPC_CONTEXT *rpc_ctx, uint16 context_id, 5733 const struct ndr_syntax_id *abstract, 5734 const struct ndr_syntax_id *transfer); 5735void init_rpc_hdr_rb(RPC_HDR_RB *rpc, 5736 uint16 max_tsize, uint16 max_rsize, uint32 assoc_gid, 5737 RPC_CONTEXT *context); 5738bool smb_io_rpc_context(const char *desc, RPC_CONTEXT *rpc_ctx, prs_struct *ps, int depth); 5739bool smb_io_rpc_hdr_rb(const char *desc, RPC_HDR_RB *rpc, prs_struct *ps, int depth); 5740void init_rpc_hdr_ba(RPC_HDR_BA *rpc, 5741 uint16 max_tsize, uint16 max_rsize, uint32 assoc_gid, 5742 const char *pipe_addr, 5743 uint8 num_results, uint16 result, uint16 reason, 5744 const struct ndr_syntax_id *transfer); 5745bool smb_io_rpc_hdr_ba(const char *desc, RPC_HDR_BA *rpc, prs_struct *ps, int depth); 5746void init_rpc_hdr_req(RPC_HDR_REQ *hdr, uint32 alloc_hint, uint16 opnum); 5747bool smb_io_rpc_hdr_req(const char *desc, RPC_HDR_REQ *rpc, prs_struct *ps, int depth); 5748bool smb_io_rpc_hdr_resp(const char *desc, RPC_HDR_RESP *rpc, prs_struct *ps, int depth); 5749bool smb_io_rpc_hdr_fault(const char *desc, RPC_HDR_FAULT *rpc, prs_struct *ps, int depth); 5750void init_rpc_hdr_auth(RPC_HDR_AUTH *rai, 5751 uint8 auth_type, uint8 auth_level, 5752 uint8 auth_pad_len, 5753 uint32 auth_context_id); 5754bool smb_io_rpc_hdr_auth(const char *desc, RPC_HDR_AUTH *rai, prs_struct *ps, int depth); 5755 5756/* The following definitions come from lib/eventlog/eventlog.c */ 5757 5758TDB_CONTEXT *elog_init_tdb( char *tdbfilename ); 5759char *elog_tdbname(TALLOC_CTX *ctx, const char *name ); 5760int elog_tdb_size( TDB_CONTEXT * tdb, int *MaxSize, int *Retention ); 5761bool prune_eventlog( TDB_CONTEXT * tdb ); 5762ELOG_TDB *elog_open_tdb( const char *logname, bool force_clear, bool read_only ); 5763int elog_close_tdb( ELOG_TDB *etdb, bool force_close ); 5764bool parse_logentry( TALLOC_CTX *mem_ctx, char *line, struct eventlog_Record_tdb *entry, bool * eor ); 5765size_t fixup_eventlog_record_tdb(struct eventlog_Record_tdb *r); 5766struct eventlog_Record_tdb *evlog_pull_record_tdb(TALLOC_CTX *mem_ctx, 5767 TDB_CONTEXT *tdb, 5768 uint32_t record_number); 5769NTSTATUS evlog_push_record_tdb(TALLOC_CTX *mem_ctx, 5770 TDB_CONTEXT *tdb, 5771 struct eventlog_Record_tdb *r, 5772 uint32_t *record_number); 5773NTSTATUS evlog_push_record(TALLOC_CTX *mem_ctx, 5774 TDB_CONTEXT *tdb, 5775 struct EVENTLOGRECORD *r, 5776 uint32_t *record_number); 5777struct EVENTLOGRECORD *evlog_pull_record(TALLOC_CTX *mem_ctx, 5778 TDB_CONTEXT *tdb, 5779 uint32_t record_number); 5780NTSTATUS evlog_evt_entry_to_tdb_entry(TALLOC_CTX *mem_ctx, 5781 const struct EVENTLOGRECORD *e, 5782 struct eventlog_Record_tdb *t); 5783NTSTATUS evlog_tdb_entry_to_evt_entry(TALLOC_CTX *mem_ctx, 5784 const struct eventlog_Record_tdb *t, 5785 struct EVENTLOGRECORD *e); 5786NTSTATUS evlog_convert_tdb_to_evt(TALLOC_CTX *mem_ctx, 5787 ELOG_TDB *etdb, 5788 DATA_BLOB *blob_p, 5789 uint32_t *num_records_p); 5790 5791/* The following definitions come from rpc_server/srv_eventlog_nt.c */ 5792 5793/* The following definitions come from rpc_server/srv_lsa_hnd.c */ 5794 5795size_t num_pipe_handles(struct handle_list *list); 5796bool init_pipe_handle_list(pipes_struct *p, 5797 const struct ndr_syntax_id *syntax); 5798bool create_policy_hnd(pipes_struct *p, struct policy_handle *hnd, void *data_ptr); 5799bool find_policy_by_hnd(pipes_struct *p, const struct policy_handle *hnd, 5800 void **data_p); 5801bool close_policy_hnd(pipes_struct *p, struct policy_handle *hnd); 5802void close_policy_by_pipe(pipes_struct *p); 5803bool pipe_access_check(pipes_struct *p); 5804 5805void *_policy_handle_create(struct pipes_struct *p, struct policy_handle *hnd, 5806 uint32_t access_granted, size_t data_size, 5807 const char *type, NTSTATUS *pstatus); 5808#define policy_handle_create(_p, _hnd, _access, _type, _pstatus) \ 5809 (_type *)_policy_handle_create((_p), (_hnd), (_access), sizeof(_type), #_type, \ 5810 (_pstatus)) 5811 5812void *_policy_handle_find(struct pipes_struct *p, 5813 const struct policy_handle *hnd, 5814 uint32_t access_required, uint32_t *paccess_granted, 5815 const char *name, const char *location, 5816 NTSTATUS *pstatus); 5817#define policy_handle_find(_p, _hnd, _access_required, _access_granted, _type, _pstatus) \ 5818 (_type *)_policy_handle_find((_p), (_hnd), (_access_required), \ 5819 (_access_granted), #_type, __location__, (_pstatus)) 5820 5821 5822/* The following definitions come from rpc_server/srv_pipe.c */ 5823 5824bool create_next_pdu(pipes_struct *p); 5825bool api_pipe_bind_auth3(pipes_struct *p, prs_struct *rpc_in_p); 5826bool setup_fault_pdu(pipes_struct *p, NTSTATUS status); 5827bool setup_cancel_ack_reply(pipes_struct *p, prs_struct *rpc_in_p); 5828NTSTATUS rpc_pipe_register_commands(int version, const char *clnt, 5829 const char *srv, 5830 const struct ndr_syntax_id *interface, 5831 const struct api_struct *cmds, int size); 5832NTSTATUS rpc_srv_register(int version, const char *clnt, 5833 const char *srv, 5834 const struct ndr_interface_table *iface, 5835 const struct api_struct *cmds, int size); 5836bool is_known_pipename(const char *cli_filename, struct ndr_syntax_id *syntax); 5837bool api_pipe_bind_req(pipes_struct *p, prs_struct *rpc_in_p); 5838bool api_pipe_alter_context(pipes_struct *p, prs_struct *rpc_in_p); 5839bool api_pipe_ntlmssp_auth_process(pipes_struct *p, prs_struct *rpc_in, 5840 uint32 *p_ss_padding_len, NTSTATUS *pstatus); 5841bool api_pipe_schannel_process(pipes_struct *p, prs_struct *rpc_in, uint32 *p_ss_padding_len); 5842void free_pipe_rpc_context( PIPE_RPC_FNS *list ); 5843bool api_pipe_request(pipes_struct *p); 5844 5845/* The following definitions come from rpc_server/srv_pipe_hnd.c */ 5846 5847pipes_struct *get_first_internal_pipe(void); 5848pipes_struct *get_next_internal_pipe(pipes_struct *p); 5849 5850bool fsp_is_np(struct files_struct *fsp); 5851NTSTATUS np_open(TALLOC_CTX *mem_ctx, const char *name, 5852 const char *client_address, 5853 struct auth_serversupplied_info *server_info, 5854 struct fake_file_handle **phandle); 5855struct tevent_req *np_write_send(TALLOC_CTX *mem_ctx, struct event_context *ev, 5856 struct fake_file_handle *handle, 5857 const uint8_t *data, size_t len); 5858NTSTATUS np_write_recv(struct tevent_req *req, ssize_t *pnwritten); 5859struct tevent_req *np_read_send(TALLOC_CTX *mem_ctx, struct event_context *ev, 5860 struct fake_file_handle *handle, 5861 uint8_t *data, size_t len); 5862NTSTATUS np_read_recv(struct tevent_req *req, ssize_t *nread, 5863 bool *is_data_outstanding); 5864 5865/* The following definitions come from rpc_server/srv_samr_util.c */ 5866 5867void copy_id2_to_sam_passwd(struct samu *to, 5868 struct samr_UserInfo2 *from); 5869void copy_id4_to_sam_passwd(struct samu *to, 5870 struct samr_UserInfo4 *from); 5871void copy_id6_to_sam_passwd(struct samu *to, 5872 struct samr_UserInfo6 *from); 5873void copy_id8_to_sam_passwd(struct samu *to, 5874 struct samr_UserInfo8 *from); 5875void copy_id10_to_sam_passwd(struct samu *to, 5876 struct samr_UserInfo10 *from); 5877void copy_id11_to_sam_passwd(struct samu *to, 5878 struct samr_UserInfo11 *from); 5879void copy_id12_to_sam_passwd(struct samu *to, 5880 struct samr_UserInfo12 *from); 5881void copy_id13_to_sam_passwd(struct samu *to, 5882 struct samr_UserInfo13 *from); 5883void copy_id14_to_sam_passwd(struct samu *to, 5884 struct samr_UserInfo14 *from); 5885void copy_id16_to_sam_passwd(struct samu *to, 5886 struct samr_UserInfo16 *from); 5887void copy_id17_to_sam_passwd(struct samu *to, 5888 struct samr_UserInfo17 *from); 5889void copy_id18_to_sam_passwd(struct samu *to, 5890 struct samr_UserInfo18 *from); 5891void copy_id20_to_sam_passwd(struct samu *to, 5892 struct samr_UserInfo20 *from); 5893void copy_id21_to_sam_passwd(const char *log_prefix, 5894 struct samu *to, 5895 struct samr_UserInfo21 *from); 5896void copy_id23_to_sam_passwd(struct samu *to, 5897 struct samr_UserInfo23 *from); 5898void copy_id24_to_sam_passwd(struct samu *to, 5899 struct samr_UserInfo24 *from); 5900void copy_id25_to_sam_passwd(struct samu *to, 5901 struct samr_UserInfo25 *from); 5902void copy_id26_to_sam_passwd(struct samu *to, 5903 struct samr_UserInfo26 *from); 5904 5905/* The following definitions come from rpc_server/srv_spoolss_nt.c */ 5906 5907void do_drv_upgrade_printer(struct messaging_context *msg, 5908 void *private_data, 5909 uint32_t msg_type, 5910 struct server_id server_id, 5911 DATA_BLOB *data); 5912void update_monitored_printq_cache( void ); 5913void reset_all_printerdata(struct messaging_context *msg, 5914 void *private_data, 5915 uint32_t msg_type, 5916 struct server_id server_id, 5917 DATA_BLOB *data); 5918bool convert_devicemode(const char *printername, 5919 const struct spoolss_DeviceMode *devmode, 5920 NT_DEVICEMODE **pp_nt_devmode); 5921WERROR set_printer_dataex(NT_PRINTER_INFO_LEVEL *printer, 5922 const char *key, const char *value, 5923 uint32_t type, uint8_t *data, int real_len); 5924void spoolss_notify_server_name(int snum, 5925 struct spoolss_Notify *data, 5926 print_queue_struct *queue, 5927 NT_PRINTER_INFO_LEVEL *printer, 5928 TALLOC_CTX *mem_ctx); 5929void spoolss_notify_printer_name(int snum, 5930 struct spoolss_Notify *data, 5931 print_queue_struct *queue, 5932 NT_PRINTER_INFO_LEVEL *printer, 5933 TALLOC_CTX *mem_ctx); 5934void spoolss_notify_share_name(int snum, 5935 struct spoolss_Notify *data, 5936 print_queue_struct *queue, 5937 NT_PRINTER_INFO_LEVEL *printer, 5938 TALLOC_CTX *mem_ctx); 5939void spoolss_notify_port_name(int snum, 5940 struct spoolss_Notify *data, 5941 print_queue_struct *queue, 5942 NT_PRINTER_INFO_LEVEL *printer, 5943 TALLOC_CTX *mem_ctx); 5944void spoolss_notify_driver_name(int snum, 5945 struct spoolss_Notify *data, 5946 print_queue_struct *queue, 5947 NT_PRINTER_INFO_LEVEL *printer, 5948 TALLOC_CTX *mem_ctx); 5949void spoolss_notify_comment(int snum, 5950 struct spoolss_Notify *data, 5951 print_queue_struct *queue, 5952 NT_PRINTER_INFO_LEVEL *printer, 5953 TALLOC_CTX *mem_ctx); 5954void spoolss_notify_location(int snum, 5955 struct spoolss_Notify *data, 5956 print_queue_struct *queue, 5957 NT_PRINTER_INFO_LEVEL *printer, 5958 TALLOC_CTX *mem_ctx); 5959void spoolss_notify_sepfile(int snum, 5960 struct spoolss_Notify *data, 5961 print_queue_struct *queue, 5962 NT_PRINTER_INFO_LEVEL *printer, 5963 TALLOC_CTX *mem_ctx); 5964void spoolss_notify_print_processor(int snum, 5965 struct spoolss_Notify *data, 5966 print_queue_struct *queue, 5967 NT_PRINTER_INFO_LEVEL *printer, 5968 TALLOC_CTX *mem_ctx); 5969void spoolss_notify_parameters(int snum, 5970 struct spoolss_Notify *data, 5971 print_queue_struct *queue, 5972 NT_PRINTER_INFO_LEVEL *printer, 5973 TALLOC_CTX *mem_ctx); 5974void spoolss_notify_datatype(int snum, 5975 struct spoolss_Notify *data, 5976 print_queue_struct *queue, 5977 NT_PRINTER_INFO_LEVEL *printer, 5978 TALLOC_CTX *mem_ctx); 5979void spoolss_notify_attributes(int snum, 5980 struct spoolss_Notify *data, 5981 print_queue_struct *queue, 5982 NT_PRINTER_INFO_LEVEL *printer, 5983 TALLOC_CTX *mem_ctx); 5984void spoolss_notify_cjobs(int snum, 5985 struct spoolss_Notify *data, 5986 print_queue_struct *queue, 5987 NT_PRINTER_INFO_LEVEL *printer, 5988 TALLOC_CTX *mem_ctx); 5989void construct_info_data(struct spoolss_Notify *info_data, 5990 enum spoolss_NotifyType type, 5991 uint16_t field, 5992 int id); 5993struct spoolss_DeviceMode *construct_dev_mode(TALLOC_CTX *mem_ctx, 5994 const char *servicename); 5995bool add_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token, NT_PRINTER_INFO_LEVEL *printer); 5996 5997/* The following definitions come from rpc_server/srv_srvsvc_nt.c */ 5998 5999char *valid_share_pathname(TALLOC_CTX *ctx, const char *dos_pathname); 6000 6001/* The following definitions come from rpc_server/srv_svcctl_nt.c */ 6002 6003bool init_service_op_table( void ); 6004 6005/* The following definitions come from rpcclient/cmd_dfs.c */ 6006 6007 6008/* The following definitions come from rpcclient/cmd_dssetup.c */ 6009 6010 6011/* The following definitions come from rpcclient/cmd_echo.c */ 6012 6013 6014/* The following definitions come from rpcclient/cmd_lsarpc.c */ 6015 6016 6017/* The following definitions come from rpcclient/cmd_netlogon.c */ 6018 6019 6020/* The following definitions come from rpcclient/cmd_ntsvcs.c */ 6021 6022 6023/* The following definitions come from rpcclient/cmd_samr.c */ 6024 6025 6026/* The following definitions come from rpcclient/cmd_shutdown.c */ 6027 6028 6029/* The following definitions come from rpcclient/cmd_spoolss.c */ 6030 6031 6032/* The following definitions come from rpcclient/cmd_srvsvc.c */ 6033 6034 6035/* The following definitions come from rpcclient/cmd_test.c */ 6036 6037 6038/* The following definitions come from rpcclient/cmd_wkssvc.c */ 6039 6040 6041/* The following definitions come from rpcclient/rpcclient.c */ 6042 6043 6044/* The following definitions come from services/services_db.c */ 6045 6046void svcctl_init_keys( void ); 6047SEC_DESC *svcctl_get_secdesc( TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *token ); 6048bool svcctl_set_secdesc( TALLOC_CTX *ctx, const char *name, SEC_DESC *sec_desc, NT_USER_TOKEN *token ); 6049const char *svcctl_lookup_dispname(TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *token ); 6050const char *svcctl_lookup_description(TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *token ); 6051struct regval_ctr *svcctl_fetch_regvalues( const char *name, NT_USER_TOKEN *token ); 6052 6053/* The following definitions come from services/svc_netlogon.c */ 6054 6055 6056/* The following definitions come from services/svc_rcinit.c */ 6057 6058 6059/* The following definitions come from services/svc_spoolss.c */ 6060 6061 6062/* The following definitions come from services/svc_winreg.c */ 6063 6064 6065/* The following definitions come from services/svc_wins.c */ 6066 6067 6068/* The following definitions come from smbd/aio.c */ 6069 6070void initialize_async_io_handler(void); 6071bool schedule_aio_read_and_X(connection_struct *conn, 6072 struct smb_request *req, 6073 files_struct *fsp, SMB_OFF_T startpos, 6074 size_t smb_maxcnt); 6075bool schedule_aio_write_and_X(connection_struct *conn, 6076 struct smb_request *req, 6077 files_struct *fsp, char *data, 6078 SMB_OFF_T startpos, 6079 size_t numtowrite); 6080int wait_for_aio_completion(files_struct *fsp); 6081void cancel_aio_by_fsp(files_struct *fsp); 6082void smbd_aio_complete_mid(unsigned int mid); 6083 6084/* The following definitions come from smbd/blocking.c */ 6085 6086void process_blocking_lock_queue(void); 6087bool push_blocking_lock_request( struct byte_range_lock *br_lck, 6088 struct smb_request *req, 6089 files_struct *fsp, 6090 int lock_timeout, 6091 int lock_num, 6092 uint32 lock_pid, 6093 enum brl_type lock_type, 6094 enum brl_flavour lock_flav, 6095 uint64_t offset, 6096 uint64_t count, 6097 uint32 blocking_pid); 6098void cancel_pending_lock_requests_by_fid(files_struct *fsp, struct byte_range_lock *br_lck); 6099void remove_pending_lock_requests_by_mid(int mid); 6100bool blocking_lock_was_deferred(int mid); 6101struct blocking_lock_record *blocking_lock_cancel(files_struct *fsp, 6102 uint32 lock_pid, 6103 uint64_t offset, 6104 uint64_t count, 6105 enum brl_flavour lock_flav, 6106 unsigned char locktype, 6107 NTSTATUS err); 6108 6109/* The following definitions come from smbd/change_trust_pw.c */ 6110 6111NTSTATUS change_trust_account_password( const char *domain, const char *remote_machine); 6112 6113/* The following definitions come from smbd/chgpasswd.c */ 6114 6115bool chgpasswd(const char *name, const struct passwd *pass, 6116 const char *oldpass, const char *newpass, bool as_root); 6117bool chgpasswd(const char *name, const struct passwd *pass, 6118 const char *oldpass, const char *newpass, bool as_root); 6119bool check_lanman_password(char *user, uchar * pass1, 6120 uchar * pass2, struct samu **hnd); 6121bool change_lanman_password(struct samu *sampass, uchar *pass2); 6122NTSTATUS pass_oem_change(char *user, 6123 uchar password_encrypted_with_lm_hash[516], 6124 const uchar old_lm_hash_encrypted[16], 6125 uchar password_encrypted_with_nt_hash[516], 6126 const uchar old_nt_hash_encrypted[16], 6127 uint32 *reject_reason); 6128bool password_in_history(uint8_t nt_pw[NT_HASH_LEN], 6129 uint32_t pw_history_len, 6130 const uint8_t *pw_history); 6131NTSTATUS change_oem_password(struct samu *hnd, char *old_passwd, char *new_passwd, bool as_root, uint32 *samr_reject_reason); 6132 6133/* The following definitions come from smbd/close.c */ 6134 6135void set_close_write_time(struct files_struct *fsp, struct timespec ts); 6136NTSTATUS close_file(struct smb_request *req, files_struct *fsp, 6137 enum file_close_type close_type); 6138void msg_close_file(struct messaging_context *msg_ctx, 6139 void *private_data, 6140 uint32_t msg_type, 6141 struct server_id server_id, 6142 DATA_BLOB *data); 6143NTSTATUS delete_all_streams(connection_struct *conn, const char *fname); 6144 6145/* The following definitions come from smbd/conn.c */ 6146 6147void conn_init(struct smbd_server_connection *sconn); 6148int conn_num_open(struct smbd_server_connection *sconn); 6149bool conn_snum_used(int snum); 6150connection_struct *conn_find(struct smbd_server_connection *sconn, 6151 unsigned cnum); 6152connection_struct *conn_new(struct smbd_server_connection *sconn); 6153bool conn_close_all(struct smbd_server_connection *sconn); 6154bool conn_idle_all(struct smbd_server_connection *sconn, time_t t); 6155void conn_clear_vuid_caches(struct smbd_server_connection *sconn, uint16 vuid); 6156void conn_free(connection_struct *conn); 6157void msg_force_tdis(struct messaging_context *msg, 6158 void *private_data, 6159 uint32_t msg_type, 6160 struct server_id server_id, 6161 DATA_BLOB *data); 6162 6163/* The following definitions come from smbd/connection.c */ 6164 6165bool yield_connection(connection_struct *conn, const char *name); 6166int count_current_connections( const char *sharename, bool clear ); 6167int count_all_current_connections(void); 6168bool claim_connection(connection_struct *conn, const char *name, 6169 uint32 msg_flags); 6170bool register_message_flags(bool doreg, uint32 msg_flags); 6171 6172/* The following definitions come from smbd/dfree.c */ 6173 6174uint64_t sys_disk_free(connection_struct *conn, const char *path, bool small_query, 6175 uint64_t *bsize,uint64_t *dfree,uint64_t *dsize); 6176uint64_t get_dfree_info(connection_struct *conn, 6177 const char *path, 6178 bool small_query, 6179 uint64_t *bsize, 6180 uint64_t *dfree, 6181 uint64_t *dsize); 6182 6183/* The following definitions come from smbd/dir.c */ 6184 6185bool make_dir_struct(TALLOC_CTX *ctx, 6186 char *buf, 6187 const char *mask, 6188 const char *fname, 6189 SMB_OFF_T size, 6190 uint32 mode, 6191 time_t date, 6192 bool uc); 6193bool init_dptrs(struct smbd_server_connection *sconn); 6194char *dptr_path(struct smbd_server_connection *sconn, int key); 6195char *dptr_wcard(struct smbd_server_connection *sconn, int key); 6196uint16 dptr_attr(struct smbd_server_connection *sconn, int key); 6197void dptr_close(struct smbd_server_connection *sconn, int *key); 6198void dptr_closecnum(connection_struct *conn); 6199void dptr_idlecnum(connection_struct *conn); 6200void dptr_closepath(struct smbd_server_connection *sconn, 6201 char *path,uint16 spid); 6202NTSTATUS dptr_create(connection_struct *conn, const char *path, bool old_handle, bool expect_close,uint16 spid, 6203 const char *wcard, bool wcard_has_wild, uint32 attr, struct dptr_struct **dptr_ret); 6204int dptr_CloseDir(struct dptr_struct *dptr); 6205void dptr_SeekDir(struct dptr_struct *dptr, long offset); 6206long dptr_TellDir(struct dptr_struct *dptr); 6207bool dptr_has_wild(struct dptr_struct *dptr); 6208int dptr_dnum(struct dptr_struct *dptr); 6209char *dptr_ReadDirName(TALLOC_CTX *ctx, 6210 struct dptr_struct *dptr, 6211 long *poffset, 6212 SMB_STRUCT_STAT *pst); 6213bool dptr_SearchDir(struct dptr_struct *dptr, const char *name, long *poffset, SMB_STRUCT_STAT *pst); 6214void dptr_DirCacheAdd(struct dptr_struct *dptr, const char *name, long offset); 6215void dptr_init_search_op(struct dptr_struct *dptr); 6216bool dptr_fill(struct smbd_server_connection *sconn, 6217 char *buf1,unsigned int key); 6218struct dptr_struct *dptr_fetch(struct smbd_server_connection *sconn, 6219 char *buf,int *num); 6220struct dptr_struct *dptr_fetch_lanman2(struct smbd_server_connection *sconn, 6221 int dptr_num); 6222bool dir_check_ftype(connection_struct *conn, uint32 mode, uint32 dirtype); 6223bool get_dir_entry(TALLOC_CTX *ctx, 6224 struct dptr_struct *dirptr, 6225 const char *mask, 6226 uint32 dirtype, 6227 char **pp_fname_out, 6228 SMB_OFF_T *size, 6229 uint32 *mode, 6230 struct timespec *date, 6231 bool check_descend, 6232 bool ask_sharemode); 6233bool is_visible_file(connection_struct *conn, const char *dir_path, const char *name, SMB_STRUCT_STAT *pst, bool use_veto); 6234struct smb_Dir *OpenDir(TALLOC_CTX *mem_ctx, connection_struct *conn, 6235 const char *name, const char *mask, uint32 attr); 6236const char *ReadDirName(struct smb_Dir *dirp, long *poffset, 6237 SMB_STRUCT_STAT *sbuf, char **talloced); 6238void RewindDir(struct smb_Dir *dirp, long *poffset); 6239void SeekDir(struct smb_Dir *dirp, long offset); 6240long TellDir(struct smb_Dir *dirp); 6241void DirCacheAdd(struct smb_Dir *dirp, const char *name, long offset); 6242bool SearchDir(struct smb_Dir *dirp, const char *name, long *poffset); 6243NTSTATUS can_delete_directory(struct connection_struct *conn, 6244 const char *dirname); 6245 6246/* The following definitions come from smbd/dmapi.c */ 6247 6248const void *dmapi_get_current_session(void); 6249bool dmapi_have_session(void); 6250bool dmapi_new_session(void); 6251bool dmapi_destroy_session(void); 6252uint32 dmapi_file_flags(const char * const path); 6253 6254/* The following definitions come from smbd/dnsregister.c */ 6255 6256bool smbd_setup_mdns_registration(struct tevent_context *ev, 6257 TALLOC_CTX *mem_ctx, 6258 uint16_t port); 6259 6260/* The following definitions come from smbd/dosmode.c */ 6261 6262mode_t unix_mode(connection_struct *conn, int dosmode, 6263 const struct smb_filename *smb_fname, 6264 const char *inherit_from_dir); 6265uint32 dos_mode_msdfs(connection_struct *conn, 6266 const struct smb_filename *smb_fname); 6267int dos_attributes_to_stat_dos_flags(uint32_t dosmode); 6268uint32 dos_mode(connection_struct *conn, struct smb_filename *smb_fname); 6269int file_set_dosmode(connection_struct *conn, struct smb_filename *smb_fname, 6270 uint32 dosmode, const char *parent_dir, bool newfile); 6271int file_ntimes(connection_struct *conn, const struct smb_filename *smb_fname, 6272 struct smb_file_time *ft); 6273bool set_sticky_write_time_path(struct file_id fileid, struct timespec mtime); 6274bool set_sticky_write_time_fsp(struct files_struct *fsp, 6275 struct timespec mtime); 6276 6277NTSTATUS set_create_timespec_ea(connection_struct *conn, 6278 const struct smb_filename *smb_fname, 6279 struct timespec create_time); 6280 6281struct timespec get_create_timespec(connection_struct *conn, 6282 struct files_struct *fsp, 6283 const struct smb_filename *smb_fname); 6284 6285struct timespec get_change_timespec(connection_struct *conn, 6286 struct files_struct *fsp, 6287 const struct smb_filename *smb_fname); 6288 6289/* The following definitions come from smbd/error.c */ 6290 6291bool use_nt_status(void); 6292void error_packet_set(char *outbuf, uint8 eclass, uint32 ecode, NTSTATUS ntstatus, int line, const char *file); 6293int error_packet(char *outbuf, uint8 eclass, uint32 ecode, NTSTATUS ntstatus, int line, const char *file); 6294void reply_nt_error(struct smb_request *req, NTSTATUS ntstatus, 6295 int line, const char *file); 6296void reply_force_dos_error(struct smb_request *req, uint8 eclass, uint32 ecode, 6297 int line, const char *file); 6298void reply_both_error(struct smb_request *req, uint8 eclass, uint32 ecode, 6299 NTSTATUS status, int line, const char *file); 6300void reply_openerror(struct smb_request *req, NTSTATUS status); 6301 6302/* The following definitions come from smbd/fake_file.c */ 6303 6304enum FAKE_FILE_TYPE is_fake_file_path(const char *path); 6305enum FAKE_FILE_TYPE is_fake_file(const struct smb_filename *smb_fname); 6306NTSTATUS open_fake_file(struct smb_request *req, connection_struct *conn, 6307 uint16_t current_vuid, 6308 enum FAKE_FILE_TYPE fake_file_type, 6309 const struct smb_filename *smb_fname, 6310 uint32 access_mask, 6311 files_struct **result); 6312NTSTATUS close_fake_file(struct smb_request *req, files_struct *fsp); 6313 6314/* The following definitions come from smbd/file_access.c */ 6315 6316bool can_access_file_acl(struct connection_struct *conn, 6317 const struct smb_filename *smb_fname, 6318 uint32_t access_mask); 6319bool can_delete_file_in_directory(connection_struct *conn, 6320 struct smb_filename *smb_fname); 6321bool can_access_file_data(connection_struct *conn, 6322 const struct smb_filename *smb_fname, 6323 uint32 access_mask); 6324bool can_write_to_file(connection_struct *conn, 6325 const struct smb_filename *smb_fname); 6326bool directory_has_default_acl(connection_struct *conn, const char *fname); 6327 6328/* The following definitions come from smbd/fileio.c */ 6329 6330ssize_t read_file(files_struct *fsp,char *data,SMB_OFF_T pos,size_t n); 6331void update_write_time_handler(struct event_context *ctx, 6332 struct timed_event *te, 6333 struct timeval now, 6334 void *private_data); 6335void trigger_write_time_update(struct files_struct *fsp); 6336void trigger_write_time_update_immediate(struct files_struct *fsp); 6337ssize_t write_file(struct smb_request *req, 6338 files_struct *fsp, 6339 const char *data, 6340 SMB_OFF_T pos, 6341 size_t n); 6342void delete_write_cache(files_struct *fsp); 6343void set_filelen_write_cache(files_struct *fsp, SMB_OFF_T file_size); 6344ssize_t flush_write_cache(files_struct *fsp, enum flush_reason_enum reason); 6345NTSTATUS sync_file(connection_struct *conn, files_struct *fsp, bool write_through); 6346int fsp_stat(files_struct *fsp); 6347 6348/* The following definitions come from smbd/filename.c */ 6349 6350NTSTATUS unix_convert(TALLOC_CTX *ctx, 6351 connection_struct *conn, 6352 const char *orig_path, 6353 struct smb_filename **smb_fname, 6354 uint32_t ucf_flags); 6355NTSTATUS check_name(connection_struct *conn, const char *name); 6356int get_real_filename(connection_struct *conn, const char *path, 6357 const char *name, TALLOC_CTX *mem_ctx, 6358 char **found_name); 6359NTSTATUS filename_convert(TALLOC_CTX *mem_ctx, 6360 connection_struct *conn, 6361 bool dfs_path, 6362 const char *name_in, 6363 uint32_t ucf_flags, 6364 bool *ppath_contains_wcard, 6365 struct smb_filename **pp_smb_fname); 6366 6367/* The following definitions come from smbd/filename_utils.c */ 6368 6369NTSTATUS get_full_smb_filename(TALLOC_CTX *ctx, const struct smb_filename *smb_fname, 6370 char **full_name); 6371NTSTATUS create_synthetic_smb_fname(TALLOC_CTX *ctx, const char *base_name, 6372 const char *stream_name, 6373 const SMB_STRUCT_STAT *psbuf, 6374 struct smb_filename **smb_fname_out); 6375NTSTATUS create_synthetic_smb_fname_split(TALLOC_CTX *ctx, 6376 const char *fname, 6377 const SMB_STRUCT_STAT *psbuf, 6378 struct smb_filename **smb_fname_out); 6379const char *smb_fname_str_dbg(const struct smb_filename *smb_fname); 6380const char *fsp_str_dbg(const struct files_struct *fsp); 6381NTSTATUS copy_smb_filename(TALLOC_CTX *ctx, 6382 const struct smb_filename *smb_fname_in, 6383 struct smb_filename **smb_fname_out); 6384bool is_ntfs_stream_smb_fname(const struct smb_filename *smb_fname); 6385bool is_ntfs_default_stream_smb_fname(const struct smb_filename *smb_fname); 6386 6387/* The following definitions come from smbd/files.c */ 6388 6389NTSTATUS file_new(struct smb_request *req, connection_struct *conn, 6390 files_struct **result); 6391void file_close_conn(connection_struct *conn); 6392void file_close_pid(uint16 smbpid, int vuid); 6393void file_init(void); 6394void file_close_user(int vuid); 6395void file_dump_open_table(void); 6396struct files_struct *file_walk_table( 6397 struct files_struct *(*fn)(struct files_struct *fsp, 6398 void *private_data), 6399 void *private_data); 6400files_struct *file_find_fd(int fd); 6401files_struct *file_find_dif(struct file_id id, unsigned long gen_id); 6402files_struct *file_find_fsp(files_struct *orig_fsp); 6403files_struct *file_find_di_first(struct file_id id); 6404files_struct *file_find_di_next(files_struct *start_fsp); 6405files_struct *file_find_print(void); 6406bool file_find_subpath(files_struct *dir_fsp); 6407void file_sync_all(connection_struct *conn); 6408void file_free(struct smb_request *req, files_struct *fsp); 6409files_struct *file_fnum(uint16 fnum); 6410files_struct *file_fsp(struct smb_request *req, uint16 fid); 6411NTSTATUS dup_file_fsp(struct smb_request *req, files_struct *from, 6412 uint32 access_mask, uint32 share_access, 6413 uint32 create_options, files_struct *to); 6414NTSTATUS fsp_set_smb_fname(struct files_struct *fsp, 6415 const struct smb_filename *smb_fname_in); 6416 6417/* The following definitions come from smbd/ipc.c */ 6418 6419void send_trans_reply(connection_struct *conn, 6420 struct smb_request *req, 6421 char *rparam, int rparam_len, 6422 char *rdata, int rdata_len, 6423 bool buffer_too_large); 6424void reply_trans(struct smb_request *req); 6425void reply_transs(struct smb_request *req); 6426 6427/* The following definitions come from smbd/lanman.c */ 6428 6429void api_reply(connection_struct *conn, uint16 vuid, 6430 struct smb_request *req, 6431 char *data, char *params, 6432 int tdscnt, int tpscnt, 6433 int mdrcnt, int mprcnt); 6434 6435/* The following definitions come from smbd/mangle.c */ 6436 6437void mangle_reset_cache(void); 6438void mangle_change_to_posix(void); 6439bool mangle_is_mangled(const char *s, const struct share_params *p); 6440bool mangle_is_8_3(const char *fname, bool check_case, 6441 const struct share_params *p); 6442bool mangle_is_8_3_wildcards(const char *fname, bool check_case, 6443 const struct share_params *p); 6444bool mangle_must_mangle(const char *fname, 6445 const struct share_params *p); 6446bool mangle_lookup_name_from_8_3(TALLOC_CTX *ctx, 6447 const char *in, 6448 char **out, /* talloced on the given context. */ 6449 const struct share_params *p); 6450bool name_to_8_3(const char *in, 6451 char out[13], 6452 bool cache83, 6453 const struct share_params *p); 6454 6455/* The following definitions come from smbd/mangle_hash.c */ 6456 6457const struct mangle_fns *mangle_hash_init(void); 6458 6459/* The following definitions come from smbd/mangle_hash2.c */ 6460 6461const struct mangle_fns *mangle_hash2_init(void); 6462const struct mangle_fns *posix_mangle_init(void); 6463 6464/* The following definitions come from smbd/map_username.c */ 6465 6466bool map_username(struct smbd_server_connection *sconn, fstring user); 6467 6468/* The following definitions come from smbd/message.c */ 6469 6470void reply_sends(struct smb_request *req); 6471void reply_sendstrt(struct smb_request *req); 6472void reply_sendtxt(struct smb_request *req); 6473void reply_sendend(struct smb_request *req); 6474 6475/* The following definitions come from smbd/msdfs.c */ 6476 6477bool is_msdfs_link(connection_struct *conn, 6478 const char *path, 6479 SMB_STRUCT_STAT *sbufp); 6480NTSTATUS get_referred_path(TALLOC_CTX *ctx, 6481 struct auth_serversupplied_info *server_info, 6482 const char *dfs_path, 6483 struct junction_map *jucn, 6484 int *consumedcntp, 6485 bool *self_referralp); 6486int setup_dfs_referral(connection_struct *orig_conn, 6487 const char *dfs_path, 6488 int max_referral_level, 6489 char **ppdata, NTSTATUS *pstatus); 6490bool create_junction(TALLOC_CTX *ctx, 6491 const char *dfs_path, 6492 struct junction_map *jucn); 6493bool create_msdfs_link(const struct junction_map *jucn); 6494bool remove_msdfs_link(const struct junction_map *jucn); 6495struct junction_map *enum_msdfs_links(TALLOC_CTX *ctx, size_t *p_num_jn); 6496NTSTATUS resolve_dfspath(TALLOC_CTX *ctx, 6497 connection_struct *conn, 6498 bool dfs_pathnames, 6499 const char *name_in, 6500 char **pp_name_out); 6501NTSTATUS resolve_dfspath_wcard(TALLOC_CTX *ctx, 6502 connection_struct *conn, 6503 bool dfs_pathnames, 6504 const char *name_in, 6505 bool allow_wcards, 6506 char **pp_name_out, 6507 bool *ppath_contains_wcard); 6508NTSTATUS create_conn_struct(TALLOC_CTX *ctx, 6509 connection_struct **pconn, 6510 int snum, 6511 const char *path, 6512 struct auth_serversupplied_info *server_info, 6513 char **poldcwd); 6514 6515/* The following definitions come from smbd/negprot.c */ 6516 6517void reply_negprot(struct smb_request *req); 6518 6519/* The following definitions come from smbd/notify.c */ 6520 6521void change_notify_reply(connection_struct *conn, 6522 struct smb_request *req, 6523 NTSTATUS error_code, 6524 uint32_t max_param, 6525 struct notify_change_buf *notify_buf, 6526 void (*reply_fn)(struct smb_request *req, 6527 NTSTATUS error_code, 6528 uint8_t *buf, size_t len)); 6529NTSTATUS change_notify_create(struct files_struct *fsp, uint32 filter, 6530 bool recursive); 6531NTSTATUS change_notify_add_request(struct smb_request *req, 6532 uint32 max_param, 6533 uint32 filter, bool recursive, 6534 struct files_struct *fsp, 6535 void (*reply_fn)(struct smb_request *req, 6536 NTSTATUS error_code, 6537 uint8_t *buf, size_t len)); 6538void remove_pending_change_notify_requests_by_mid(uint16 mid); 6539void remove_pending_change_notify_requests_by_fid(files_struct *fsp, 6540 NTSTATUS status); 6541void notify_fname(connection_struct *conn, uint32 action, uint32 filter, 6542 const char *path); 6543char *notify_filter_string(TALLOC_CTX *mem_ctx, uint32 filter); 6544struct sys_notify_context *sys_notify_context_create(connection_struct *conn, 6545 TALLOC_CTX *mem_ctx, 6546 struct event_context *ev); 6547NTSTATUS sys_notify_watch(struct sys_notify_context *ctx, 6548 struct notify_entry *e, 6549 void (*callback)(struct sys_notify_context *ctx, 6550 void *private_data, 6551 struct notify_event *ev), 6552 void *private_data, void *handle); 6553 6554/* The following definitions come from smbd/notify_inotify.c */ 6555 6556NTSTATUS inotify_watch(struct sys_notify_context *ctx, 6557 struct notify_entry *e, 6558 void (*callback)(struct sys_notify_context *ctx, 6559 void *private_data, 6560 struct notify_event *ev), 6561 void *private_data, 6562 void *handle_p); 6563 6564/* The following definitions come from smbd/notify_internal.c */ 6565 6566struct notify_context *notify_init(TALLOC_CTX *mem_ctx, struct server_id server, 6567 struct messaging_context *messaging_ctx, 6568 struct event_context *ev, 6569 connection_struct *conn); 6570NTSTATUS notify_add(struct notify_context *notify, struct notify_entry *e0, 6571 void (*callback)(void *, const struct notify_event *), 6572 void *private_data); 6573NTSTATUS notify_remove(struct notify_context *notify, void *private_data); 6574NTSTATUS notify_remove_onelevel(struct notify_context *notify, 6575 const struct file_id *fid, 6576 void *private_data); 6577void notify_onelevel(struct notify_context *notify, uint32_t action, 6578 uint32_t filter, struct file_id fid, const char *name); 6579void notify_trigger(struct notify_context *notify, 6580 uint32_t action, uint32_t filter, const char *path); 6581 6582/* The following definitions come from smbd/ntquotas.c */ 6583 6584int vfs_get_ntquota(files_struct *fsp, enum SMB_QUOTA_TYPE qtype, DOM_SID *psid, SMB_NTQUOTA_STRUCT *qt); 6585int vfs_set_ntquota(files_struct *fsp, enum SMB_QUOTA_TYPE qtype, DOM_SID *psid, SMB_NTQUOTA_STRUCT *qt); 6586int vfs_get_user_ntquota_list(files_struct *fsp, SMB_NTQUOTA_LIST **qt_list); 6587void *init_quota_handle(TALLOC_CTX *mem_ctx); 6588 6589/* The following definitions come from smbd/nttrans.c */ 6590 6591void send_nt_replies(connection_struct *conn, 6592 struct smb_request *req, NTSTATUS nt_error, 6593 char *params, int paramsize, 6594 char *pdata, int datasize); 6595void reply_ntcreate_and_X(struct smb_request *req); 6596struct ea_list *read_nttrans_ea_list(TALLOC_CTX *ctx, const char *pdata, size_t data_size); 6597void reply_ntcancel(struct smb_request *req); 6598void reply_ntrename(struct smb_request *req); 6599void reply_nttrans(struct smb_request *req); 6600void reply_nttranss(struct smb_request *req); 6601 6602/* The following definitions come from smbd/open.c */ 6603 6604NTSTATUS smb1_file_se_access_check(connection_struct *conn, 6605 const struct security_descriptor *sd, 6606 const NT_USER_TOKEN *token, 6607 uint32_t access_desired, 6608 uint32_t *access_granted); 6609NTSTATUS fd_close(files_struct *fsp); 6610void change_file_owner_to_parent(connection_struct *conn, 6611 const char *inherit_from_dir, 6612 files_struct *fsp); 6613NTSTATUS change_dir_owner_to_parent(connection_struct *conn, 6614 const char *inherit_from_dir, 6615 const char *fname, 6616 SMB_STRUCT_STAT *psbuf); 6617bool is_stat_open(uint32 access_mask); 6618bool request_timed_out(struct timeval request_time, 6619 struct timeval timeout); 6620bool open_match_attributes(connection_struct *conn, 6621 uint32 old_dos_attr, 6622 uint32 new_dos_attr, 6623 mode_t existing_unx_mode, 6624 mode_t new_unx_mode, 6625 mode_t *returned_unx_mode); 6626NTSTATUS fcb_or_dos_open(struct smb_request *req, 6627 connection_struct *conn, 6628 files_struct *fsp_to_dup_into, 6629 const struct smb_filename *smb_fname, 6630 struct file_id id, 6631 uint16 file_pid, 6632 uint16 vuid, 6633 uint32 access_mask, 6634 uint32 share_access, 6635 uint32 create_options); 6636NTSTATUS open_file_fchmod(connection_struct *conn, 6637 struct smb_filename *smb_fname, 6638 files_struct **result); 6639NTSTATUS create_directory(connection_struct *conn, struct smb_request *req, 6640 struct smb_filename *smb_dname); 6641void msg_file_was_renamed(struct messaging_context *msg, 6642 void *private_data, 6643 uint32_t msg_type, 6644 struct server_id server_id, 6645 DATA_BLOB *data); 6646NTSTATUS open_streams_for_delete(connection_struct *conn, 6647 const char *fname); 6648NTSTATUS create_file_default(connection_struct *conn, 6649 struct smb_request *req, 6650 uint16_t root_dir_fid, 6651 struct smb_filename * smb_fname, 6652 uint32_t access_mask, 6653 uint32_t share_access, 6654 uint32_t create_disposition, 6655 uint32_t create_options, 6656 uint32_t file_attributes, 6657 uint32_t oplock_request, 6658 uint64_t allocation_size, 6659 struct security_descriptor *sd, 6660 struct ea_list *ea_list, 6661 6662 files_struct **result, 6663 int *pinfo); 6664NTSTATUS get_relative_fid_filename(connection_struct *conn, 6665 struct smb_request *req, 6666 uint16_t root_dir_fid, 6667 const struct smb_filename *smb_fname, 6668 struct smb_filename **smb_fname_out); 6669 6670/* The following definitions come from smbd/oplock.c */ 6671 6672int32 get_number_of_exclusive_open_oplocks(void); 6673void break_kernel_oplock(struct messaging_context *msg_ctx, files_struct *fsp); 6674bool set_file_oplock(files_struct *fsp, int oplock_type); 6675void release_file_oplock(files_struct *fsp); 6676bool remove_oplock(files_struct *fsp); 6677bool downgrade_oplock(files_struct *fsp); 6678bool should_notify_deferred_opens(void); 6679void break_level2_to_none_async(files_struct *fsp); 6680void reply_to_oplock_break_requests(files_struct *fsp); 6681void process_oplock_async_level2_break_message(struct messaging_context *msg_ctx, 6682 void *private_data, 6683 uint32_t msg_type, 6684 struct server_id src, 6685 DATA_BLOB *data); 6686void contend_level2_oplocks_begin(files_struct *fsp, 6687 enum level2_contention_type type); 6688void contend_level2_oplocks_end(files_struct *fsp, 6689 enum level2_contention_type type); 6690void share_mode_entry_to_message(char *msg, const struct share_mode_entry *e); 6691void message_to_share_mode_entry(struct share_mode_entry *e, char *msg); 6692bool init_oplocks(struct messaging_context *msg_ctx); 6693 6694/* The following definitions come from smbd/oplock_irix.c */ 6695 6696struct kernel_oplocks *irix_init_kernel_oplocks(TALLOC_CTX *mem_ctx) ; 6697 6698/* The following definitions come from smbd/oplock_linux.c */ 6699 6700void linux_set_lease_capability(void); 6701int linux_set_lease_sighandler(int fd); 6702int linux_setlease(int fd, int leasetype); 6703struct kernel_oplocks *linux_init_kernel_oplocks(TALLOC_CTX *mem_ctx) ; 6704 6705/* The following definitions come from smbd/oplock_onefs.c */ 6706 6707struct kernel_oplocks *onefs_init_kernel_oplocks(TALLOC_CTX *mem_ctx); 6708 6709/* The following definitions come from smbd/password.c */ 6710 6711user_struct *get_valid_user_struct(struct smbd_server_connection *sconn, 6712 uint16 vuid); 6713bool is_partial_auth_vuid(struct smbd_server_connection *sconn, uint16 vuid); 6714user_struct *get_partial_auth_user_struct(struct smbd_server_connection *sconn, 6715 uint16 vuid); 6716void invalidate_vuid(struct smbd_server_connection *sconn, uint16 vuid); 6717void invalidate_all_vuids(struct smbd_server_connection *sconn); 6718int register_initial_vuid(struct smbd_server_connection *sconn); 6719int register_existing_vuid(struct smbd_server_connection *sconn, 6720 uint16 vuid, 6721 auth_serversupplied_info *server_info, 6722 DATA_BLOB response_blob, 6723 const char *smb_name); 6724void add_session_user(struct smbd_server_connection *sconn, const char *user); 6725void add_session_workgroup(struct smbd_server_connection *sconn, 6726 const char *workgroup); 6727const char *get_session_workgroup(struct smbd_server_connection *sconn); 6728bool user_in_netgroup(struct smbd_server_connection *sconn, 6729 const char *user, const char *ngname); 6730bool user_in_list(struct smbd_server_connection *sconn, 6731 const char *user,const char **list); 6732bool authorise_login(struct smbd_server_connection *sconn, 6733 int snum, fstring user, DATA_BLOB password, 6734 bool *guest); 6735 6736/* The following definitions come from smbd/pipes.c */ 6737 6738NTSTATUS open_np_file(struct smb_request *smb_req, const char *name, 6739 struct files_struct **pfsp); 6740void reply_open_pipe_and_X(connection_struct *conn, struct smb_request *req); 6741void reply_pipe_write(struct smb_request *req); 6742void reply_pipe_write_and_X(struct smb_request *req); 6743void reply_pipe_read_and_X(struct smb_request *req); 6744void reply_pipe_close(connection_struct *conn, struct smb_request *req); 6745 6746/* The following definitions come from smbd/posix_acls.c */ 6747 6748void create_file_sids(const SMB_STRUCT_STAT *psbuf, DOM_SID *powner_sid, DOM_SID *pgroup_sid); 6749bool nt4_compatible_acls(void); 6750uint32_t map_canon_ace_perms(int snum, 6751 enum security_ace_type *pacl_type, 6752 mode_t perms, 6753 bool directory_ace); 6754NTSTATUS unpack_nt_owners(int snum, uid_t *puser, gid_t *pgrp, uint32 security_info_sent, const SEC_DESC *psd); 6755SMB_ACL_T free_empty_sys_acl(connection_struct *conn, SMB_ACL_T the_acl); 6756NTSTATUS posix_fget_nt_acl(struct files_struct *fsp, uint32_t security_info, 6757 SEC_DESC **ppdesc); 6758NTSTATUS posix_get_nt_acl(struct connection_struct *conn, const char *name, 6759 uint32_t security_info, SEC_DESC **ppdesc); 6760int try_chown(connection_struct *conn, struct smb_filename *smb_fname, 6761 uid_t uid, gid_t gid); 6762NTSTATUS append_parent_acl(files_struct *fsp, 6763 const SEC_DESC *pcsd, 6764 SEC_DESC **pp_new_sd); 6765NTSTATUS set_nt_acl(files_struct *fsp, uint32 security_info_sent, const SEC_DESC *psd); 6766int get_acl_group_bits( connection_struct *conn, const char *fname, mode_t *mode ); 6767int chmod_acl(connection_struct *conn, const char *name, mode_t mode); 6768int inherit_access_posix_acl(connection_struct *conn, const char *inherit_from_dir, 6769 const char *name, mode_t mode); 6770int fchmod_acl(files_struct *fsp, mode_t mode); 6771bool set_unix_posix_default_acl(connection_struct *conn, const char *fname, 6772 const SMB_STRUCT_STAT *psbuf, 6773 uint16 num_def_acls, const char *pdata); 6774bool set_unix_posix_acl(connection_struct *conn, files_struct *fsp, const char *fname, uint16 num_acls, const char *pdata); 6775SEC_DESC *get_nt_acl_no_snum( TALLOC_CTX *ctx, const char *fname); 6776NTSTATUS make_default_filesystem_acl(TALLOC_CTX *ctx, 6777 const char *name, 6778 SMB_STRUCT_STAT *psbuf, 6779 SEC_DESC **ppdesc); 6780 6781/* The following definitions come from smbd/process.c */ 6782 6783void smbd_setup_sig_term_handler(void); 6784void smbd_setup_sig_hup_handler(void); 6785bool srv_send_smb(int fd, char *buffer, 6786 bool no_signing, uint32_t seqnum, 6787 bool do_encrypt, 6788 struct smb_perfcount_data *pcd); 6789int srv_set_message(char *buf, 6790 int num_words, 6791 int num_bytes, 6792 bool zero); 6793void init_smb_request(struct smb_request *req, 6794 const uint8 *inbuf, 6795 size_t unread_bytes, 6796 bool encrypted); 6797void remove_deferred_open_smb_message(uint16 mid); 6798void schedule_deferred_open_smb_message(uint16 mid); 6799bool open_was_deferred(uint16 mid); 6800struct pending_message_list *get_open_deferred_message(uint16 mid); 6801bool push_deferred_smb_message(struct smb_request *req, 6802 struct timeval request_time, 6803 struct timeval timeout, 6804 char *private_data, size_t priv_len); 6805struct idle_event *event_add_idle(struct event_context *event_ctx, 6806 TALLOC_CTX *mem_ctx, 6807 struct timeval interval, 6808 const char *name, 6809 bool (*handler)(const struct timeval *now, 6810 void *private_data), 6811 void *private_data); 6812NTSTATUS allow_new_trans(struct trans_state *list, int mid); 6813void reply_outbuf(struct smb_request *req, uint8 num_words, uint32 num_bytes); 6814const char *smb_fn_name(int type); 6815void add_to_common_flags2(uint32 v); 6816void remove_from_common_flags2(uint32 v); 6817void construct_reply_common_req(struct smb_request *req, char *outbuf); 6818size_t req_wct_ofs(struct smb_request *req); 6819void chain_reply(struct smb_request *req); 6820bool req_is_in_chain(struct smb_request *req); 6821void check_reload(time_t t); 6822void smbd_process(void); 6823 6824/* The following definitions come from smbd/quotas.c */ 6825 6826bool disk_quotas(const char *path, uint64_t *bsize, uint64_t *dfree, uint64_t *dsize); 6827bool disk_quotas(const char *path, uint64_t *bsize, uint64_t *dfree, uint64_t *dsize); 6828bool disk_quotas(const char *path, 6829 uint64_t *bsize, 6830 uint64_t *dfree, 6831 uint64_t *dsize); 6832bool disk_quotas(const char *path, uint64_t *bsize, uint64_t *dfree, uint64_t *dsize); 6833bool disk_quotas(const char *path, uint64_t *bsize, uint64_t *dfree, uint64_t *dsize); 6834bool disk_quotas(const char *path, uint64_t *bsize, uint64_t *dfree, uint64_t *dsize); 6835bool disk_quotas_vxfs(const char *name, char *path, uint64_t *bsize, uint64_t *dfree, uint64_t *dsize); 6836bool disk_quotas(const char *path,uint64_t *bsize,uint64_t *dfree,uint64_t *dsize); 6837bool disk_quotas(const char *path,uint64_t *bsize,uint64_t *dfree,uint64_t *dsize); 6838 6839/* The following definitions come from smbd/reply.c */ 6840 6841NTSTATUS check_path_syntax(char *path); 6842NTSTATUS check_path_syntax_wcard(char *path, bool *p_contains_wcard); 6843NTSTATUS check_path_syntax_posix(char *path); 6844size_t srvstr_get_path_wcard(TALLOC_CTX *ctx, 6845 const char *inbuf, 6846 uint16 smb_flags2, 6847 char **pp_dest, 6848 const char *src, 6849 size_t src_len, 6850 int flags, 6851 NTSTATUS *err, 6852 bool *contains_wcard); 6853size_t srvstr_get_path(TALLOC_CTX *ctx, 6854 const char *inbuf, 6855 uint16 smb_flags2, 6856 char **pp_dest, 6857 const char *src, 6858 size_t src_len, 6859 int flags, 6860 NTSTATUS *err); 6861size_t srvstr_get_path_req_wcard(TALLOC_CTX *mem_ctx, struct smb_request *req, 6862 char **pp_dest, const char *src, int flags, 6863 NTSTATUS *err, bool *contains_wcard); 6864size_t srvstr_get_path_req(TALLOC_CTX *mem_ctx, struct smb_request *req, 6865 char **pp_dest, const char *src, int flags, 6866 NTSTATUS *err); 6867bool check_fsp_open(connection_struct *conn, struct smb_request *req, 6868 files_struct *fsp); 6869bool check_fsp(connection_struct *conn, struct smb_request *req, 6870 files_struct *fsp); 6871bool check_fsp_ntquota_handle(connection_struct *conn, struct smb_request *req, 6872 files_struct *fsp); 6873bool fsp_belongs_conn(connection_struct *conn, struct smb_request *req, 6874 files_struct *fsp); 6875void reply_special(char *inbuf, size_t inbuf_len); 6876void reply_tcon(struct smb_request *req); 6877void reply_tcon_and_X(struct smb_request *req); 6878void reply_unknown_new(struct smb_request *req, uint8 type); 6879void reply_ioctl(struct smb_request *req); 6880void reply_checkpath(struct smb_request *req); 6881void reply_getatr(struct smb_request *req); 6882void reply_setatr(struct smb_request *req); 6883void reply_dskattr(struct smb_request *req); 6884void reply_search(struct smb_request *req); 6885void reply_fclose(struct smb_request *req); 6886void reply_open(struct smb_request *req); 6887void reply_open_and_X(struct smb_request *req); 6888void reply_ulogoffX(struct smb_request *req); 6889void reply_mknew(struct smb_request *req); 6890void reply_ctemp(struct smb_request *req); 6891NTSTATUS unlink_internals(connection_struct *conn, struct smb_request *req, 6892 uint32 dirtype, struct smb_filename *smb_fname, 6893 bool has_wild); 6894void reply_unlink(struct smb_request *req); 6895void reply_readbraw(struct smb_request *req); 6896void reply_lockread(struct smb_request *req); 6897void reply_read(struct smb_request *req); 6898void reply_read_and_X(struct smb_request *req); 6899void error_to_writebrawerr(struct smb_request *req); 6900void reply_writebraw(struct smb_request *req); 6901void reply_writeunlock(struct smb_request *req); 6902void reply_write(struct smb_request *req); 6903bool is_valid_writeX_buffer(const uint8_t *inbuf); 6904void reply_write_and_X(struct smb_request *req); 6905void reply_lseek(struct smb_request *req); 6906void reply_flush(struct smb_request *req); 6907void reply_exit(struct smb_request *req); 6908void reply_close(struct smb_request *req); 6909void reply_writeclose(struct smb_request *req); 6910void reply_lock(struct smb_request *req); 6911void reply_unlock(struct smb_request *req); 6912void reply_tdis(struct smb_request *req); 6913void reply_echo(struct smb_request *req); 6914void reply_printopen(struct smb_request *req); 6915void reply_printclose(struct smb_request *req); 6916void reply_printqueue(struct smb_request *req); 6917void reply_printwrite(struct smb_request *req); 6918void reply_mkdir(struct smb_request *req); 6919void reply_rmdir(struct smb_request *req); 6920NTSTATUS rename_internals_fsp(connection_struct *conn, 6921 files_struct *fsp, 6922 const struct smb_filename *smb_fname_dst_in, 6923 uint32 attrs, 6924 bool replace_if_exists); 6925NTSTATUS rename_internals(TALLOC_CTX *ctx, 6926 connection_struct *conn, 6927 struct smb_request *req, 6928 struct smb_filename *smb_fname_src, 6929 struct smb_filename *smb_fname_dst, 6930 uint32 attrs, 6931 bool replace_if_exists, 6932 bool src_has_wild, 6933 bool dest_has_wild, 6934 uint32_t access_mask); 6935void reply_mv(struct smb_request *req); 6936NTSTATUS copy_file(TALLOC_CTX *ctx, 6937 connection_struct *conn, 6938 struct smb_filename *smb_fname_src, 6939 struct smb_filename *smb_fname_dst, 6940 int ofun, 6941 int count, 6942 bool target_is_directory); 6943void reply_copy(struct smb_request *req); 6944uint32 get_lock_pid(const uint8_t *data, int data_offset, 6945 bool large_file_format); 6946uint64_t get_lock_count(const uint8_t *data, int data_offset, 6947 bool large_file_format); 6948uint64_t get_lock_offset(const uint8_t *data, int data_offset, 6949 bool large_file_format, bool *err); 6950void reply_lockingX(struct smb_request *req); 6951void reply_readbmpx(struct smb_request *req); 6952void reply_readbs(struct smb_request *req); 6953void reply_setattrE(struct smb_request *req); 6954void reply_writebmpx(struct smb_request *req); 6955void reply_writebs(struct smb_request *req); 6956void reply_getattrE(struct smb_request *req); 6957 6958/* The following definitions come from smbd/seal.c */ 6959 6960uint16_t srv_enc_ctx(void); 6961bool is_encrypted_packet(const uint8_t *inbuf); 6962void srv_free_enc_buffer(char *buf); 6963NTSTATUS srv_decrypt_buffer(char *buf); 6964NTSTATUS srv_encrypt_buffer(char *buf, char **buf_out); 6965NTSTATUS srv_request_encryption_setup(connection_struct *conn, 6966 unsigned char **ppdata, 6967 size_t *p_data_size, 6968 unsigned char **pparam, 6969 size_t *p_param_size); 6970NTSTATUS srv_encryption_start(connection_struct *conn); 6971void server_encryption_shutdown(void); 6972 6973/* The following definitions come from smbd/sec_ctx.c */ 6974 6975bool unix_token_equal(const UNIX_USER_TOKEN *t1, const UNIX_USER_TOKEN *t2); 6976bool push_sec_ctx(void); 6977void set_sec_ctx(uid_t uid, gid_t gid, int ngroups, gid_t *groups, NT_USER_TOKEN *token); 6978void set_root_sec_ctx(void); 6979bool pop_sec_ctx(void); 6980void init_sec_ctx(void); 6981 6982/* The following definitions come from smbd/server.c */ 6983 6984int smbd_server_fd(void); 6985int get_client_fd(void); 6986struct event_context *smbd_event_context(void); 6987struct messaging_context *smbd_messaging_context(void); 6988struct memcache *smbd_memcache(void); 6989void reload_printers(void); 6990bool reload_services(bool test); 6991void exit_server(const char *const explanation); 6992void exit_server_cleanly(const char *const explanation); 6993void exit_server_fault(void); 6994 6995/* The following definitions come from smbd/service.c */ 6996 6997bool set_conn_connectpath(connection_struct *conn, const char *connectpath); 6998bool set_current_service(connection_struct *conn, uint16 flags, bool do_chdir); 6999void load_registry_shares(void); 7000int add_home_service(const char *service, const char *username, const char *homedir); 7001int find_service(fstring service); 7002connection_struct *make_connection_snum(struct smbd_server_connection *sconn, 7003 int snum, user_struct *vuser, 7004 DATA_BLOB password, 7005 const char *pdev, 7006 NTSTATUS *pstatus); 7007connection_struct *make_connection(struct smbd_server_connection *sconn, 7008 const char *service_in, DATA_BLOB password, 7009 const char *pdev, uint16 vuid, 7010 NTSTATUS *status); 7011void close_cnum(connection_struct *conn, uint16 vuid); 7012 7013/* The following definitions come from smbd/session.c */ 7014 7015bool session_init(void); 7016bool session_claim(user_struct *vuser); 7017void session_yield(user_struct *vuser); 7018int list_sessions(TALLOC_CTX *mem_ctx, struct sessionid **session_list); 7019 7020/* The following definitions come from smbd/sesssetup.c */ 7021 7022NTSTATUS parse_spnego_mechanisms(DATA_BLOB blob_in, 7023 DATA_BLOB *pblob_out, 7024 char **kerb_mechOID); 7025void reply_sesssetup_and_X(struct smb_request *req); 7026 7027/* The following definitions come from smbd/share_access.c */ 7028 7029bool token_contains_name_in_list(const char *username, 7030 const char *domain, 7031 const char *sharename, 7032 const struct nt_user_token *token, 7033 const char **list); 7034bool user_ok_token(const char *username, const char *domain, 7035 const struct nt_user_token *token, int snum); 7036bool is_share_read_only_for_token(const char *username, 7037 const char *domain, 7038 const struct nt_user_token *token, 7039 connection_struct *conn); 7040 7041/* The following definitions come from smbd/srvstr.c */ 7042 7043size_t srvstr_push_fn(const char *function, unsigned int line, 7044 const char *base_ptr, uint16 smb_flags2, void *dest, 7045 const char *src, int dest_len, int flags); 7046ssize_t message_push_string(uint8 **outbuf, const char *str, int flags); 7047 7048/* The following definitions come from smbd/statcache.c */ 7049 7050void stat_cache_add( const char *full_orig_name, 7051 char *translated_path, 7052 bool case_sensitive); 7053bool stat_cache_lookup(connection_struct *conn, 7054 char **pp_name, 7055 char **pp_dirpath, 7056 char **pp_start, 7057 SMB_STRUCT_STAT *pst); 7058void send_stat_cache_delete_message(const char *name); 7059void stat_cache_delete(const char *name); 7060unsigned int fast_string_hash(TDB_DATA *key); 7061bool reset_stat_cache( void ); 7062 7063/* The following definitions come from smbd/statvfs.c */ 7064 7065int sys_statvfs(const char *path, vfs_statvfs_struct *statbuf); 7066 7067/* The following definitions come from smbd/trans2.c */ 7068 7069uint64_t smb_roundup(connection_struct *conn, uint64_t val); 7070uint64_t get_FileIndex(connection_struct *conn, const SMB_STRUCT_STAT *psbuf); 7071NTSTATUS get_ea_value(TALLOC_CTX *mem_ctx, connection_struct *conn, 7072 files_struct *fsp, const char *fname, 7073 const char *ea_name, struct ea_struct *pea); 7074NTSTATUS get_ea_names_from_file(TALLOC_CTX *mem_ctx, connection_struct *conn, 7075 files_struct *fsp, const char *fname, 7076 char ***pnames, size_t *pnum_names); 7077NTSTATUS set_ea(connection_struct *conn, files_struct *fsp, 7078 const struct smb_filename *smb_fname, struct ea_list *ea_list); 7079struct ea_list *read_ea_list_entry(TALLOC_CTX *ctx, const char *pdata, size_t data_size, size_t *pbytes_used); 7080void send_trans2_replies(connection_struct *conn, 7081 struct smb_request *req, 7082 const char *params, 7083 int paramsize, 7084 const char *pdata, 7085 int datasize, 7086 int max_data_bytes); 7087unsigned char *create_volume_objectid(connection_struct *conn, unsigned char objid[16]); 7088NTSTATUS hardlink_internals(TALLOC_CTX *ctx, 7089 connection_struct *conn, 7090 const struct smb_filename *smb_fname_old, 7091 const struct smb_filename *smb_fname_new); 7092NTSTATUS smb_set_file_time(connection_struct *conn, 7093 files_struct *fsp, 7094 const struct smb_filename *smb_fname, 7095 struct smb_file_time *ft, 7096 bool setting_write_time); 7097void reply_findclose(struct smb_request *req); 7098void reply_findnclose(struct smb_request *req); 7099void reply_trans2(struct smb_request *req); 7100void reply_transs2(struct smb_request *req); 7101 7102/* The following definitions come from smbd/uid.c */ 7103 7104bool change_to_guest(void); 7105void conn_clear_vuid_cache(connection_struct *conn, uint16_t vuid); 7106bool change_to_user(connection_struct *conn, uint16 vuid); 7107bool change_to_root_user(void); 7108bool become_authenticated_pipe_user(pipes_struct *p); 7109bool unbecome_authenticated_pipe_user(void); 7110void become_root(void); 7111void unbecome_root(void); 7112bool become_user(connection_struct *conn, uint16 vuid); 7113bool unbecome_user(void); 7114 7115/* The following definitions come from smbd/utmp.c */ 7116 7117void sys_utmp_claim(const char *username, const char *hostname, 7118 const char *ip_addr_str, 7119 const char *id_str, int id_num); 7120void sys_utmp_yield(const char *username, const char *hostname, 7121 const char *ip_addr_str, 7122 const char *id_str, int id_num); 7123void sys_utmp_yield(const char *username, const char *hostname, 7124 const char *ip_addr_str, 7125 const char *id_str, int id_num); 7126void sys_utmp_claim(const char *username, const char *hostname, 7127 const char *ip_addr_str, 7128 const char *id_str, int id_num); 7129 7130/* The following definitions come from smbd/vfs.c */ 7131 7132NTSTATUS smb_register_vfs(int version, const char *name, 7133 const struct vfs_fn_pointers *fns); 7134bool vfs_init_custom(connection_struct *conn, const char *vfs_object); 7135void *vfs_add_fsp_extension_notype(vfs_handle_struct *handle, 7136 files_struct *fsp, size_t ext_size, 7137 void (*destroy_fn)(void *p_data)); 7138void vfs_remove_fsp_extension(vfs_handle_struct *handle, files_struct *fsp); 7139void *vfs_memctx_fsp_extension(vfs_handle_struct *handle, files_struct *fsp); 7140void *vfs_fetch_fsp_extension(vfs_handle_struct *handle, files_struct *fsp); 7141bool smbd_vfs_init(connection_struct *conn); 7142NTSTATUS vfs_file_exist(connection_struct *conn, struct smb_filename *smb_fname); 7143ssize_t vfs_read_data(files_struct *fsp, char *buf, size_t byte_count); 7144ssize_t vfs_pread_data(files_struct *fsp, char *buf, 7145 size_t byte_count, SMB_OFF_T offset); 7146ssize_t vfs_write_data(struct smb_request *req, 7147 files_struct *fsp, 7148 const char *buffer, 7149 size_t N); 7150ssize_t vfs_pwrite_data(struct smb_request *req, 7151 files_struct *fsp, 7152 const char *buffer, 7153 size_t N, 7154 SMB_OFF_T offset); 7155int vfs_allocate_file_space(files_struct *fsp, uint64_t len); 7156int vfs_set_filelen(files_struct *fsp, SMB_OFF_T len); 7157int vfs_fill_sparse(files_struct *fsp, SMB_OFF_T len); 7158SMB_OFF_T vfs_transfer_file(files_struct *in, files_struct *out, SMB_OFF_T n); 7159const char *vfs_readdirname(connection_struct *conn, void *p, 7160 SMB_STRUCT_STAT *sbuf, char **talloced); 7161int vfs_ChDir(connection_struct *conn, const char *path); 7162char *vfs_GetWd(TALLOC_CTX *ctx, connection_struct *conn); 7163NTSTATUS check_reduced_name(connection_struct *conn, const char *fname); 7164int vfs_stat_smb_fname(struct connection_struct *conn, const char *fname, 7165 SMB_STRUCT_STAT *psbuf); 7166int vfs_lstat_smb_fname(struct connection_struct *conn, const char *fname, 7167 SMB_STRUCT_STAT *psbuf); 7168NTSTATUS vfs_stat_fsp(files_struct *fsp); 7169 7170/* The following definitions come from torture/denytest.c */ 7171 7172bool torture_denytest1(int dummy); 7173bool torture_denytest2(int dummy); 7174 7175/* The following definitions come from torture/mangle_test.c */ 7176 7177bool torture_mangle(int dummy); 7178 7179/* The following definitions come from torture/nbio.c */ 7180 7181double nbio_total(void); 7182void nb_alarm(int ignore); 7183void nbio_shmem(int n); 7184void nb_setup(struct cli_state *cli); 7185void nb_unlink(const char *fname); 7186void nb_createx(const char *fname, 7187 unsigned create_options, unsigned create_disposition, int handle); 7188void nb_writex(int handle, int offset, int size, int ret_size); 7189void nb_readx(int handle, int offset, int size, int ret_size); 7190void nb_close(int handle); 7191void nb_rmdir(const char *fname); 7192void nb_rename(const char *oldname, const char *newname); 7193void nb_qpathinfo(const char *fname); 7194void nb_qfileinfo(int fnum); 7195void nb_qfsinfo(int level); 7196void nb_findfirst(const char *mask); 7197void nb_flush(int fnum); 7198void nb_deltree(const char *dname); 7199void nb_cleanup(void); 7200 7201/* The following definitions come from torture/scanner.c */ 7202 7203bool torture_trans2_scan(int dummy); 7204bool torture_nttrans_scan(int dummy); 7205 7206/* The following definitions come from torture/torture.c */ 7207 7208void start_timer(void); 7209double end_timer(void); 7210void *shm_setup(int size); 7211bool smbcli_parse_unc(const char *unc_name, TALLOC_CTX *mem_ctx, 7212 char **hostname, char **sharename); 7213void torture_open_connection_free_unclist(char **unc_list); 7214bool torture_open_connection(struct cli_state **c, int conn_index); 7215bool torture_cli_session_setup2(struct cli_state *cli, uint16 *new_vuid); 7216bool torture_close_connection(struct cli_state *c); 7217bool torture_ioctl_test(int dummy); 7218bool torture_chkpath_test(int dummy); 7219 7220/* The following definitions come from torture/utable.c */ 7221 7222bool torture_utable(int dummy); 7223bool torture_casetable(int dummy); 7224 7225/* The following definitions come from utils/passwd_util.c */ 7226 7227char *stdin_new_passwd( void); 7228char *get_pass( const char *prompt, bool stdin_get); 7229 7230/* The following definitions come from winbindd/idmap.c */ 7231 7232bool idmap_is_offline(void); 7233bool idmap_is_online(void); 7234NTSTATUS smb_register_idmap(int version, const char *name, 7235 struct idmap_methods *methods); 7236NTSTATUS smb_register_idmap_alloc(int version, const char *name, 7237 struct idmap_alloc_methods *methods); 7238void idmap_close(void); 7239NTSTATUS idmap_init_cache(void); 7240NTSTATUS idmap_allocate_uid(struct unixid *id); 7241NTSTATUS idmap_allocate_gid(struct unixid *id); 7242NTSTATUS idmap_set_uid_hwm(struct unixid *id); 7243NTSTATUS idmap_set_gid_hwm(struct unixid *id); 7244NTSTATUS idmap_backends_unixid_to_sid(const char *domname, 7245 struct id_map *id); 7246NTSTATUS idmap_backends_sid_to_unixid(const char *domname, 7247 struct id_map *id); 7248NTSTATUS idmap_new_mapping(const struct dom_sid *psid, enum id_type type, 7249 struct unixid *pxid); 7250NTSTATUS idmap_set_mapping(const struct id_map *map); 7251NTSTATUS idmap_remove_mapping(const struct id_map *map); 7252 7253/* The following definitions come from winbindd/idmap_cache.c */ 7254 7255bool idmap_cache_find_sid2uid(const struct dom_sid *sid, uid_t *puid, 7256 bool *expired); 7257bool idmap_cache_find_uid2sid(uid_t uid, struct dom_sid *sid, bool *expired); 7258void idmap_cache_set_sid2uid(const struct dom_sid *sid, uid_t uid); 7259bool idmap_cache_find_sid2gid(const struct dom_sid *sid, gid_t *pgid, 7260 bool *expired); 7261bool idmap_cache_find_gid2sid(gid_t gid, struct dom_sid *sid, bool *expired); 7262void idmap_cache_set_sid2gid(const struct dom_sid *sid, gid_t gid); 7263 7264 7265/* The following definitions come from winbindd/idmap_nss.c */ 7266 7267NTSTATUS idmap_nss_init(void); 7268 7269/* The following definitions come from winbindd/idmap_passdb.c */ 7270 7271NTSTATUS idmap_passdb_init(void); 7272 7273/* The following definitions come from winbindd/idmap_tdb.c */ 7274 7275bool idmap_tdb_tdb_close(TDB_CONTEXT *tdbctx); 7276NTSTATUS idmap_alloc_tdb_init(void); 7277NTSTATUS idmap_tdb_init(void); 7278 7279/* The following definitions come from winbindd/idmap_util.c */ 7280 7281NTSTATUS idmap_uid_to_sid(const char *domname, DOM_SID *sid, uid_t uid); 7282NTSTATUS idmap_gid_to_sid(const char *domname, DOM_SID *sid, gid_t gid); 7283NTSTATUS idmap_sid_to_uid(const char *dom_name, DOM_SID *sid, uid_t *uid); 7284NTSTATUS idmap_sid_to_gid(const char *domname, DOM_SID *sid, gid_t *gid); 7285 7286/* The following definitions come from winbindd/nss_info.c */ 7287 7288 7289/* The following definitions come from winbindd/nss_info_template.c */ 7290 7291NTSTATUS nss_info_template_init( void ); 7292 7293/* The following definitions come from lib/avahi.c */ 7294 7295struct AvahiPoll *tevent_avahi_poll(TALLOC_CTX *mem_ctx, 7296 struct tevent_context *ev); 7297 7298/* The following definitions come from smbd/avahi_register.c */ 7299 7300void *avahi_start_register(TALLOC_CTX *mem_ctx, struct tevent_context *ev, 7301 uint16_t port); 7302 7303/* Misc protos */ 7304 7305struct fncall_context *fncall_context_init(TALLOC_CTX *mem_ctx, 7306 int max_threads); 7307struct tevent_req *fncall_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, 7308 struct fncall_context *ctx, 7309 void (*fn)(void *private_data), 7310 void *private_data); 7311int fncall_recv(struct tevent_req *req, int *perr); 7312 7313struct tevent_req *smbsock_connect_send(TALLOC_CTX *mem_ctx, 7314 struct tevent_context *ev, 7315 const struct sockaddr_storage *addr, 7316 const char *called_name, 7317 const char *calling_name); 7318NTSTATUS smbsock_connect_recv(struct tevent_req *req, int *sock, 7319 uint16_t *port); 7320NTSTATUS smbsock_connect(const struct sockaddr_storage *addr, 7321 const char *called_name, const char *calling_name, 7322 int *pfd, uint16_t *port); 7323 7324struct tevent_req *smbsock_any_connect_send(TALLOC_CTX *mem_ctx, 7325 struct tevent_context *ev, 7326 const struct sockaddr_storage *addrs, 7327 const char **called_names, 7328 size_t num_addrs); 7329NTSTATUS smbsock_any_connect_recv(struct tevent_req *req, int *pfd, 7330 size_t *chosen_index, uint16_t *port); 7331NTSTATUS smbsock_any_connect(const struct sockaddr_storage *addrs, 7332 const char **called_names, size_t num_addrs, 7333 int *pfd, size_t *chosen_index, uint16_t *port); 7334 7335/* The following definitions come from rpc_server/srv_samr_nt.c */ 7336NTSTATUS access_check_object( SEC_DESC *psd, NT_USER_TOKEN *token, 7337 SE_PRIV *rights, uint32 rights_mask, 7338 uint32 des_access, uint32 *acc_granted, 7339 const char *debug); 7340void map_max_allowed_access(const NT_USER_TOKEN *nt_token, 7341 const struct unix_user_token *unix_token, 7342 uint32_t *pacc_requested); 7343 7344/* The following definitions come from ../libds/common/flag_mapping.c */ 7345 7346uint32_t ds_acb2uf(uint32_t acb); 7347uint32_t ds_uf2acb(uint32_t uf); 7348uint32_t ds_uf2atype(uint32_t uf); 7349uint32_t ds_gtype2atype(uint32_t gtype); 7350enum lsa_SidType ds_atype_map(uint32_t atype); 7351 7352#endif /* _PROTO_H_ */ 7353