preparing for release of alpha.0.10
[Samba.git] / source / include / winbindd_proto.h
blob0d4dc67b0825b5daea9a45fc2291d1814550494a
1 #ifndef _WINBINDD_PROTO_H_
2 #define _WINBINDD_PROTO_H_
3 /* This file is automatically generated with "make proto". DO NOT EDIT */
6 /*The following definitions come from lib/access.c */
8 BOOL allow_access(char *deny_list,char *allow_list,
9 char *cname,char *caddr);
10 BOOL check_access(int sock, char *allow_list, char *deny_list);
12 /*The following definitions come from lib/bitmap.c */
14 struct bitmap *bitmap_allocate(int n);
15 BOOL bitmap_set(struct bitmap *bm, unsigned i);
16 BOOL bitmap_clear(struct bitmap *bm, unsigned i);
17 BOOL bitmap_query(struct bitmap *bm, unsigned i);
18 int bitmap_find(struct bitmap *bm, unsigned ofs);
20 /*The following definitions come from lib/charcnv.c */
22 char *unix2dos_format(char *str,BOOL overwrite);
23 char *dos2unix_format(char *str, BOOL overwrite);
24 void interpret_character_set(char *str);
26 /*The following definitions come from lib/charset.c */
28 void charset_initialise(void);
29 void codepage_initialise(int client_codepage);
30 void add_char_string(char *s);
32 /*The following definitions come from lib/crc32.c */
34 uint32 crc32_calc_buffer( uint32 count, char *buffer);
36 /*The following definitions come from lib/debug.c */
38 BOOL dbg_interactive(void);
39 void sig_usr2( int sig );
40 void sig_usr1( int sig );
41 void setup_logging( char *pname, BOOL interactive );
42 void reopen_logs( void );
43 void force_check_log_size( void );
44 void dbgflush( void );
45 BOOL dbghdr( int level, char *file, char *func, int line );
46 dbg_Token dbg_char2token( dbg_Token *state, int c );
48 /*The following definitions come from lib/doscalls.c */
50 int dos_unlink(char *fname);
51 int dos_open(char *fname,int flags,mode_t mode);
52 DIR *dos_opendir(char *dname);
53 char *dos_readdirname(DIR *p);
54 int dos_stat(char *fname,SMB_STRUCT_STAT *sbuf);
55 int dos_lstat(char *fname,SMB_STRUCT_STAT *sbuf);
56 int dos_mkdir(char *dname,mode_t mode);
57 int dos_rmdir(char *dname);
58 int dos_chdir(char *dname);
59 int dos_utime(char *fname,struct utimbuf *times);
60 int copy_reg(char *source, const char *dest);
61 int dos_rename(char *from, char *to);
62 int dos_chmod(char *fname,mode_t mode);
63 char *dos_getwd(char *unix_path);
64 BOOL dos_file_exist(char *fname,SMB_STRUCT_STAT *sbuf);
65 BOOL dos_directory_exist(char *dname,SMB_STRUCT_STAT *st);
66 time_t dos_file_modtime(char *fname);
67 SMB_OFF_T dos_file_size(char *file_name);
68 int dos_ChDir(char *path);
69 char *dos_GetWd(char *path);
71 /*The following definitions come from lib/fault.c */
73 void fault_setup(void (*fn)(void *));
75 /*The following definitions come from lib/genrand.c */
77 void generate_random_buffer( unsigned char *out, int len, BOOL re_seed);
79 /*The following definitions come from lib/getsmbpass.c */
81 char *getsmbpass(char *prompt) ;
83 /*The following definitions come from lib/hmacmd5.c */
85 void hmac_md5_init_rfc2104(uchar* key, int key_len, HMACMD5Context *ctx);
86 void hmac_md5_init_limK_to_64(const uchar* key, int key_len,
87 HMACMD5Context *ctx);
88 void hmac_md5_update(const uchar* text, int text_len, HMACMD5Context *ctx);
89 void hmac_md5_final(uchar *digest, HMACMD5Context *ctx);
90 void hmac_md5( uchar key[16], uchar* data, int data_len, uchar* digest);
92 /*The following definitions come from lib/interface.c */
94 void load_interfaces(void);
95 void iface_set_default(char *ip,char *bcast,char *nmask);
96 BOOL ismyip(struct in_addr ip);
97 BOOL is_local_net(struct in_addr from);
98 int iface_count(void);
99 BOOL we_are_multihomed(void);
100 struct interface *get_interface(int n);
101 struct in_addr *iface_n_ip(int n);
102 unsigned iface_hash(void);
103 struct in_addr *iface_bcast(struct in_addr ip);
104 struct in_addr *iface_ip(struct in_addr ip);
106 /*The following definitions come from lib/kanji.c */
108 void interpret_coding_system(char *str);
109 BOOL is_multibyte_codepage(void);
110 void initialize_multibyte_vectors( int client_codepage);
112 /*The following definitions come from lib/md4.c */
114 void mdfour(unsigned char *out, const unsigned char *in, int n);
116 /*The following definitions come from lib/md5.c */
118 void MD5Init(struct MD5Context *ctx);
119 void MD5Update(struct MD5Context *ctx, uchar const *buf, unsigned len);
120 void MD5Final(uchar digest[16], struct MD5Context *ctx);
121 void MD5Transform(uint32 buf[4], const uchar inext[64]);
123 /*The following definitions come from lib/msrpc-client.c */
125 BOOL receive_msrpc(int fd, prs_struct * data, unsigned int timeout);
126 BOOL msrpc_send(int fd, prs_struct * ps);
127 BOOL msrpc_receive(int fd, prs_struct * ps);
128 BOOL ncalrpc_l_connect(struct msrpc_local *msrpc, const char *pipe_name);
129 void ncalrpc_l_close_socket(struct msrpc_local *msrpc);
130 void ncalrpc_l_sockopt(struct msrpc_local *msrpc, char *options);
131 BOOL ncalrpc_l_connect_auth(struct msrpc_local *msrpc,
132 const vuser_key * key, const char *pipename);
133 struct msrpc_local *ncalrpc_l_initialise(struct msrpc_local *msrpc,
134 const vuser_key * key);
135 void ncalrpc_l_shutdown(struct msrpc_local *msrpc);
136 BOOL ncalrpc_l_establish_connection(struct msrpc_local *msrpc,
137 const char *pipe_name);
139 /*The following definitions come from lib/msrpc_use.c */
142 /*The following definitions come from lib/netmask.c */
144 int get_netmask(struct in_addr *ipaddr, struct in_addr *nmask);
146 /*The following definitions come from lib/pidfile.c */
148 pid_t pidfile_pid(char *name);
149 void pidfile_create(char *name);
151 /*The following definitions come from lib/replace.c */
153 char *rep_inet_ntoa(struct in_addr ip);
155 /*The following definitions come from lib/set_vuid.c */
157 void init_vuid(void);
158 BOOL become_vuser(const vuser_key *k);
159 BOOL unbecome_vuser(void);
161 /*The following definitions come from lib/sids.c */
163 struct sid_map* add_sidmap_to_array(uint32 *len, struct sid_map ***array,
164 const struct sid_map *name);
165 void get_sam_domain_name(void);
166 BOOL get_member_domain_sid(void);
167 void generate_wellknown_sids(void);
168 BOOL create_sidmap_table(void);
169 BOOL generate_sam_sid(char *domain_name, DOM_SID *sid);
170 BOOL pwdb_initialise(BOOL is_server);
171 BOOL map_domain_name_to_sid(DOM_SID *sid, char **nt_domain);
172 BOOL map_domain_sid_to_name(DOM_SID *sid, char *nt_domain);
173 BOOL map_domain_sid_to_any_dc(DOM_SID *sid, char *dc_name);
174 BOOL split_domain_name(const char *fullname, char *domain, char *name);
175 BOOL enumtrustdoms(char ***doms, uint32 *num_entries);
177 /*The following definitions come from lib/signal.c */
179 void BlockSignals(BOOL block,int signum);
180 void CatchSignal(int signum,void (*handler)(int ));
181 void CatchChild(void);
182 void CatchChildLeaveStatus(void);
184 /*The following definitions come from lib/slprintf.c */
186 int vslprintf(char *str, int n, char *format, va_list ap);
188 /*The following definitions come from libsmb/clientgen.c */
190 int cli_set_port(struct cli_state *cli, int port);
191 char *cli_errstr(struct cli_state *cli);
192 void cli_safe_smb_errstr(struct cli_state *cli, char *msg, size_t len);
193 BOOL get_safe_rap_errstr(int rap_error, char *err_msg, size_t msglen);
194 void cli_safe_errstr(struct cli_state *cli, char *err_msg, size_t msglen);
195 BOOL cli_send_trans(struct cli_state *cli, int trans,
196 char *name, int pipe_name_len,
197 int fid, int flags,
198 uint16 *setup, int lsetup, int msetup,
199 char *param, int lparam, int mparam,
200 char *data, int ldata, int mdata);
201 BOOL cli_api_pipe(struct cli_state *cli, char *pipe_name, int pipe_name_len,
202 uint16 *setup, uint32 setup_count, uint32 max_setup_count,
203 char *params, uint32 param_count, uint32 max_param_count,
204 char *data, uint32 data_count, uint32 max_data_count,
205 char **rparam, uint32 *rparam_count,
206 char **rdata, uint32 *rdata_count);
207 BOOL cli_api(struct cli_state *cli,
208 char *param, int prcnt, int mprcnt,
209 char *data, int drcnt, int mdrcnt,
210 char **rparam, int *rprcnt,
211 char **rdata, int *rdrcnt);
212 BOOL cli_NetWkstaUserLogon(struct cli_state *cli,char *user, char *workstation);
213 BOOL cli_RNetShareEnum(struct cli_state *cli, void (*fn)(const char *, uint32, const char *));
214 BOOL cli_NetServerEnum(struct cli_state *cli, char *workgroup, uint32 stype,
215 void (*fn)(const char *, uint32, const char *));
216 BOOL cli_session_setup_x(struct cli_state *cli,
217 char *user,
218 char *pass, int passlen,
219 char *ntpass, int ntpasslen,
220 char *user_domain);
221 BOOL cli_session_setup(struct cli_state *cli,
222 char *myhostname, char *user,
223 char *pass, int passlen,
224 char *ntpass, int ntpasslen,
225 char *user_domain);
226 BOOL cli_ulogoff(struct cli_state *cli);
227 BOOL cli_send_tconX(struct cli_state *cli,
228 char *share, char *dev, char *pass, int passlen);
229 BOOL cli_tdis(struct cli_state *cli);
230 BOOL cli_rename(struct cli_state *cli, char *fname_src, char *fname_dst);
231 BOOL cli_unlink(struct cli_state *cli, char *fname);
232 BOOL cli_mkdir(struct cli_state *cli, char *dname);
233 BOOL cli_rmdir(struct cli_state *cli, char *dname);
234 int cli_nt_create(struct cli_state *cli, const char *fname);
235 int cli_open(struct cli_state *cli, const char *fname,
236 int flags, int share_mode);
237 BOOL cli_close(struct cli_state *cli, int fnum);
238 BOOL cli_lock(struct cli_state *cli, int fnum, uint32 offset, uint32 len, int timeout);
239 BOOL cli_unlock(struct cli_state *cli, int fnum, uint32 offset, uint32 len, int timeout);
240 size_t cli_read_one(struct cli_state *cli, int fnum, char *buf, off_t offset, size_t size);
241 size_t cli_read(struct cli_state *cli, int fnum, char *buf, off_t offset, size_t size, BOOL overlap);
242 ssize_t cli_write(struct cli_state *cli,
243 int fnum, uint16 write_mode,
244 char *buf, off_t offset, size_t size, size_t bytes_left);
245 BOOL cli_getattrE(struct cli_state *cli, int fd,
246 uint16 *attr, size_t *size,
247 time_t *c_time, time_t *a_time, time_t *m_time);
248 BOOL cli_getatr(struct cli_state *cli, char *fname,
249 uint16 *attr, size_t *size, time_t *t);
250 BOOL cli_setatr(struct cli_state *cli, char *fname, uint16 attr, time_t t);
251 BOOL cli_qpathinfo(struct cli_state *cli, const char *fname,
252 time_t *c_time, time_t *a_time, time_t *m_time,
253 size_t *size, uint16 *mode);
254 BOOL cli_qpathinfo2(struct cli_state *cli, const char *fname,
255 time_t *c_time, time_t *a_time, time_t *m_time,
256 time_t *w_time, size_t *size, uint16 *mode,
257 SMB_INO_T *ino);
258 BOOL cli_qfileinfo(struct cli_state *cli, int fnum,
259 uint16 *mode, size_t *size,
260 time_t *c_time, time_t *a_time, time_t *m_time,
261 time_t *w_time, SMB_INO_T *ino);
262 int cli_list(struct cli_state *cli,const char *Mask,uint16 attribute,
263 void (*fn)(file_info *, const char *));
264 BOOL cli_oem_change_password(struct cli_state *cli, const char *user, const char *new_password,
265 const char *old_password);
266 BOOL cli_negprot(struct cli_state *cli);
267 BOOL cli_session_request(struct cli_state *cli,
268 struct nmb_name *calling, struct nmb_name *called);
269 BOOL cli_connect(struct cli_state *cli, const char *host, struct in_addr *ip);
270 void cli_init_creds(struct cli_state *cli, const struct ntuser_creds *usr);
271 struct cli_state *cli_initialise(struct cli_state *cli);
272 void cli_close_socket(struct cli_state *cli);
273 void cli_shutdown(struct cli_state *cli);
274 int cli_error(struct cli_state *cli, uint8 *eclass, uint32 *num);
275 void cli_sockopt(struct cli_state *cli, char *options);
276 uint16 cli_setpid(struct cli_state *cli, uint16 pid);
277 BOOL cli_reestablish_connection(struct cli_state *cli);
278 BOOL cli_establish_connection(struct cli_state *cli,
279 const char *dest_host, struct in_addr *dest_ip,
280 struct nmb_name *calling, struct nmb_name *called,
281 char *service, char *service_type,
282 BOOL do_shutdown, BOOL do_tcon);
283 BOOL cli_connect_auth(struct cli_state *cli,
284 const char* desthost,
285 struct in_addr *dest_ip,
286 const struct ntuser_creds *usr);
287 BOOL cli_connect_servers_auth(struct cli_state *cli,
288 char *p,
289 const struct ntuser_creds *usr);
290 BOOL cli_connect_serverlist(struct cli_state *cli, char *p);
291 int cli_printjob_del(struct cli_state *cli, int job);
292 int cli_print_queue(struct cli_state *cli,
293 void (*fn)(struct print_job_info *));
294 BOOL cli_chkpath(struct cli_state *cli, char *path);
295 BOOL cli_message_start(struct cli_state *cli, char *host, char *username,
296 int *grp);
297 BOOL cli_message_text(struct cli_state *cli, char *msg, int len, int grp);
298 BOOL cli_message_end(struct cli_state *cli, int grp);
299 BOOL cli_dskattr(struct cli_state *cli, int *bsize, int *total, int *avail);
300 BOOL get_any_dc_name(const char *domain, char *srv_name);
302 /*The following definitions come from libsmb/credentials.c */
304 char *credstr(const uchar *cred);
305 void cred_session_key(DOM_CHAL *clnt_chal, DOM_CHAL *srv_chal, const char *pass,
306 uchar session_key[8]);
307 void cred_create(uchar session_key[8], DOM_CHAL *stor_cred, UTIME timestamp,
308 DOM_CHAL *cred);
309 int cred_assert(const DOM_CHAL *cred, uchar session_key[8],
310 DOM_CHAL *stored_cred, UTIME timestamp);
311 BOOL clnt_deal_with_creds(uchar sess_key[8],
312 DOM_CRED *sto_clnt_cred, DOM_CRED *rcv_srv_cred);
313 BOOL deal_with_creds(uchar sess_key[8],
314 DOM_CRED *sto_clnt_cred,
315 const DOM_CRED *rcv_clnt_cred, DOM_CRED *rtn_srv_cred);
317 /*The following definitions come from libsmb/namequery.c */
319 BOOL name_status(int fd,char *name,int name_type,BOOL recurse,
320 struct in_addr to_ip,char *master,char *rname,
321 void (*fn)(struct packet_struct *));
322 struct in_addr *name_query(int fd,const char *name,int name_type, BOOL bcast,BOOL recurse,
323 struct in_addr to_ip, int *count, void (*fn)(struct packet_struct *));
324 FILE *startlmhosts(char *fname);
325 BOOL getlmhostsent( FILE *fp, pstring name, int *name_type, struct in_addr *ipaddr);
326 void endlmhosts(FILE *fp);
327 BOOL is_ip_address(const char *name);
328 BOOL resolve_name(const char *name, struct in_addr *return_ip, int name_type);
329 BOOL resolve_srv_name(const char* srv_name, fstring dest_host,
330 struct in_addr *ip);
331 BOOL find_master_ip(char *group, struct in_addr *master_ip);
333 /*The following definitions come from libsmb/nmblib.c */
335 void debug_nmb_packet(struct packet_struct *p);
336 char *nmb_namestr(struct nmb_name *n);
337 void nmb_safe_namestr(struct nmb_name *n, char *str, size_t len);
338 struct packet_struct *copy_packet(struct packet_struct *packet);
339 void free_packet(struct packet_struct *packet);
340 struct packet_struct *read_packet(int fd,enum packet_type packet_type);
341 void make_nmb_name( struct nmb_name *n, const char *name, int type, const char *this_scope );
342 BOOL nmb_name_equal(struct nmb_name *n1, struct nmb_name *n2);
343 BOOL send_packet(struct packet_struct *p);
344 struct packet_struct *receive_packet(int fd,enum packet_type type,int t);
345 void sort_query_replies(char *data, int n, struct in_addr ip);
346 BOOL read_nmb_sock(int c, struct nmb_state *con);
347 int get_nmb_sock(void);
348 char *dns_to_netbios_name(char *dns_name);
349 int name_mangle( char *In, char *Out, char name_type );
350 int name_extract(char *buf,int ofs,char *name);
351 int name_len(char *s1);
353 /*The following definitions come from libsmb/nterr.c */
355 BOOL get_safe_nt_error_msg(uint32 nt_code, char *msg, size_t len);
356 const char *get_nt_error_msg(uint32 nt_code);
358 /*The following definitions come from libsmb/pwd_cache.c */
360 void pwd_init(struct pwd_info *pwd);
361 BOOL pwd_is_nullpwd(const struct pwd_info *pwd);
362 void pwd_obfuscate_key(struct pwd_info *pwd, uint32 int_key, char *str_key);
363 BOOL pwd_compare(const struct pwd_info *_pwd1, const struct pwd_info *_pwd2);
364 void pwd_read(struct pwd_info *pwd, char *passwd_report, BOOL do_encrypt);
365 void pwd_set_nullpwd(struct pwd_info *pwd);
366 void pwd_set_cleartext(struct pwd_info *pwd, char *clr);
367 void pwd_get_cleartext(struct pwd_info *pwd, char *clr);
368 void pwd_set_lm_nt_16(struct pwd_info *pwd,
369 const uchar lm_pwd[16],
370 const uchar nt_pwd[16]);
371 void pwd_get_lm_nt_16(const struct pwd_info *pwd, uchar lm_pwd[16], uchar nt_pwd[16]);
372 void pwd_make_lm_nt_16(struct pwd_info *pwd, char *clr);
373 void pwd_make_lm_nt_owf2(struct pwd_info *pwd, const uchar srv_key[8],
374 const char *user, const char *server, const char *domain,
375 uchar sess_key[16]);
376 void pwd_make_lm_nt_owf(struct pwd_info *pwd, uchar cryptkey[8],
377 uchar sess_key[16]);
378 void pwd_get_lm_nt_owf(struct pwd_info *pwd, uchar lm_owf[24],
379 uchar *nt_owf, size_t *nt_owf_len);
381 /*The following definitions come from lib/smbrun.c */
383 int smbrun(char *cmd,char *outfile,BOOL shared);
385 /*The following definitions come from libsmb/smbdes.c */
387 void smbhash(uchar *out, const uchar *in, const uchar *key, int forw);
388 void E_P16(uchar *p14,uchar *p16);
389 void E_P24(const uchar *p21, const uchar *c8, uchar *p24);
390 void D_P16(const uchar *p14, const uchar *in, uchar *out);
391 void E_old_pw_hash( const uchar *p14, const uchar *in, uchar *out);
392 void cred_hash1(uchar *out, const uchar *in, const uchar *key);
393 void cred_hash2(uchar *out,uchar *in,uchar *key);
394 void cred_hash3(uchar *out, const uchar *in,uchar *key, int forw);
395 void SamOEMhash( uchar *data, const uchar *key, int val);
396 void sam_pwd_hash(uint32 rid, const uchar *in, uchar *out, int forw);
398 /*The following definitions come from libsmb/smbencrypt.c */
400 void SMBencrypt(uchar * pwrd, uchar * c8, uchar * p24);
401 void SMBNTencrypt(uchar * pwrd, uchar * c8, uchar * p24);
402 void E_md4hash(uchar * pwrd, uchar * p16);
403 void lm_owf_genW(const UNISTR2 * pwd, uchar p16[16]);
404 void lm_owf_gen(const char *pwd, uchar p16[16]);
405 void nt_owf_genW(const UNISTR2 * pwd, uchar nt_p16[16]);
406 void nt_owf_gen(const char *pwd, uchar nt_p16[16]);
407 void nt_lm_owf_genW(const UNISTR2 * pwd, uchar nt_p16[16], uchar lm_p16[16]);
408 void nt_lm_owf_gen(const char *pwd, uchar nt_p16[16], uchar lm_p16[16]);
409 void SMBOWFencrypt(const uchar pwrd[16], const uchar * c8, uchar p24[24]);
410 void SMBOWFencrypt_ntv2(const uchar kr[16],
411 const uchar * srv_chal, int srv_chal_len,
412 const uchar * cli_chal, int cli_chal_len,
413 char resp_buf[16]);
414 void SMBsesskeygen_ntv2(const uchar kr[16],
415 const uchar * nt_resp, char sess_key[16]);
416 void SMBsesskeygen_ntv1(const uchar kr[16],
417 const uchar * nt_resp, char sess_key[16]);
418 void SMBgenclientchals(char *lm_cli_chal,
419 char *nt_cli_chal, int *nt_cli_chal_len,
420 const char *srv, const char *dom);
421 void ntv2_owf_gen(const uchar owf[16],
422 const char *user_n, const char *domain_n, uchar kr_buf[16]);
423 void NTLMSSPOWFencrypt(const uchar pwrd[8], const uchar * ntlmchalresp,
424 uchar p24[24]);
425 BOOL make_oem_passwd_hash(uchar data[516],
426 const char *pwrd, int new_pw_len,
427 const uchar old_pw_hash[16], BOOL unicode);
428 BOOL nt_encrypt_string2(STRING2 * out, const STRING2 * in, const uchar * key);
429 BOOL nt_decrypt_string2(STRING2 * out, const STRING2 * in, const uchar * key);
430 void create_ntlmssp_resp(struct pwd_info *pwd,
431 char *domain, char *user_name, char *my_name,
432 uint32 ntlmssp_cli_flgs, prs_struct * auth_resp);
433 BOOL decode_pw_buffer(const char buffer[516], char *new_pwrd,
434 int new_pwrd_size, uint32 * new_pw_len);
435 BOOL encode_pw_buffer(char buffer[516], const char *new_pass,
436 int new_pw_len, BOOL nt_pass_set);
438 /*The following definitions come from libsmb/smberr.c */
440 char *smb_err_msg(uint8 class, uint32 num);
441 BOOL smb_safe_err_msg(uint8 class, uint32 num, char *ret, size_t len);
442 BOOL smb_safe_errstr(char *inbuf, char *msg, size_t len);
443 char *smb_errstr(char *inbuf);
445 /*The following definitions come from lib/snprintf.c */
448 /*The following definitions come from lib/stub_uid.c */
450 void become_root(BOOL save_dir);
451 void unbecome_root(BOOL restore_dir);
452 const vuser_key *get_sec_ctx(void);
454 /*The following definitions come from lib/sursalgdomonly.c */
456 BOOL surs_algdomonly_sam_sid_to_unixid(DOM_SID *sid, uint32 type, uint32 *id,
457 BOOL create);
458 BOOL surs_algdomonly_unixid_to_sam_sid(uint32 id, uint32 type, DOM_SID *sid,
459 BOOL create);
461 /*The following definitions come from lib/sursalgnt5ldap.c */
463 BOOL surs_nt5ldap_sam_sid_to_unixid(LDAPDB *hds, DOM_SID * sid, uint32 type,
464 uint32 * id, BOOL create);
465 BOOL surs_nt5ldap_unixid_to_sam_sid(LDAPDB *hds, uint32 id, uint32 type,
466 DOM_SID * sid, BOOL create);
468 /*The following definitions come from lib/surs.c */
470 BOOL surs_sam_sid_to_unixid(DOM_SID *sid, uint32 type, uint32 *id, BOOL create);
471 BOOL surs_unixid_to_sam_sid(uint32 id, uint32 type, DOM_SID *sid, BOOL create);
473 /*The following definitions come from lib/surstdb.c */
475 BOOL surs_tdb_sam_sid_to_unixid(DOM_SID * sid, uint32 type, uint32 * id,
476 BOOL create);
477 BOOL surs_tdb_unixid_to_sam_sid(uint32 id, uint32 type, DOM_SID * sid,
478 BOOL create);
480 /*The following definitions come from lib/system.c */
482 int sys_select(int maxfd, fd_set *fds, fd_set *w_fds, struct timeval *tval);
483 int sys_select(int maxfd, fd_set *r_fds, fd_set *w_fds, struct timeval *tval);
484 int sys_stat(const char *fname,SMB_STRUCT_STAT *sbuf);
485 int sys_fstat(int fd,SMB_STRUCT_STAT *sbuf);
486 int sys_lstat(const char *fname,SMB_STRUCT_STAT *sbuf);
487 int sys_ftruncate(int fd, SMB_OFF_T offset);
488 SMB_OFF_T sys_lseek(int fd, SMB_OFF_T offset, int whence);
489 int sys_fseek(FILE *fp, SMB_OFF_T offset, int whence);
490 SMB_OFF_T sys_ftell(FILE *fp);
491 int sys_creat(const char *path, mode_t mode);
492 int sys_open(const char *path, int oflag, mode_t mode);
493 FILE *sys_fopen(const char *path, const char *type);
494 void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, SMB_OFF_T offset);
495 int sys_waitpid(pid_t pid,int *status,int options);
496 char *sys_getwd(char *s);
497 int sys_chown(const char *fname,uid_t uid,gid_t gid);
498 int sys_chroot(const char *dname);
499 struct hostent *sys_gethostbyname(const char *name);
500 BOOL set_process_capability( uint32 cap_flag, BOOL enable );
501 BOOL set_inherited_process_capability( uint32 cap_flag, BOOL enable );
502 long sys_random(void);
503 void sys_srandom(unsigned int seed);
504 int sys_getgroups(int setlen, gid_t *gidset);
505 struct passwd *copy_passwd_struct(struct passwd *pass);
506 struct passwd *sys_getpwnam(const char *name);
507 struct passwd *sys_getpwuid(uid_t uid);
509 /*The following definitions come from lib/time.c */
511 void GetTimeOfDay(struct timeval *tval);
512 void TimeInit(void);
513 int TimeDiff(time_t t);
514 struct tm *LocalTime(time_t *t);
515 time_t nt_time_to_unix(const NTTIME *nt);
516 time_t interpret_long_date(char *p);
517 void unix_to_nt_time(NTTIME *nt, time_t t);
518 void init_nt_time(NTTIME *nt);
519 void put_long_date(char *p,time_t t);
520 BOOL null_mtime(time_t mtime);
521 void put_dos_date(char *buf,int offset,time_t unixdate);
522 void put_dos_date2(char *buf,int offset,time_t unixdate);
523 void put_dos_date3(char *buf,int offset,time_t unixdate);
524 time_t make_unix_date(void *date_ptr);
525 time_t make_unix_date2(void *date_ptr);
526 time_t make_unix_date3(void *date_ptr);
527 char *http_timestring(time_t t);
528 char *timestring(void );
529 time_t get_create_time(SMB_STRUCT_STAT *st,BOOL fake_dirs);
531 /*The following definitions come from lib/ufc.c */
533 char *ufc_crypt(char *key,char *salt);
535 /*The following definitions come from lib/username.c */
537 struct passwd *hashed_getpwnam(const char *name);
538 char *uidtoname(uid_t uid);
539 char *get_unixhome_dir(char *user);
540 BOOL map_username(char *user);
541 const struct passwd *Get_Pwnam(char *user,BOOL allow_change);
542 BOOL user_ok(char *user,int snum);
543 BOOL user_in_list(char *user,char *list);
545 /*The following definitions come from lib/util_array.c */
547 void free_void_array(uint32 num_entries, void **entries,
548 void(free_item)(void*));
549 void* add_copy_to_array(uint32 *len, void ***array, const void *item,
550 void*(item_dup)(const void*), BOOL alloc_anyway);
551 void* add_item_to_array(uint32 *len, void ***array, void *item);
552 void free_use_info_array(uint32 num_entries, struct use_info **entries);
553 struct use_info* add_use_info_to_array(uint32 *len, struct use_info ***array,
554 const struct use_info *name);
555 void free_char_array(uint32 num_entries, char **entries);
556 char* add_chars_to_array(uint32 *len, char ***array, const char *name);
557 void free_uint32_array(uint32 num_entries, uint32 **entries);
558 uint32* add_uint32s_to_array(uint32 *len, uint32 ***array, const uint32 *name);
559 void free_unistr_array(uint32 num_entries, UNISTR2 **entries);
560 UNISTR2* add_unistr_to_array(uint32 *len, UNISTR2 ***array, UNISTR2 *name);
561 void free_sid_array(uint32 num_entries, DOM_SID **entries);
562 DOM_SID* add_sid_to_array(uint32 *len, DOM_SID ***array, const DOM_SID *sid);
564 /*The following definitions come from lib/util.c */
566 BOOL init_myworkgroup(void);
567 char *tmpdir(void);
568 BOOL in_group(gid_t group, gid_t current_gid, int ngroups, gid_t * groups);
569 uint32 get_number(const char *tmp);
570 char *Atoic(char *p, int *n, char *c);
571 uint32 *add_num_to_list(uint32 ** num, int *count, int val);
572 char *get_numlist(char *p, uint32 ** num, int *count);
573 void putip(void *dest, void *src);
574 BOOL file_exist(char *fname, SMB_STRUCT_STAT * sbuf);
575 int file_rename(char *from, char *to);
576 time_t file_modtime(char *fname);
577 BOOL directory_exist(char *dname, SMB_STRUCT_STAT * st);
578 SMB_OFF_T file_size(char *file_name);
579 char *attrib_string(uint16 mode);
580 void unix_format(char *fname);
581 void dos_format(char *fname);
582 void show_msg(char *buf);
583 int smb_len(char *buf);
584 void _smb_setlen(char *buf, int len);
585 void smb_setlen(char *buf, int len);
586 int set_message(char *buf, int num_words, int num_bytes, BOOL zero);
587 int smb_buflen(char *buf);
588 char *smb_buf(char *buf);
589 int smb_offset(char *p, char *buf);
590 void dos_clean_name(char *s);
591 void make_dir_struct(char *buf, char *mask, char *fname, SMB_OFF_T size,
592 int mode, time_t date);
593 void close_low_fds(void);
594 int set_blocking(int fd, BOOL set);
595 int TvalDiff(struct timeval *tvalold, struct timeval *tvalnew);
596 SMB_OFF_T transfer_file(int infd, int outfd, SMB_OFF_T n, char *header,
597 int headlen, int align);
598 void msleep(int t);
599 BOOL get_file_match(const char *dirname, const char *regexp,
600 uint32 * total, char ***list);
601 BOOL do_match(char *str, const char *regexp, int case_sig);
602 BOOL mask_match(char *str, char *regexp, int case_sig, BOOL trans2);
603 void become_daemon(void);
604 BOOL yesno(char *p);
605 int set_filelen(int fd, SMB_OFF_T len);
606 void *Realloc(void *p, size_t size);
607 void safe_free(void *p);
608 BOOL get_myname(char *my_name, struct in_addr *ip);
609 BOOL ip_equal(struct in_addr ip1, struct in_addr ip2);
610 int interpret_protocol(char *str, int def);
611 uint32 interpret_addr(char *str);
612 struct in_addr *interpret_addr2(char *str);
613 BOOL zero_ip(struct in_addr ip);
614 BOOL matchname(char *remotehost, struct in_addr addr);
615 void standard_sub_basic(char *str);
616 void standard_sub_vuser(const user_struct * vuser, char *str);
617 void standard_sub(connection_struct * conn, user_struct * vuser, char *str);
618 BOOL same_net(struct in_addr ip1, struct in_addr ip2, struct in_addr mask);
619 struct hostent *Get_Hostbyname(const char *name);
620 BOOL process_exists(int pid);
621 int get_unixgroups(const char *user, uid_t uid, gid_t gid, int *p_ngroups,
622 gid_t ** p_groups);
623 BOOL get_unix_grps(int *p_ngroups, struct group **p_groups);
624 void free_unix_grps(int ngroups, struct group *p_groups);
625 char *gidtoname(gid_t gid);
626 BOOL nametogid(const char *name, gid_t * gid);
627 BOOL nametouid(const char *name, uid_t * uid);
628 void smb_panic(char *why);
629 char *readdirname(DIR * p);
630 BOOL is_in_path(char *name, name_compare_entry * namelist);
631 void set_namearray(name_compare_entry ** ppname_array, char *namelist);
632 void free_namearray(name_compare_entry * name_array);
633 BOOL is_myname(char *s);
634 void set_remote_arch(enum remote_arch_types type);
635 enum remote_arch_types get_remote_arch(void);
636 char *align4(char *q, char *base);
637 char *align2(char *q, char *base);
638 void out_ascii(FILE * f, const uchar * buf, int len);
639 void out_struct(FILE * f, const char *buf1, int len, int per_line);
640 void out_data(FILE * f, const char *buf1, int len, int per_line);
641 void print_asc(int level, uchar const *buf, int len);
642 void dump_data(int level, const char *buf1, int len);
643 void dump_data_pw(const char *msg, const uchar * data, size_t len);
644 char *tab_depth(int depth);
645 int str_checksum(const char *s);
646 void zero_free(void *p, size_t size);
647 int set_maxfiles(int requested_max);
648 void reg_get_subkey(char *full_keyname, char *key_name, char *subkey_name);
649 BOOL reg_split_key(const char *full_keyname, uint32 * reg_type,
650 char *key_name);
651 char *get_trusted_serverlist(const char *domain);
652 uint16 pwdb_acct_ctrl_from_ad(NTDS_USER_FLAG_ENUM adac);
653 char *pwdb_encode_acct_ctrl(uint16 acct_ctrl, size_t length);
654 uint16 pwdb_decode_acct_ctrl(const char *p);
655 time_t pwdb_get_time_last_changed(const char *p);
656 time_t pwdb_get_last_set_time(const char *p);
657 void pwdb_set_logon_time(char *p, int max_len, time_t t);
658 void pwdb_set_logoff_time(char *p, int max_len, time_t t);
659 void pwdb_set_kickoff_time(char *p, int max_len, time_t t);
660 void pwdb_set_can_change_time(char *p, int max_len, time_t t);
661 void pwdb_set_time_last_changed(char *p, int max_len, time_t t);
662 void pwdb_set_must_change_time(char *p, int max_len, time_t t);
663 void pwdb_set_last_set_time(char *p, int max_len, time_t t);
664 void pwdb_sethexpwd(char *p, const uchar * pwd, uint16 acct_ctrl);
665 BOOL pwdb_gethexpwd(const char *p, char *pwd, uint32 * acct_ctrl);
666 void *memdup(const void *p, size_t size);
667 char *passdb_path(char *name);
668 char *lock_path(char *name);
669 const char *get_sid_name_use_str(uint32 sid_name_use);
671 /*The following definitions come from lib/util_file.c */
673 BOOL do_file_lock(int fd, int waitsecs, int type);
674 BOOL file_lock(int fd, int type, int secs, int *plock_depth);
675 BOOL file_unlock(int fd, int *plock_depth);
676 BOOL fcntl_lock(int fd, int op, SMB_OFF_T offset, SMB_OFF_T count, int type);
677 void *startfileent(char *pfile, char *s_readbuf, int bufsize,
678 int *file_lock_depth, BOOL update);
679 void endfileent(void *vp, int *file_lock_depth);
680 SMB_BIG_UINT getfilepwpos(void *vp);
681 BOOL setfilepwpos(void *vp, SMB_BIG_UINT tok);
682 int getfileline(void *vp, char *linebuf, int linebuf_size);
683 char *fgets_slash(char *s2,int maxlen,FILE *f);
684 BOOL file_modified(const char *filename, time_t *lastmodified);
685 void *open_file_if_modified(const char *filename, char *mode, time_t *lastmodified);
687 /*The following definitions come from lib/util_hnd.c */
689 struct policy_cache *get_global_hnd_cache(void);
690 struct policy_cache *init_policy_cache(int num_pol_hnds);
691 void free_policy_cache(struct policy_cache *cache);
692 BOOL policy_hnd_set_name(struct policy_cache *cache,
693 POLICY_HND *hnd, const char *name);
694 const char *policy_hnd_get_name(struct policy_cache *cache,
695 const POLICY_HND *hnd);
696 BOOL dup_policy_hnd(struct policy_cache *cache,
697 POLICY_HND *hnd,
698 const POLICY_HND *from);
699 BOOL register_policy_hnd(struct policy_cache *cache,
700 const vuser_key *key,
701 POLICY_HND *hnd,
702 uint32 access_mask);
703 BOOL open_policy_hnd(struct policy_cache *cache,
704 const vuser_key *key,
705 POLICY_HND *hnd,
706 uint32 access_mask);
707 BOOL open_policy_hnd_link(struct policy_cache *cache,
708 const POLICY_HND *parent_hnd,
709 POLICY_HND *hnd,
710 uint32 access_mask);
711 int find_policy_by_hnd(struct policy_cache *cache, const POLICY_HND *hnd);
712 BOOL set_policy_state(struct policy_cache *cache, POLICY_HND *hnd,
713 void(*fn)(void*), void *dev);
714 void *get_policy_state_info(struct policy_cache *cache, const POLICY_HND *hnd);
715 BOOL policy_hnd_set_state_type(struct policy_cache *cache,
716 POLICY_HND *hnd, int type);
717 int policy_hnd_get_state_type(struct policy_cache *cache,
718 const POLICY_HND *hnd);
719 BOOL policy_hnd_check_state_type(struct policy_cache *cache,
720 const POLICY_HND *hnd, int type);
721 BOOL close_policy_hnd(struct policy_cache *cache, POLICY_HND *hnd);
722 BOOL policy_link_key(struct policy_cache *cache, const POLICY_HND *hnd,
723 POLICY_HND *to);
724 const vuser_key *get_policy_vuser_key(struct policy_cache *cache,
725 const POLICY_HND *hnd);
726 BOOL pol_get_usr_sesskey(struct policy_cache *cache, const POLICY_HND *hnd,
727 uchar usr_sess_key[16]);
729 /*The following definitions come from lib/util_seaccess.c */
731 BOOL se_access_check(const SEC_DESC * sd, const NET_USER_INFO_3 * user,
732 uint32 acc_req, uint32 prev_grant_acc,
733 uint32 * acc_grant,
734 uint32 * status);
736 /*The following definitions come from lib/util_sec.c */
738 void gain_root_privilege(void);
739 void gain_root_group_privilege(void);
740 void set_effective_uid(uid_t uid);
741 void set_effective_gid(gid_t gid);
742 void save_re_uid(void);
743 void restore_re_uid(void);
744 int set_re_uid(void);
745 void become_user_permanently(uid_t uid, gid_t gid);
747 /*The following definitions come from lib/util_sid.c */
749 char *sid_to_string(pstring sidstr_out, const DOM_SID *sid);
750 BOOL string_to_sid(DOM_SID *sidout, const char *sidstr);
751 BOOL sid_append_rid(DOM_SID *sid, uint32 rid);
752 BOOL sid_split_rid(DOM_SID *sid, uint32 *rid);
753 void sid_copy(DOM_SID *sid1, const DOM_SID *sid2);
754 BOOL sid_front_equal(const DOM_SID *sid1, const DOM_SID *sid2);
755 BOOL sid_equal(const DOM_SID *sid1, const DOM_SID *sid2);
756 int sid_size(const DOM_SID *sid);
757 DOM_SID *sid_dup(const DOM_SID *src);
758 BOOL read_sid(char *domain_name, DOM_SID *sid);
759 BOOL write_sid(char *domain_name, DOM_SID *sid);
760 BOOL create_new_sid(DOM_SID *sid);
762 /*The following definitions come from lib/util_sock.c */
764 BOOL is_a_socket(int fd);
765 void set_socket_options(int fd, char *options);
766 void close_sockets(void );
767 ssize_t write_socket(int fd,char *buf,size_t len);
768 ssize_t read_udp_socket(int fd,char *buf,size_t len);
769 ssize_t read_with_timeout(int fd,char *buf,size_t mincnt,size_t maxcnt,unsigned int time_out);
770 BOOL send_keepalive(int client);
771 ssize_t read_data(int fd,char *buffer,size_t N);
772 ssize_t write_data(int fd,char *buffer,size_t N);
773 ssize_t read_smb_length(int fd,char *inbuf,unsigned int timeout);
774 BOOL receive_smb(int fd,char *buffer, unsigned int timeout);
775 BOOL client_receive_smb(int fd,char *buffer, unsigned int timeout);
776 BOOL send_smb(int fd,char *buffer);
777 BOOL send_one_packet(char *buf,int len,struct in_addr ip,int port,int type);
778 int open_socket_in(int type, int port, int dlevel,uint32 socket_addr,
779 BOOL rebind);
780 int open_socket_out(int type, struct in_addr *addr, int port ,int timeout);
781 void set_client_connection_name(const char* name, int fd);
782 void set_client_connection_addr(const char* addr, int fd);
783 char *client_connection_name(void);
784 char *client_connection_addr(void);
785 void reset_globals_after_fork(void);
786 char *client_name(int fd);
787 char *client_addr(int fd);
788 int open_pipe_sock(char *path);
789 int create_pipe_socket(char *dir, int dir_perms,
790 char *path, int path_perms);
792 /*The following definitions come from lib/util_str.c */
794 void set_first_token(char *ptr);
795 BOOL next_token(char **ptr,char *buff,char *sep, size_t bufsize);
796 char **toktocliplist(int *ctok, char *sep);
797 int StrCaseCmp(const char *s, const char *t);
798 int StrnCaseCmp(const char *s, const char *t, size_t n);
799 BOOL strequal(const char *s1, const char *s2);
800 BOOL strnequal(const char *s1,const char *s2,size_t n);
801 BOOL strcsequal(const char *s1,const char *s2);
802 void strlower(char *s);
803 void strupper(char *s);
804 void strnorm(char *s);
805 BOOL strisnormal(char *s);
806 void string_replace(char *s,char oldc,char newc);
807 char *skip_string(char *buf,size_t n);
808 size_t str_charnum(const char *s);
809 BOOL trim_string(char *s,const char *front,const char *back);
810 BOOL strhasupper(const char *s);
811 BOOL strhaslower(const char *s);
812 size_t count_chars(const char *s,char c);
813 char *safe_strcpy(char *dest,const char *src, size_t maxlength);
814 char *safe_strcat(char *dest, const char *src, size_t maxlength);
815 char *StrCpy(char *dest,const char *src);
816 char *StrnCpy(char *dest,const char *src,size_t n);
817 char *strncpyn(char *dest, char *src,size_t n, char c);
818 size_t strhex_to_str(char *p, size_t len, const char *strhex);
819 BOOL in_list(char *s,char *list,BOOL casesensitive);
820 BOOL string_init(char **dest,const char *src);
821 void string_free(char **s);
822 BOOL string_set(char **dest,const char *src);
823 void string_sub(char *s,const char *pattern,const char *insert);
824 void all_string_sub(char *s,const char *pattern,const char *insert, size_t len);
825 void split_at_first_component(char *path, char *front, char sep, char *back);
826 void split_at_last_component(char *path, char *front, char sep, char *back);
827 char *bit_field_to_str(uint32 type, struct field_info *bs);
828 char *enum_field_to_str(uint32 type, struct field_info *bs, BOOL first_default);
830 /*The following definitions come from lib/util_unistr.c */
832 char *ascii_to_unibuf(char *dest, const char *src, int maxlen);
833 const char* unibuf_to_ascii(char *dest, const char *src, int maxlen);
834 void ascii_to_unistr(uint16 *dest, const char *src, int maxlen);
835 void unistr_to_ascii(char *dest, const uint16 *src, int len);
836 char *unistr2_to_ascii(char *dest, const UNISTR2 *str, size_t maxlen);
837 char *skip_unibuf(char *srcbuf, int len);
838 char *uni_strncpy(char *destbuf, const char *srcbuf, int len);
839 uint32 buffer2_to_uint32(const BUFFER2 *str);
840 void buffer2_to_multistr(char *dest, const BUFFER2 *str, size_t maxlen);
841 void buffer4_to_str(char *dest, const BUFFER4 *str, size_t maxlen);
842 UNISTR2 *unistr2_new(const char *init);
843 UNISTR2 *unistr2_assign(UNISTR2 *str, const uint16 *src, size_t len);
844 UNISTR2 *unistr2_assign_ascii(UNISTR2 *str, const char *buf, int len);
845 UNISTR2 *unistr2_assign_ascii_str(UNISTR2 *str, const char *buf);
846 UNISTR2 *unistr2_grow(UNISTR2 *str, size_t new_size);
847 BOOL unistr2upper(UNISTR2 *str, const UNISTR2 *from);
848 BOOL copy_unistr2(UNISTR2 *str, const UNISTR2 *from);
849 UNISTR2 *unistr2_dup(const UNISTR2 *name);
850 void unistr2_free(UNISTR2 *name);
851 int StrCaseCmpW(const UNISTR2 *ws, const UNISTR2 *wt);
852 BOOL unistr2equal(const UNISTR2 *s1, const UNISTR2 *s2);
854 /*The following definitions come from lib/vagent.c */
856 void init_sock_redir(struct vagent_ops*va);
857 void free_sock_redir(struct vagent_ops*va);
858 void start_agent(struct vagent_ops *va);
860 /*The following definitions come from lib/vuser.c */
862 BOOL is_valid_user_struct(const vuser_key * key);
863 user_struct *get_valid_user_struct(const vuser_key * key);
864 void invalidate_vuid(vuser_key * key);
865 BOOL validated_username(vuser_key * key, char *name, size_t len);
866 uint16 create_vuid(pid_t pid,
867 uid_t uid, gid_t gid,
868 int n_groups, gid_t * groups,
869 const char *unix_name,
870 const char *requested_name,
871 const char *real_name,
872 BOOL guest, const NET_USER_INFO_3 * info3);
873 uint16 register_vuid(pid_t pid, uid_t uid, gid_t gid,
874 const char *unix_name,
875 const char *requested_name,
876 BOOL guest, const NET_USER_INFO_3 * info3);
877 BOOL check_vuser_ok(struct uid_cache *cache, user_struct * vuser, int snum);
879 /*The following definitions come from lib/vuser_db.c */
881 BOOL tdb_delete_vuid( const vuser_key *uk);
882 BOOL tdb_lookup_vuid( const vuser_key *uk, user_struct **usr);
883 BOOL tdb_store_vuid( const vuser_key *uk, user_struct *usr);
884 BOOL vuid_init_db(void);
886 /*The following definitions come from nsswitch/winbindd.c */
888 void exit_server(char *reason);
889 int winbind_get_domain_sid(char *system_name, fstring domain_name,
890 DOM_SID *domain_sid);
891 int winbind_lookup_by_name(char *system_name, DOM_SID *level5_sid,
892 fstring name, DOM_SID *sid,
893 enum SID_NAME_USE *type);
894 int winbind_lookup_by_sid(char *system_name, DOM_SID *level5_sid,
895 DOM_SID *sid, char *name,
896 enum SID_NAME_USE *type);
897 int winbind_lookup_userinfo(char *system_name, DOM_SID *level5_sid,
898 uint32 user_rid, SAM_USERINFO_CTR *info);
899 int winbind_lookup_groupinfo(char *system_name, DOM_SID *level5_sid,
900 uint32 group_rid, GROUP_INFO_CTR *info);
901 int create_winbind_socket(void);
902 int main(int argc, char **argv);
904 /*The following definitions come from nsswitch/winbindd_group.c */
906 void winbindd_getgrnam_from_group(DOM_SID *domain_sid,
907 struct winbindd_request *request,
908 struct winbindd_response *response);
909 void winbindd_getgrnam_from_gid(DOM_SID *domain_sid,
910 struct winbindd_request *request,
911 struct winbindd_response *response);
913 /*The following definitions come from nsswitch/winbindd_surs.c */
915 BOOL winbindd_surs_sam_sid_to_unixid(DOM_SID *sid, uint32 type, uint32 *id);
916 BOOL winbindd_surs_unixid_to_sam_sid(uint32 id, uint32 type, DOM_SID *sid,
917 BOOL create);
919 /*The following definitions come from nsswitch/winbindd_user.c */
921 void winbindd_getpwnam_from_user(DOM_SID *domain_sid,
922 struct winbindd_request *request,
923 struct winbindd_response *response);
924 void winbindd_getpwnam_from_uid(DOM_SID *domain_sid,
925 struct winbindd_request *request,
926 struct winbindd_response *response);
928 /*The following definitions come from param/loadparm.c */
930 struct vfs_options *lp_vfsoptions(int i) ;
931 char *lp_logfile(void);
932 char *lp_smbrun(void);
933 char *lp_configfile(void);
934 char *lp_smb_passwd_file(void);
935 char *lp_sam_directory(void);
936 char *lp_smb_passgrp_file(void);
937 char *lp_smb_group_file(void);
938 char *lp_smb_alias_file(void);
939 char *lp_serverstring(void);
940 char *lp_printcapname(void);
941 char *lp_lockdir(void);
942 char *lp_rootdir(void);
943 char *lp_defaultservice(void);
944 char *lp_msg_command(void);
945 char *lp_hosts_equiv(void);
946 char *lp_auto_services(void);
947 char *lp_passwd_program(void);
948 char *lp_passwd_chat(void);
949 char *lp_passwordserver(void);
950 char *lp_name_resolve_order(void);
951 char *lp_workgroup(void);
952 char *lp_trusted_domains(void);
953 char *lp_trusting_domains(void);
954 char *lp_username_map(void);
955 char *lp_aliasname_map(void);
956 char *lp_groupname_map(void);
957 char *lp_builtinname_map(void);
958 char *lp_builtinrid_file(void);
959 char *lp_ntusrname_map(void);
960 char *lp_remote_announce(void);
961 char *lp_remote_browse_sync(void);
962 char *lp_wins_server(void);
963 char *lp_interfaces(void);
964 char *lp_socket_address(void);
965 char *lp_nis_home_map_name(void);
966 char *lp_netbios_aliases(void);
967 char *lp_driverfile(void);
968 char *lp_panic_action(void);
969 char *lp_nt_forms(void);
970 char *lp_nt_drivers_file(void);
971 char *lp_dfs_map(void);
972 char *lp_ldap_server(void);
973 char *lp_ldap_suffix(void);
974 char *lp_ldap_bind_as(void);
975 char *lp_ldap_passwd_file(void);
976 char *lp_ldap_url(void);
977 char *lp_ldap_realm(void);
978 char *lp_ldap_computers_subcontext(void);
979 char *lp_ldap_users_subcontext(void);
980 char *lp_ldap_builtin_subcontext(void);
981 int lp_ssl_version(void);
982 char *lp_ssl_hosts(void);
983 char *lp_ssl_hosts_resign(void);
984 char *lp_ssl_cacertdir(void);
985 char *lp_ssl_cacertfile(void);
986 char *lp_ssl_cert(void);
987 char *lp_ssl_privkey(void);
988 char *lp_ssl_client_cert(void);
989 char *lp_ssl_client_privkey(void);
990 char *lp_ssl_ciphers(void);
991 BOOL lp_ssl_enabled(void);
992 BOOL lp_ssl_reqClientCert(void);
993 BOOL lp_ssl_reqServerCert(void);
994 BOOL lp_ssl_compatibility(void);
995 BOOL lp_dns_proxy(void);
996 BOOL lp_wins_support(void);
997 BOOL lp_we_are_a_wins_server(void);
998 BOOL lp_wins_proxy(void);
999 BOOL lp_local_master(void);
1000 BOOL lp_domain_logons(void);
1001 BOOL lp_load_printers(void);
1002 BOOL lp_use_rhosts(void);
1003 BOOL lp_readprediction(void);
1004 BOOL lp_readbmpx(void);
1005 BOOL lp_readraw(void);
1006 BOOL lp_writeraw(void);
1007 BOOL lp_null_passwords(void);
1008 BOOL lp_strip_dot(void);
1009 BOOL lp_encrypted_passwords(void);
1010 BOOL lp_update_encrypted(void);
1011 BOOL lp_client_ntlmv2(void);
1012 BOOL lp_server_ntlmv2(void);
1013 BOOL lp_client_schannel(void);
1014 BOOL lp_server_schannel(void);
1015 BOOL lp_syslog_only(void);
1016 BOOL lp_timestamp_logs(void);
1017 BOOL lp_browse_list(void);
1018 BOOL lp_unix_realname(void);
1019 BOOL lp_nis_home_map(void);
1020 BOOL lp_bind_interfaces_only(void);
1021 BOOL lp_unix_password_sync(void);
1022 BOOL lp_passwd_chat_debug(void);
1023 BOOL lp_ole_locking_compat(void);
1024 BOOL lp_nt_smb_support(void);
1025 BOOL lp_nt_pipe_support(void);
1026 BOOL lp_stat_cache(void);
1027 int lp_os_level(void);
1028 int lp_max_ttl(void);
1029 int lp_max_wins_ttl(void);
1030 int lp_min_wins_ttl(void);
1031 int lp_max_log_size(void);
1032 int lp_max_open_files(void);
1033 int lp_maxxmit(void);
1034 int lp_maxmux(void);
1035 int lp_passwordlevel(void);
1036 int lp_usernamelevel(void);
1037 int lp_readsize(void);
1038 int lp_shmem_size(void);
1039 int lp_deadtime(void);
1040 int lp_maxprotocol(void);
1041 int lp_security(void);
1042 int lp_maxdisksize(void);
1043 int lp_lpqcachetime(void);
1044 int lp_syslog(void);
1045 int lp_client_code_page(void);
1046 int lp_lm_announce(void);
1047 int lp_lm_interval(void);
1048 int lp_machine_password_timeout(void);
1049 int lp_change_notify_timeout(void);
1050 int lp_stat_cache_size(void);
1051 int lp_map_to_guest(void);
1052 int lp_ldap_port(void);
1053 int lp_ldap_protocol_version(void);
1054 char *lp_logon_script(const user_struct* );
1055 char *lp_logon_path(const user_struct* );
1056 char *lp_logon_drive(const user_struct* );
1057 char *lp_logon_home(const user_struct* );
1058 char *lp_preexec(int );
1059 char *lp_postexec(int );
1060 char *lp_rootpreexec(int );
1061 char *lp_rootpostexec(int );
1062 char *lp_servicename(int );
1063 char *lp_pathname(int );
1064 char *lp_dontdescend(int );
1065 char *lp_username(int );
1066 char *lp_guestaccount(int );
1067 char *lp_invalid_users(int );
1068 char *lp_valid_users(int );
1069 char *lp_admin_users(int );
1070 char *lp_printcommand(int );
1071 char *lp_lpqcommand(int );
1072 char *lp_lprmcommand(int );
1073 char *lp_lppausecommand(int );
1074 char *lp_lpresumecommand(int );
1075 char *lp_queuepausecommand(int );
1076 char *lp_queueresumecommand(int );
1077 char *lp_printername(int );
1078 char *lp_printerdriver(int );
1079 char *lp_hostsallow(int );
1080 char *lp_hostsdeny(int );
1081 char *lp_magicscript(int );
1082 char *lp_magicoutput(int );
1083 char *lp_comment(int );
1084 char *lp_force_user(int );
1085 char *lp_force_group(int );
1086 char *lp_readlist(int );
1087 char *lp_writelist(int );
1088 char *lp_fstype(int );
1089 char *lp_vfsobj(int );
1090 char *lp_mangled_map(int );
1091 char *lp_veto_files(int );
1092 char *lp_hide_files(int );
1093 char *lp_veto_oplocks(int );
1094 char *lp_driverlocation(int );
1095 BOOL lp_revalidate(int );
1096 BOOL lp_casesensitive(int );
1097 BOOL lp_preservecase(int );
1098 BOOL lp_shortpreservecase(int );
1099 BOOL lp_casemangle(int );
1100 BOOL lp_status(int );
1101 BOOL lp_hide_dot_files(int );
1102 BOOL lp_browseable(int );
1103 BOOL lp_readonly(int );
1104 BOOL lp_no_set_dir(int );
1105 BOOL lp_guest_ok(int );
1106 BOOL lp_guest_only(int );
1107 BOOL lp_print_ok(int );
1108 BOOL lp_postscript(int );
1109 BOOL lp_map_hidden(int );
1110 BOOL lp_map_archive(int );
1111 BOOL lp_locking(int );
1112 BOOL lp_strict_locking(int );
1113 BOOL lp_share_modes(int );
1114 BOOL lp_oplocks(int );
1115 BOOL lp_onlyuser(int );
1116 BOOL lp_manglednames(int );
1117 BOOL lp_widelinks(int );
1118 BOOL lp_symlinks(int );
1119 BOOL lp_syncalways(int );
1120 BOOL lp_strict_sync(int );
1121 BOOL lp_map_system(int );
1122 BOOL lp_delete_readonly(int );
1123 BOOL lp_fake_oplocks(int );
1124 BOOL lp_recursive_veto_delete(int );
1125 BOOL lp_dos_filetimes(int );
1126 BOOL lp_dos_filetime_resolution(int );
1127 BOOL lp_fake_dir_create_times(int );
1128 BOOL lp_blocking_locks(int );
1129 int lp_create_mode(int );
1130 int lp_force_create_mode(int );
1131 int lp_dir_mode(int );
1132 int lp_force_dir_mode(int );
1133 int lp_max_connections(int );
1134 int lp_defaultcase(int );
1135 int lp_minprintspace(int );
1136 int lp_printing(int );
1137 char lp_magicchar(int );
1138 char *lp_mysql_host(void);
1139 char *lp_mysql_user(void);
1140 char *lp_mysql_passfile(void);
1141 char *lp_mysql_db(void);
1142 char *lp_mysql_table(void);
1143 BOOL lp_add_home(char *pszHomename, int iDefaultService, char *pszHomedir);
1144 int lp_add_service(char *pszService, int iDefaultService);
1145 BOOL lp_add_printer(char *pszPrintername, int iDefaultService);
1146 BOOL lp_file_list_changed(void);
1147 void *lp_local_ptr(int snum, void *ptr);
1148 BOOL lp_do_parameter(int snum, char *pszParmName, char *pszParmValue);
1149 BOOL lp_is_default(int snum, struct parm_struct *parm);
1150 struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters);
1151 BOOL lp_snum_ok(int iService);
1152 void lp_add_one_printer(char *name,char *comment);
1153 BOOL lp_loaded(void);
1154 void lp_killunused(BOOL (*snumused)(int ));
1155 BOOL lp_load(char *pszFname,BOOL global_only, BOOL save_defaults, BOOL add_ipc);
1156 int lp_numservices(void);
1157 void lp_dump(FILE *f, BOOL show_defaults);
1158 int lp_servicenumber(char *pszServiceName);
1159 char *volume_label(int snum);
1160 void lp_remove_service(int snum);
1161 void lp_copy_service(int snum, char *new_name);
1162 int lp_default_server_announce(void);
1163 int lp_major_announce_version(void);
1164 int lp_minor_announce_version(void);
1165 void lp_set_name_resolve_order(char *new_order);
1166 void lp_set_kernel_oplocks(BOOL val);
1167 BOOL lp_kernel_oplocks(void);
1168 int lp_server_role(void);
1169 BOOL lp_domain_master(void);
1170 BOOL lp_preferred_master(void);
1172 /*The following definitions come from param/params.c */
1174 BOOL pm_process( char *FileName,
1175 BOOL (*sfunc)(char *),
1176 BOOL (*pfunc)(char *, char *) );
1178 /*The following definitions come from rpc_client/cli_connect.c */
1180 void init_connections(void);
1181 void free_connections(void);
1182 void cli_connection_free(struct cli_connection *con);
1183 void cli_connection_unlink(struct cli_connection *con);
1184 BOOL cli_connection_init(const char *srv_name, const char *pipe_name,
1185 struct cli_connection **con);
1186 BOOL cli_connection_init_auth(const char *srv_name, const char *pipe_name,
1187 struct cli_connection **con,
1188 cli_auth_fns * auth, void *auth_creds);
1189 BOOL cli_connection_getsrv(const char *srv_name, const char *pipe_name,
1190 struct cli_connection **con);
1191 BOOL cli_connection_get(const POLICY_HND * pol, struct cli_connection **con);
1192 BOOL cli_pol_link(POLICY_HND * to, const POLICY_HND * from);
1193 BOOL cli_get_usr_sesskey(const POLICY_HND * pol, uchar usr_sess_key[16]);
1194 BOOL cli_set_con_usr_sesskey(struct cli_connection *con,
1195 const uchar usr_sess_key[16]);
1196 const vuser_key *cli_con_sec_ctx(struct cli_connection *con);
1197 struct cli_auth_fns *cli_conn_get_authfns(struct cli_connection *con);
1198 void *cli_conn_get_auth_creds(struct cli_connection *con);
1199 void *cli_conn_get_auth_info(struct cli_connection *con);
1200 BOOL cli_conn_set_auth_info(struct cli_connection *con, void *auth_info);
1201 struct ntdom_info *cli_conn_get_ntinfo(struct cli_connection *con);
1202 BOOL cli_get_con_sesskey(struct cli_connection *con, uchar sess_key[16]);
1203 BOOL cli_con_get_srvname(struct cli_connection *con, char *srv_name);
1204 BOOL cli_get_sesskey(const POLICY_HND * pol, uchar sess_key[16]);
1205 BOOL cli_get_sesskey_srv(const char *srv_name, uchar sess_key[16]);
1206 void cli_con_gen_next_creds(struct cli_connection *con,
1207 DOM_CRED * new_clnt_cred);
1208 void cli_con_get_cli_cred(struct cli_connection *con, DOM_CRED * clnt_cred);
1209 BOOL cli_con_deal_with_creds(struct cli_connection *con,
1210 DOM_CRED * rcv_srv_cred);
1211 BOOL cli_con_set_creds(const char *srv_name, const uchar sess_key[16],
1212 DOM_CRED * cred);
1213 BOOL rpc_hnd_pipe_req(const POLICY_HND * hnd, uint8 op_num,
1214 prs_struct * data, prs_struct * rdata);
1215 BOOL rpc_con_pipe_req(struct cli_connection *con, uint8 op_num,
1216 prs_struct * data, prs_struct * rdata);
1217 BOOL rpc_api_write(struct cli_connection *con, prs_struct * data);
1218 BOOL rpc_api_rcv_pdu(struct cli_connection *con, prs_struct * rdata);
1219 BOOL rpc_api_send_rcv_pdu(struct cli_connection *con, prs_struct * data,
1220 prs_struct * rdata);
1221 BOOL set_policy_con(struct policy_cache *cache, POLICY_HND * hnd,
1222 struct cli_connection *con,
1223 void (*free_fn) (struct cli_connection *));
1224 BOOL get_policy_con(struct policy_cache *cache, const POLICY_HND * hnd,
1225 struct cli_connection **con);
1227 /*The following definitions come from rpc_client/cli_lsarpc.c */
1229 BOOL get_domain_sids(const char *domain, DOM_SID * sid3, DOM_SID * sid5);
1230 BOOL get_trust_sid_and_domain(const char *myname, char *server,
1231 DOM_SID * sid, char *domain, size_t len);
1232 BOOL lsa_open_policy(const char *system_name, POLICY_HND *hnd,
1233 BOOL sec_qos, uint32 des_access);
1234 BOOL lsa_open_policy2(const char *system_name, POLICY_HND *hnd,
1235 BOOL sec_qos, uint32 des_access);
1236 BOOL lsa_create_secret(const POLICY_HND *hnd,
1237 const char *secret_name,
1238 uint32 des_access, POLICY_HND *hnd_secret);
1239 BOOL lsa_open_secret(const POLICY_HND *hnd,
1240 const char *secret_name,
1241 uint32 des_access, POLICY_HND *hnd_secret);
1242 uint32 lsa_set_secret(POLICY_HND *hnd, const STRING2 * secret);
1243 BOOL lsa_query_secret(POLICY_HND *hnd, STRING2 * secret, NTTIME * last_update);
1244 BOOL lsa_lookup_names(POLICY_HND *hnd,
1245 int num_names,
1246 char **names,
1247 DOM_SID ** sids, uint32 ** types, int *num_sids);
1248 BOOL lsa_lookup_sids(POLICY_HND *hnd,
1249 int num_sids,
1250 DOM_SID ** sids,
1251 char ***names, uint32 ** types, int *num_names);
1252 BOOL lsa_query_sec_obj(const POLICY_HND *hnd, uint32 sec_info,
1253 SEC_DESC_BUF *sec_buf);
1254 BOOL lsa_query_info_pol(POLICY_HND *hnd, uint16 info_class,
1255 fstring domain_name, DOM_SID * domain_sid);
1256 BOOL lsa_enum_trust_dom(POLICY_HND *hnd, uint32 * enum_ctx,
1257 uint32 * num_doms, char ***names, DOM_SID *** sids);
1258 BOOL lsa_close(POLICY_HND *hnd);
1260 /*The following definitions come from rpc_client/cli_netlogon.c */
1262 void gen_next_creds( struct ntdom_info *nt, DOM_CRED *new_clnt_cred);
1263 BOOL cli_net_logon_ctrl2(const char* srv_name, uint32 status_level);
1264 uint32 cli_net_auth2(const char *srv_name,
1265 const char *trust_acct,
1266 const char *acct_name,
1267 uint16 sec_chan,
1268 uint32 *neg_flags, DOM_CHAL *srv_chal);
1269 uint32 cli_net_req_chal( const char *srv_name, const char* myhostname,
1270 DOM_CHAL *clnt_chal, DOM_CHAL *srv_chal);
1271 BOOL cli_net_srv_pwset(const char* srv_name,
1272 const char* myhostname,
1273 const char* trust_acct,
1274 const uint8 hashed_trust_pwd[16],
1275 uint16 sec_chan_type);
1276 uint32 cli_net_sam_logon(const char* srv_name, const char* myhostname,
1277 NET_ID_INFO_CTR *ctr,
1278 NET_USER_INFO_3 *user_info3);
1279 BOOL cli_net_sam_logoff(const char* srv_name, const char* myhostname,
1280 NET_ID_INFO_CTR *ctr);
1281 BOOL cli_net_sam_sync( const char* srv_name, const char* myhostname,
1282 uint32 database_id,
1283 uint32 *num_deltas,
1284 SAM_DELTA_HDR *hdr_deltas,
1285 SAM_DELTA_CTR *deltas);
1287 /*The following definitions come from rpc_client/cli_pipe.c */
1289 BOOL create_rpc_request(prs_struct * rhdr, uint16 vuid,
1290 uint8 op_num, uint8 flags, int data_len, int auth_len);
1291 BOOL rpc_api_pipe_req(struct cli_connection *con, uint8 opnum,
1292 prs_struct * data, prs_struct * rdata);
1293 BOOL cli_send_and_rcv_pdu_trans(struct cli_connection *con,
1294 struct cli_state *cli, uint16 fnum,
1295 prs_struct * data, prs_struct * rdata,
1296 int max_send_pdu);
1297 BOOL cli_send_and_rcv_pdu_rw(struct cli_connection *con,
1298 struct cli_state *cli, uint16 fnum,
1299 prs_struct * data, prs_struct * rdata,
1300 int max_send_pdu);
1301 BOOL cli_send_and_rcv_pdu(struct cli_connection *con,
1302 struct cli_state *cli, uint16 fnum,
1303 prs_struct * data, prs_struct * rdata,
1304 int max_send_pdu);
1305 BOOL cli_rcv_pdu(struct cli_connection *con,
1306 struct cli_state *cli, uint16 fnum, prs_struct *rdata);
1307 BOOL rpc_pipe_bind(struct cli_connection *con,
1308 const char *pipe_name,
1309 RPC_IFACE * abstract, RPC_IFACE * transfer);
1310 void cli_nt_set_ntlmssp_flgs(struct cli_state *cli, uint32 ntlmssp_flgs);
1311 BOOL cli_nt_session_open(struct cli_state *cli, const char *pipe_name,
1312 uint16 * fnum);
1313 void cli_nt_session_close(struct cli_state *cli, uint16 fnum);
1315 /*The following definitions come from rpc_client/cli_pipe_noauth.c */
1318 /*The following definitions come from rpc_client/cli_pipe_ntlmssp.c */
1321 /*The following definitions come from rpc_client/cli_samr.c */
1323 BOOL samr_chgpasswd_user( struct cli_connection *con,
1324 const char *srv_name, const char *user_name,
1325 const char nt_newpass[516], const uchar nt_oldhash[16],
1326 const char lm_newpass[516], const uchar lm_oldhash[16]);
1327 BOOL samr_get_dom_pwinfo(struct cli_connection *con, const char *srv_name);
1328 BOOL samr_query_dom_info( POLICY_HND *domain_pol, uint16 switch_value,
1329 SAM_UNK_CTR *ctr);
1330 uint32 samr_enum_domains( POLICY_HND *pol,
1331 uint32 *start_idx, uint32 size,
1332 struct acct_info **sam,
1333 uint32 *num_sam_domains);
1334 uint32 samr_enum_dom_groups( POLICY_HND *pol,
1335 uint32 *start_idx, uint32 size,
1336 struct acct_info **sam,
1337 uint32 *num_sam_groups);
1338 uint32 samr_enum_dom_aliases( POLICY_HND *pol,
1339 uint32 *start_idx, uint32 size,
1340 struct acct_info **sam,
1341 uint32 *num_sam_aliases);
1342 uint32 samr_enum_dom_users( POLICY_HND *pol, uint32 *start_idx,
1343 uint16 acb_mask, uint16 unk_1, uint32 size,
1344 struct acct_info **sam,
1345 uint32 *num_sam_users);
1346 BOOL samr_connect( const char *srv_name, uint32 access_mask,
1347 POLICY_HND *connect_pol);
1348 BOOL samr_query_sec_obj( const POLICY_HND *pol,
1349 uint32 type,
1350 SEC_DESC_BUF *buf);
1351 BOOL samr_open_user( const POLICY_HND *pol,
1352 uint32 unk_0, uint32 rid,
1353 POLICY_HND *user_pol);
1354 BOOL samr_open_alias( const POLICY_HND *domain_pol,
1355 uint32 flags, uint32 rid,
1356 POLICY_HND *alias_pol);
1357 BOOL samr_del_aliasmem( POLICY_HND *alias_pol, DOM_SID *sid);
1358 BOOL samr_add_aliasmem( POLICY_HND *alias_pol, DOM_SID *sid);
1359 BOOL samr_delete_dom_alias( POLICY_HND *alias_pol);
1360 uint32 samr_create_dom_user( POLICY_HND *domain_pol, const char *acct_name,
1361 uint32 unk_0, uint32 unk_1,
1362 POLICY_HND *user_pol, uint32 *rid);
1363 BOOL samr_create_dom_alias( POLICY_HND *domain_pol, const char *acct_name,
1364 POLICY_HND *alias_pol, uint32 *rid);
1365 BOOL samr_query_aliasinfo( POLICY_HND *alias_pol, uint16 switch_value,
1366 ALIAS_INFO_CTR *ctr);
1367 BOOL samr_set_aliasinfo( POLICY_HND *alias_pol, ALIAS_INFO_CTR *ctr);
1368 BOOL samr_open_group( const POLICY_HND *domain_pol,
1369 uint32 flags, uint32 rid,
1370 POLICY_HND *group_pol);
1371 BOOL samr_del_groupmem( POLICY_HND *group_pol, uint32 rid);
1372 BOOL samr_add_groupmem( POLICY_HND *group_pol, uint32 rid);
1373 BOOL samr_delete_dom_user( POLICY_HND *user_pol);
1374 BOOL samr_delete_dom_group( POLICY_HND *group_pol);
1375 BOOL samr_create_dom_group( POLICY_HND *domain_pol, const char *acct_name,
1376 POLICY_HND *group_pol, uint32 *rid);
1377 BOOL samr_set_groupinfo( POLICY_HND *group_pol, GROUP_INFO_CTR *ctr);
1378 BOOL samr_unknown_2d( const POLICY_HND *domain_pol,
1379 const DOM_SID *sid);
1380 BOOL samr_open_domain( const POLICY_HND *connect_pol,
1381 uint32 ace_perms,
1382 const DOM_SID *sid,
1383 POLICY_HND *domain_pol);
1384 BOOL samr_query_lookup_domain( POLICY_HND *pol, const char *dom_name,
1385 DOM_SID *dom_sid);
1386 BOOL samr_query_lookup_names(const POLICY_HND *pol, uint32 flags,
1387 uint32 num_names, char **names,
1388 uint32 *num_rids, uint32 **rids, uint32 **types);
1389 BOOL samr_query_lookup_rids( const POLICY_HND *pol, uint32 flags,
1390 uint32 num_rids, const uint32 *rids,
1391 uint32 *num_names,
1392 char ***names,
1393 uint32 **type);
1394 BOOL samr_query_aliasmem( const POLICY_HND *alias_pol,
1395 uint32 *num_mem, DOM_SID2 *sid);
1396 BOOL samr_query_useraliases( const POLICY_HND *pol,
1397 uint32 *ptr_sid, DOM_SID2 *sid,
1398 uint32 *num_aliases, uint32 **rid);
1399 BOOL samr_query_groupmem( POLICY_HND *group_pol,
1400 uint32 *num_mem, uint32 **rid, uint32 **attr);
1401 BOOL samr_query_usergroups( POLICY_HND *pol, uint32 *num_groups,
1402 DOM_GID **gid);
1403 BOOL samr_query_groupinfo( POLICY_HND *pol,
1404 uint16 switch_value, GROUP_INFO_CTR* ctr);
1405 BOOL samr_set_userinfo2( POLICY_HND *pol, uint16 switch_value,
1406 void* usr);
1407 BOOL samr_set_userinfo( POLICY_HND *pol, uint16 switch_value, void* usr);
1408 BOOL samr_query_userinfo( POLICY_HND *pol, uint16 switch_value,
1409 SAM_USERINFO_CTR *ctr);
1410 BOOL samr_close( POLICY_HND *hnd);
1411 BOOL samr_query_dispinfo( POLICY_HND *pol_domain, uint16 level,
1412 uint32 *num_entries,
1413 SAM_DISPINFO_CTR *ctr);
1415 /*The following definitions come from rpc_client/cli_use.c */
1417 void init_cli_use(void);
1418 void free_cli_use(void);
1419 struct cli_state *cli_net_use_add(const char *srv_name,
1420 const struct ntuser_creds *usr_creds,
1421 BOOL redir, BOOL reuse, BOOL *is_new);
1422 BOOL cli_net_use_del(const char *srv_name,
1423 const struct ntuser_creds *usr_creds,
1424 BOOL force_close, BOOL *connection_closed);
1425 void cli_net_use_enum(uint32 * num_cons, struct use_info ***use);
1426 void cli_use_wait_keyboard(void);
1428 /*The following definitions come from rpc_client/msrpc_samr.c */
1430 uint32 lookup_sam_domainname(const char *srv_name,
1431 const char *domain, DOM_SID *sid);
1432 uint32 lookup_sam_names(const char *domain, const DOM_SID *sid,
1433 uint32 num_names, char **names,
1434 uint32 *num_rids, uint32 **rids, uint32 **types);
1435 uint32 lookup_sam_name(const char *domain, DOM_SID *sid,
1436 char *name, uint32 *rid, uint32 *type);
1437 uint32 lookup_sam_rid(const char *domain, DOM_SID *sid,
1438 uint32 rid, char *name, uint32 *type);
1439 BOOL req_user_info( const POLICY_HND *pol_dom,
1440 const char *domain,
1441 const DOM_SID *sid,
1442 uint32 user_rid, uint16 info_level,
1443 USER_INFO_FN(usr_inf));
1444 uint32 sam_query_usergroups( const POLICY_HND *pol_dom,
1445 const char *domain,
1446 const DOM_SID *sid,
1447 uint32 user_rid,
1448 const char *user_name,
1449 uint32 *num_groups,
1450 DOM_GID **gid,
1451 char ***name,
1452 uint32 **type,
1453 USER_MEM_FN(usr_mem));
1454 void msrpc_sam_user( const POLICY_HND *pol_dom, const POLICY_HND *pol_blt,
1455 const char* domain,
1456 const DOM_SID *sid1,
1457 const DOM_SID *blt_sid1,
1458 uint32 user_rid, uint16 info_level,
1459 char *user_name,
1460 USER_FN(usr_fn),
1461 USER_INFO_FN(usr_inf_fn),
1462 USER_MEM_FN(usr_grp_fn),
1463 USER_MEM_FN(usr_als_fn));
1464 BOOL msrpc_sam_query_user( const char* srv_name,
1465 const char* domain,
1466 const DOM_SID *sid,
1467 char *user_name,
1468 USER_FN(usr_fn),
1469 USER_INFO_FN(usr_inf_fn),
1470 USER_MEM_FN(usr_grp_fn),
1471 USER_MEM_FN(usr_als_fn));
1472 int msrpc_sam_enum_users( const char* srv_name,
1473 const char* domain,
1474 const DOM_SID *sid1,
1475 struct acct_info **sam,
1476 uint32 *num_sam_entries,
1477 USER_FN(usr_fn),
1478 USER_INFO_FN(usr_inf_fn),
1479 USER_MEM_FN(usr_grp_fn),
1480 USER_MEM_FN(usr_als_fn));
1481 BOOL sam_query_dominfo(const char* srv_name,
1482 const DOM_SID *sid1,
1483 uint32 switch_value, SAM_UNK_CTR *ctr);
1484 BOOL query_aliasinfo( const POLICY_HND *pol_dom,
1485 const char *domain,
1486 const DOM_SID *sid,
1487 uint32 alias_rid,
1488 ALIAS_INFO_FN(grp_inf));
1489 BOOL sam_query_aliasmem(const char *srv_name,
1490 const POLICY_HND *pol_dom,
1491 uint32 alias_rid,
1492 uint32 *num_names,
1493 DOM_SID ***sids,
1494 char ***name,
1495 uint32 **type);
1496 BOOL req_aliasmem_info(const char* srv_name,
1497 const POLICY_HND *pol_dom,
1498 const char *domain,
1499 const DOM_SID *sid,
1500 uint32 alias_rid,
1501 const char *alias_name,
1502 ALIAS_MEM_FN(als_mem));
1503 BOOL sam_query_groupmem( const POLICY_HND *pol_dom,
1504 uint32 group_rid,
1505 uint32 *num_names,
1506 uint32 **rid_mem,
1507 char ***name,
1508 uint32 **type);
1509 BOOL query_groupinfo( const POLICY_HND *pol_dom,
1510 const char *domain,
1511 const DOM_SID *sid,
1512 uint32 group_rid,
1513 GROUP_INFO_FN(grp_inf));
1514 BOOL req_groupmem_info( const POLICY_HND *pol_dom,
1515 const char *domain,
1516 const DOM_SID *sid,
1517 uint32 group_rid,
1518 const char *group_name,
1519 GROUP_MEM_FN(grp_mem));
1520 uint32 msrpc_sam_get_first_domain( const char* srv_name,
1521 char *dom_name,
1522 DOM_SID *dom_sid);
1523 uint32 msrpc_sam_enum_domains( const char* srv_name,
1524 struct acct_info **sam,
1525 uint32 *num_sam_entries,
1526 DOMAIN_FN(dom_fn),
1527 DOMAIN_INFO_FN(dom_inf_fn));
1528 uint32 msrpc_sam_enum_groups( const char* srv_name,
1529 const char* domain,
1530 const DOM_SID *sid1,
1531 struct acct_info **sam,
1532 uint32 *num_sam_entries,
1533 GROUP_FN(grp_fn),
1534 GROUP_INFO_FN(grp_inf_fn),
1535 GROUP_MEM_FN(grp_mem_fn));
1536 uint32 msrpc_sam_enum_aliases( const char* srv_name,
1537 const char* domain,
1538 const DOM_SID *sid1,
1539 struct acct_info **sam,
1540 uint32 *num_sam_entries,
1541 ALIAS_FN(als_fn),
1542 ALIAS_INFO_FN(als_inf_fn),
1543 ALIAS_MEM_FN(als_mem_fn));
1544 BOOL create_samr_domain_user( POLICY_HND *pol_dom,
1545 char *acct_name, uint16 acb_info,
1546 const char* password, int plen,
1547 uint32 *rid);
1548 BOOL create_samr_domain_alias( POLICY_HND *pol_open_domain,
1549 const char *acct_name, const char *acct_desc,
1550 uint32 *rid);
1551 BOOL create_samr_domain_group( POLICY_HND *pol_open_domain,
1552 const char *acct_name, const char *acct_desc,
1553 uint32 *rid);
1554 BOOL get_samr_query_usergroups( const POLICY_HND *pol_open_domain,
1555 uint32 user_rid,
1556 uint32 *num_groups, DOM_GID **gid);
1557 BOOL delete_samr_dom_group( POLICY_HND *pol_open_domain,
1558 uint32 group_rid);
1559 BOOL get_samr_query_groupmem(
1560 const POLICY_HND *pol_open_domain,
1561 uint32 group_rid, uint32 *num_mem,
1562 uint32 **rid, uint32 **attr);
1563 BOOL delete_samr_dom_alias(
1564 POLICY_HND *pol_open_domain,
1565 uint32 alias_rid);
1566 BOOL get_samr_query_aliasmem(
1567 const POLICY_HND *pol_open_domain,
1568 uint32 alias_rid, uint32 *num_mem, DOM_SID2 *sid);
1569 BOOL set_samr_set_userinfo2(
1570 POLICY_HND *pol_open_domain,
1571 uint32 info_level,
1572 uint32 user_rid, void *usr);
1573 BOOL set_samr_set_userinfo( const POLICY_HND *pol_open_domain,
1574 uint32 info_level,
1575 uint32 user_rid, void *usr);
1576 BOOL get_samr_query_userinfo( const POLICY_HND *pol_open_domain,
1577 uint32 info_level,
1578 uint32 user_rid, SAM_USERINFO_CTR *ctr);
1579 BOOL get_samr_query_groupinfo(
1580 const POLICY_HND *pol_open_domain,
1581 uint32 info_level,
1582 uint32 group_rid, GROUP_INFO_CTR *ctr);
1583 BOOL get_samr_query_aliasinfo(
1584 const POLICY_HND *pol_open_domain,
1585 uint32 info_level,
1586 uint32 alias_rid, ALIAS_INFO_CTR *ctr);
1587 BOOL msrpc_sam_create_dom_user(const char* srv_name, DOM_SID *sid1,
1588 char *acct_name, uint16 acb_info,
1589 const char *password, int plen,
1590 uint32 *rid);
1591 BOOL msrpc_sam_query_dispinfo(const char* srv_name, const char* domain,
1592 DOM_SID *sid1,
1593 uint16 switch_value,
1594 uint32 *num_entries, SAM_DISPINFO_CTR *ctr,
1595 DISP_FN(disp_fn));
1596 BOOL msrpc_sam_ntchange_pwd(const char* srv_name,
1597 const char* domain,
1598 const char *ntuser,
1599 const uchar lm_oldhash[16],
1600 const uchar nt_oldhash[16],
1601 const char* new_passwd);
1602 BOOL msrpc_sam_ntpasswd_set(const char* srv_name, const char *user,
1603 struct ntuser_creds *samr_creds,
1604 const uchar lm_newpass[516],
1605 const uchar lm_hshhash[16],
1606 const uchar nt_newpass[516],
1607 const uchar nt_hshhash[16]);
1608 BOOL msrpc_sam_query_userinfo(const char* srv_name, const DOM_SID *sid,
1609 const char *user_name, uint16 info_level,
1610 SAM_USERINFO_CTR *ctr);
1612 /*The following definitions come from rpc_client/ncacn_np_use.c */
1614 BOOL ncacn_np_establish_connection(struct ncacn_np *cli,
1615 const char *srv_name,
1616 const struct ntuser_creds *ntc,
1617 const char *pipe_name, BOOL redir,
1618 BOOL reuse);
1619 void init_ncacn_np_use(void);
1620 void free_ncacn_np_use(void);
1621 struct ncacn_np *ncacn_np_initialise(struct ncacn_np *msrpc,
1622 const vuser_key * key);
1623 struct ncacn_np *ncacn_np_use_add(const char *pipe_name,
1624 const vuser_key * key,
1625 const char *srv_name,
1626 const struct ntuser_creds *ntc,
1627 BOOL redir,
1628 BOOL reuse, BOOL *is_new_connection);
1629 BOOL ncacn_np_use_del(const char *pipe_name,
1630 const vuser_key * key,
1631 BOOL force_close, BOOL *connection_closed);
1632 void ncacn_np_use_enum(uint32 * num_cons, struct use_info ***use);
1634 /*The following definitions come from rpc_client/ncalrpc_l_use.c */
1636 void init_ncalrpc_use(void);
1637 void free_ncalrpc_use(void);
1638 struct msrpc_local *ncalrpc_l_use_add(const char *pipe_name,
1639 const vuser_key * key,
1640 BOOL redir, BOOL reuse, BOOL *is_new);
1641 BOOL ncalrpc_l_use_del(const char *pipe_name,
1642 const vuser_key * key,
1643 BOOL force_close, BOOL *connection_closed);
1644 void ncalrpc_l_use_enum(uint32 * num_cons, struct use_info ***use);
1645 void ncalrpc_use_wait_keyboard(void);
1647 /*The following definitions come from rpc_parse/parse_creds.c */
1649 BOOL make_creds_unix(CREDS_UNIX *r_u, const char* user_name,
1650 const char* requested_name,
1651 const char* real_name,
1652 BOOL guest);
1653 BOOL creds_io_unix(char *desc, CREDS_UNIX *r_u, prs_struct *ps, int depth);
1654 void creds_free_unix(CREDS_UNIX *r_u);
1655 BOOL make_creds_unix_sec(CREDS_UNIX_SEC *r_u,
1656 uint32 uid, uint32 gid, uint32 num_grps, gid_t *grps);
1657 BOOL creds_io_unix_sec(char *desc, CREDS_UNIX_SEC *r_u, prs_struct *ps, int depth);
1658 void creds_free_unix_sec(CREDS_UNIX_SEC *r_u);
1659 BOOL creds_io_pwd_info(char *desc, struct pwd_info *pwd, prs_struct *ps, int depth);
1660 BOOL creds_io_nt(char *desc, CREDS_NT *r_u, prs_struct *ps, int depth);
1661 void creds_free_nt(CREDS_NT *r_u);
1662 BOOL creds_io_hybrid(char *desc, CREDS_HYBRID *r_u, prs_struct *ps, int depth);
1663 void copy_unix_creds(CREDS_UNIX *to, const CREDS_UNIX *from);
1664 void copy_unix_sec_creds(CREDS_UNIX_SEC *to, const CREDS_UNIX_SEC *from);
1665 void copy_nt_creds(struct ntuser_creds *to,
1666 const struct ntuser_creds *from);
1667 void copy_user_creds(struct user_creds *to,
1668 const struct user_creds *from);
1669 void free_user_creds(struct user_creds *creds);
1670 BOOL creds_io_cmd(char *desc, CREDS_CMD *r_u, prs_struct *ps, int depth);
1671 BOOL create_ntuser_creds( prs_struct *ps,
1672 const char* name,
1673 uint16 version, uint16 command,
1674 const vuser_key *key,
1675 const struct ntuser_creds *ntu,
1676 BOOL reuse);
1677 BOOL create_user_creds( prs_struct *ps,
1678 const char* name,
1679 uint16 version, uint16 command,
1680 const vuser_key *key,
1681 const struct user_creds *usr);
1683 /*The following definitions come from rpc_parse/parse_lsa.c */
1685 BOOL make_lsa_trans_name(LSA_TRANS_NAME * trn, UNISTR2 * uni_name,
1686 uint32 sid_name_use, char *name, uint32 idx);
1687 int make_dom_ref_uni(DOM_R_REF * ref, const UNISTR2 * uni_domname,
1688 const DOM_SID * dom_sid);
1689 int make_dom_ref(DOM_R_REF * ref, const char *domname,
1690 const DOM_SID * dom_sid);
1691 BOOL make_lsa_sec_qos(LSA_SEC_QOS * qos, uint16 imp_lev, uint8 ctxt,
1692 uint8 eff, uint32 unknown);
1693 BOOL make_lsa_obj_attr(LSA_OBJ_ATTR * attr, uint32 attributes,
1694 LSA_SEC_QOS * qos);
1695 BOOL make_q_open_pol(LSA_Q_OPEN_POL * r_q, uint16 system_name,
1696 uint32 attributes,
1697 uint32 desired_access, LSA_SEC_QOS * qos);
1698 BOOL lsa_io_q_open_pol(char *desc, LSA_Q_OPEN_POL * r_q, prs_struct * ps,
1699 int depth);
1700 BOOL lsa_io_r_open_pol(char *desc, LSA_R_OPEN_POL * r_p, prs_struct * ps,
1701 int depth);
1702 BOOL make_q_open_pol2(LSA_Q_OPEN_POL2 * r_q, const char *server_name,
1703 uint32 attributes,
1704 uint32 desired_access, LSA_SEC_QOS * qos);
1705 BOOL lsa_io_q_open_pol2(char *desc, LSA_Q_OPEN_POL2 * r_q, prs_struct * ps,
1706 int depth);
1707 BOOL lsa_io_r_open_pol2(char *desc, LSA_R_OPEN_POL2 * r_p, prs_struct * ps,
1708 int depth);
1709 BOOL make_q_query_sec_obj(LSA_Q_QUERY_SEC_OBJ * q_q, const POLICY_HND *hnd,
1710 uint32 sec_info);
1711 BOOL lsa_io_q_query_sec_obj(char *desc, LSA_Q_QUERY_SEC_OBJ * q_q, prs_struct * ps,
1712 int depth);
1713 BOOL lsa_io_r_query_sec_obj(char *desc, LSA_R_QUERY_SEC_OBJ *r_u, prs_struct *ps, int depth);
1714 BOOL make_q_query(LSA_Q_QUERY_INFO * q_q, POLICY_HND *hnd, uint16 info_class);
1715 BOOL lsa_io_q_query(char *desc, LSA_Q_QUERY_INFO * q_q, prs_struct * ps,
1716 int depth);
1717 BOOL make_q_create_secret(LSA_Q_CREATE_SECRET * q_o,
1718 const POLICY_HND *pol_hnd, const char *secret_name,
1719 uint32 desired_access);
1720 BOOL lsa_io_q_create_secret(char *desc, LSA_Q_CREATE_SECRET * q_o,
1721 prs_struct * ps, int depth);
1722 BOOL lsa_io_r_create_secret(char *desc, LSA_R_CREATE_SECRET * r_o,
1723 prs_struct * ps, int depth);
1724 BOOL make_q_open_secret(LSA_Q_OPEN_SECRET * q_o, const POLICY_HND *pol_hnd,
1725 const char *secret_name, uint32 desired_access);
1726 BOOL lsa_io_q_open_secret(char *desc, LSA_Q_OPEN_SECRET * q_o,
1727 prs_struct * ps, int depth);
1728 BOOL lsa_io_r_open_secret(char *desc, LSA_R_OPEN_SECRET * r_o,
1729 prs_struct * ps, int depth);
1730 BOOL lsa_io_secret_value(char *desc, LSA_SECRET_VALUE * value,
1731 prs_struct * ps, int depth);
1732 BOOL lsa_io_secret_info(char *desc, LSA_SECRET_INFO * info, prs_struct * ps,
1733 int depth);
1734 BOOL lsa_io_secret(char *desc, LSA_SECRET * q_q, prs_struct * ps, int depth);
1735 BOOL make_q_query_secret(LSA_Q_QUERY_SECRET * q_q, POLICY_HND *pol,
1736 const STRING2 *secret, const NTTIME * update);
1737 BOOL lsa_io_q_query_secret(char *desc, LSA_Q_QUERY_SECRET * q_q,
1738 prs_struct * ps, int depth);
1739 BOOL lsa_io_r_query_secret(char *desc, LSA_R_QUERY_SECRET * r_q,
1740 prs_struct * ps, int depth);
1741 BOOL lsa_io_q_set_secret(char *desc, LSA_Q_SET_SECRET * q_q, prs_struct * ps,
1742 int depth);
1743 BOOL lsa_io_r_set_secret(char *desc, LSA_R_SET_SECRET * r_q, prs_struct * ps,
1744 int depth);
1745 BOOL make_q_enum_trust_dom(LSA_Q_ENUM_TRUST_DOM * q_e,
1746 POLICY_HND *pol,
1747 uint32 enum_context, uint32 preferred_len);
1748 BOOL lsa_io_q_enum_trust_dom(char *desc, LSA_Q_ENUM_TRUST_DOM * q_e,
1749 prs_struct * ps, int depth);
1750 BOOL make_r_enum_trust_dom(LSA_R_ENUM_TRUST_DOM * r_e, int32 enum_context,
1751 uint32 num_domains,
1752 UNISTR2 * domain_names, DOM_SID ** domain_sids,
1753 uint32 status);
1754 BOOL lsa_io_r_enum_trust_dom(char *desc, LSA_R_ENUM_TRUST_DOM * r_e,
1755 prs_struct * ps, int depth);
1756 void lsa_free_r_enum_trust_dom(LSA_R_ENUM_TRUST_DOM * r_e);
1757 BOOL lsa_io_r_query(char *desc, LSA_R_QUERY_INFO * r_q, prs_struct * ps,
1758 int depth);
1759 BOOL make_lsa_sid_enum(LSA_SID_ENUM * sen, uint32 num_entries,
1760 DOM_SID ** sids);
1761 BOOL make_q_lookup_sids(LSA_Q_LOOKUP_SIDS * q_l, POLICY_HND *hnd,
1762 int num_sids, DOM_SID ** sids, uint16 level);
1763 BOOL lsa_io_q_lookup_sids(char *desc, LSA_Q_LOOKUP_SIDS * q_s,
1764 prs_struct * ps, int depth);
1765 BOOL lsa_io_r_lookup_sids(char *desc, LSA_R_LOOKUP_SIDS * r_s,
1766 prs_struct * ps, int depth);
1767 BOOL make_q_lookup_names(LSA_Q_LOOKUP_NAMES * q_l, POLICY_HND *hnd,
1768 uint32 num_names, char **names);
1769 BOOL lsa_io_q_lookup_names(char *desc, LSA_Q_LOOKUP_NAMES * q_r,
1770 prs_struct * ps, int depth);
1771 BOOL lsa_io_r_lookup_names(char *desc, LSA_R_LOOKUP_NAMES * r_r,
1772 prs_struct * ps, int depth);
1773 BOOL make_lsa_q_close(LSA_Q_CLOSE * q_c, POLICY_HND *hnd);
1774 BOOL lsa_io_q_close(char *desc, LSA_Q_CLOSE * q_c, prs_struct * ps, int depth);
1775 BOOL lsa_io_r_close(char *desc, LSA_R_CLOSE * r_c, prs_struct * ps, int depth);
1777 /*The following definitions come from rpc_parse/parse_net.c */
1779 BOOL make_q_logon_ctrl2(NET_Q_LOGON_CTRL2 *q_l,
1780 const char* srv_name,
1781 uint32 function_code,
1782 uint32 query_level,
1783 uint32 switch_value);
1784 BOOL net_io_q_logon_ctrl2(char *desc, NET_Q_LOGON_CTRL2 *q_l, prs_struct *ps, int depth);
1785 BOOL make_r_logon_ctrl2(NET_R_LOGON_CTRL2 *r_l,
1786 uint32 switch_value,
1787 NETLOGON_INFO *logon_info,
1788 uint32 status);
1789 BOOL net_io_r_logon_ctrl2(char *desc, NET_R_LOGON_CTRL2 *r_l, prs_struct *ps, int depth);
1790 BOOL net_io_r_trust_dom(char *desc, NET_R_TRUST_DOM_LIST *r_t, prs_struct *ps, int depth);
1791 BOOL net_io_q_trust_dom(char *desc, NET_Q_TRUST_DOM_LIST *q_l, prs_struct *ps, int depth);
1792 BOOL make_q_req_chal(NET_Q_REQ_CHAL *q_c,
1793 const char *logon_srv, const char *logon_clnt,
1794 DOM_CHAL *clnt_chal);
1795 BOOL net_io_q_req_chal(char *desc, NET_Q_REQ_CHAL *q_c, prs_struct *ps, int depth);
1796 BOOL net_io_r_req_chal(char *desc, NET_R_REQ_CHAL *r_c, prs_struct *ps, int depth);
1797 BOOL make_q_auth(NET_Q_AUTH *q_a,
1798 const char *logon_srv, const char *acct_name,
1799 uint16 sec_chan, const char *comp_name,
1800 DOM_CHAL *clnt_chal);
1801 BOOL net_io_q_auth(char *desc, NET_Q_AUTH *q_a, prs_struct *ps, int depth);
1802 BOOL net_io_r_auth(char *desc, NET_R_AUTH *r_a, prs_struct *ps, int depth);
1803 BOOL make_q_auth_2(NET_Q_AUTH_2 *q_a,
1804 const char *logon_srv, const char *acct_name,
1805 uint16 sec_chan, const char *comp_name,
1806 DOM_CHAL *clnt_chal, uint32 clnt_flgs);
1807 BOOL net_io_q_auth_2(char *desc, NET_Q_AUTH_2 *q_a, prs_struct *ps, int depth);
1808 BOOL net_io_r_auth_2(char *desc, NET_R_AUTH_2 *r_a, prs_struct *ps, int depth);
1809 BOOL make_q_srv_pwset(NET_Q_SRV_PWSET *q_s,
1810 const char *logon_srv, const char *acct_name,
1811 uint16 sec_chan, const char *comp_name,
1812 DOM_CRED *cred, char nt_cypher[16]);
1813 BOOL net_io_q_srv_pwset(char *desc, NET_Q_SRV_PWSET *q_s, prs_struct *ps, int depth);
1814 BOOL net_io_r_srv_pwset(char *desc, NET_R_SRV_PWSET *r_s, prs_struct *ps, int depth);
1815 BOOL make_id_info1(NET_ID_INFO_1 *id, const char *domain_name,
1816 uint32 param_ctrl,
1817 uint32 log_id_low,
1818 uint32 log_id_high,
1819 const char *user_name,
1820 const char *wksta_name,
1821 const char sess_key[16],
1822 const uchar lm_cypher[16],
1823 const uchar nt_cypher[16]);
1824 BOOL make_id_info4(NET_ID_INFO_4 *id, const char *domain_name,
1825 uint32 param_ctrl,
1826 uint32 log_id_low, uint32 log_id_high,
1827 const char *user_name, const char *wksta_name,
1828 const char *general);
1829 BOOL make_id_info2(NET_ID_INFO_2 *id, const char *domain_name,
1830 uint32 param_ctrl,
1831 uint32 log_id_low, uint32 log_id_high,
1832 const char *user_name, const char *wksta_name,
1833 const uchar lm_challenge[8],
1834 const uchar *lm_chal_resp,
1835 int lm_chal_len,
1836 const uchar *nt_chal_resp,
1837 int nt_chal_len);
1838 BOOL make_sam_info(DOM_SAM_INFO *sam,
1839 const char *logon_srv, const char *comp_name,
1840 DOM_CRED *clnt_cred,
1841 DOM_CRED *rtn_cred, uint16 logon_level,
1842 NET_ID_INFO_CTR *ctr);
1843 BOOL make_net_user_info3W(NET_USER_INFO_3 *usr,
1845 const NTTIME *logon_time,
1846 const NTTIME *logoff_time,
1847 const NTTIME *kickoff_time,
1848 const NTTIME *pass_last_set_time,
1849 const NTTIME *pass_can_change_time,
1850 const NTTIME *pass_must_change_time,
1852 const UNISTR2 *user_name,
1853 const UNISTR2 *full_name,
1854 const UNISTR2 *log_scr,
1855 const UNISTR2 *prof_path,
1856 const UNISTR2 *home_dir,
1857 const UNISTR2 *dir_drive,
1859 uint16 logon_count,
1860 uint16 bad_pw_count,
1862 uint32 user_id,
1863 uint32 group_id,
1864 uint32 num_groups,
1865 const DOM_GID *gids,
1866 uint32 user_flgs,
1868 const char sess_key[16],
1870 const UNISTR2 *logon_srv,
1871 const UNISTR2 *logon_dom,
1873 const char *padding,
1875 const DOM_SID *dom_sid,
1876 const char *other_sids);
1877 BOOL make_net_user_info3(NET_USER_INFO_3 *usr,
1879 NTTIME *logon_time,
1880 NTTIME *logoff_time,
1881 NTTIME *kickoff_time,
1882 NTTIME *pass_last_set_time,
1883 NTTIME *pass_can_change_time,
1884 NTTIME *pass_must_change_time,
1886 char *user_name,
1887 char *full_name,
1888 char *logon_script,
1889 char *profile_path,
1890 char *home_dir,
1891 char *dir_drive,
1893 uint16 logon_count,
1894 uint16 bad_pw_count,
1896 uint32 user_id,
1897 uint32 group_id,
1898 uint32 num_groups,
1899 DOM_GID *gids,
1900 uint32 user_flgs,
1902 char sess_key[16],
1904 char *logon_srv,
1905 char *logon_dom,
1907 char *padding,
1909 DOM_SID *dom_sid,
1910 char *other_sids);
1911 BOOL net_io_user_info3(char *desc, NET_USER_INFO_3 *usr, prs_struct *ps, int depth);
1912 BOOL net_io_q_sam_logon(char *desc, NET_Q_SAM_LOGON *q_l, prs_struct *ps, int depth);
1913 BOOL make_r_sam_logon(NET_R_SAM_LOGON *r_s,
1914 const DOM_CRED *srv_creds,
1915 uint16 switch_value,
1916 NET_USER_INFO_3 *user_info,
1917 uint32 status);
1918 BOOL net_io_r_sam_logon(char *desc, NET_R_SAM_LOGON *r_l, prs_struct *ps, int depth);
1919 BOOL net_io_q_sam_logoff(char *desc, NET_Q_SAM_LOGOFF *q_l, prs_struct *ps, int depth);
1920 BOOL make_r_sam_logoff(NET_R_SAM_LOGOFF *r_s,
1921 const DOM_CRED *srv_cred,
1922 uint32 status);
1923 BOOL net_io_r_sam_logoff(char *desc, NET_R_SAM_LOGOFF *r_l, prs_struct *ps, int depth);
1924 BOOL make_q_sam_sync(NET_Q_SAM_SYNC *q_s,
1925 const char *srv_name,
1926 const char *cli_name,
1927 DOM_CRED *cli_creds, uint32 database_id);
1928 BOOL net_io_q_sam_sync(char *desc, NET_Q_SAM_SYNC *q_s, prs_struct *ps, int depth);
1929 BOOL make_sam_delta_hdr(SAM_DELTA_HDR *delta, uint16 type, uint32 rid);
1930 BOOL make_sam_account_info(SAM_ACCOUNT_INFO *info,
1931 const UNISTR2 *user_name,
1932 const UNISTR2 *full_name,
1933 uint32 user_rid, uint32 group_rid,
1934 const UNISTR2 *home_dir,
1935 const UNISTR2 *dir_drive,
1936 const UNISTR2 *log_scr,
1937 const UNISTR2 *desc,
1938 uint32 acb_info,
1939 const UNISTR2 *prof_path,
1940 const UNISTR2 *wkstas,
1941 const UNISTR2 *unk_str,
1942 const UNISTR2 *mung_dial);
1943 BOOL make_r_sam_sync(NET_R_SAM_SYNC *r_s,
1944 const DOM_CRED *srv_cred,
1945 uint32 sync_context,
1946 uint32 num_deltas,
1947 uint32 num_deltas2,
1948 SAM_DELTA_HDR *hdr_deltas,
1949 SAM_DELTA_CTR *deltas,
1950 uint32 status);
1951 BOOL net_io_r_sam_sync(char *desc, uint8 sess_key[16],
1952 NET_R_SAM_SYNC *r_s, prs_struct *ps, int depth);
1954 /*The following definitions come from rpc_parse/parse_ntlmssp.c */
1956 BOOL rpc_hdr_ntlmssp_auth_chk(RPC_HDR_AUTH *rai);
1957 BOOL make_rpc_auth_ntlmssp_neg(RPC_AUTH_NTLMSSP_NEG *neg,
1958 uint32 neg_flgs,
1959 fstring myname, fstring domain);
1960 BOOL smb_io_rpc_auth_ntlmssp_neg(char *desc, RPC_AUTH_NTLMSSP_NEG *neg, prs_struct *ps, int depth);
1961 BOOL make_rpc_auth_ntlmssp_chal(RPC_AUTH_NTLMSSP_CHAL *chl,
1962 uint32 neg_flags,
1963 uint8 challenge[8]);
1964 BOOL smb_io_rpc_auth_ntlmssp_chal(char *desc, RPC_AUTH_NTLMSSP_CHAL *chl, prs_struct *ps, int depth);
1965 BOOL make_rpc_auth_ntlmssp_resp(RPC_AUTH_NTLMSSP_RESP *rsp,
1966 uchar lm_resp[24],
1967 uchar *nt_resp, size_t nt_len,
1968 char *domain, char *user, char *wks,
1969 uint32 neg_flags);
1970 BOOL smb_io_rpc_auth_ntlmssp_resp(char *desc, RPC_AUTH_NTLMSSP_RESP *rsp, prs_struct *ps, int depth);
1971 BOOL rpc_auth_ntlmssp_chk(RPC_AUTH_NTLMSSP_CHK *chk, uint32 crc32, uint32 seq_num);
1972 BOOL make_rpc_auth_ntlmssp_chk(RPC_AUTH_NTLMSSP_CHK *chk,
1973 uint32 ver, uint32 crc32, uint32 seq_num);
1974 BOOL smb_io_rpc_auth_ntlmssp_chk(char *desc, RPC_AUTH_NTLMSSP_CHK *chk, prs_struct *ps, int depth);
1976 /*The following definitions come from rpc_parse/parse_prs.c */
1978 void prs_debug(prs_struct * ps, int depth, const char *desc,
1979 const char *fn_name);
1980 void prs_debug_out(const prs_struct * ps, char *msg, int level);
1981 BOOL prs_init(prs_struct * ps, uint32 size, uint8 align, BOOL io);
1982 void prs_set_packtype(prs_struct * ps, const uint8 * pack_type);
1983 void prs_create(prs_struct * ps, char *data, uint32 size, uint8 align,
1984 BOOL io);
1985 BOOL prs_copy(prs_struct * ps, const prs_struct * from);
1986 BOOL prs_alloc_data(prs_struct * buf, int size);
1987 BOOL prs_buf_copy(char *copy_into, const prs_struct * buf,
1988 uint32 offset, uint32 len);
1989 void prs_struct_free(prs_struct ** buf);
1990 void prs_free_data(prs_struct * buf);
1991 BOOL prs_realloc_data(prs_struct * buf, size_t new_size);
1992 BOOL prs_grow_data(prs_struct * buf, BOOL io, int new_size, BOOL force_grow);
1993 uint32 prs_buf_len(const prs_struct * buf);
1994 char *prs_data(const prs_struct * buf, uint32 offset);
1995 void prs_link(prs_struct * prev, prs_struct * ps, prs_struct * next);
1996 BOOL prs_align(prs_struct * ps);
1997 BOOL prs_grow(prs_struct * ps, uint32 new_size);
1998 BOOL prs_append_data(prs_struct * ps, const char *data, int len);
1999 BOOL prs_add_data(prs_struct * ps, const char *data, int len);
2000 void prs_switch_type(prs_struct *ps, BOOL io);
2001 void prs_force_dynamic(prs_struct *ps);
2002 uint32 prs_offset(prs_struct *ps);
2003 BOOL prs_set_offset(prs_struct *ps, uint32 offset);
2004 void prs_mem_free(prs_struct *ps);
2005 BOOL prs_append_some_prs_data(prs_struct *dst, prs_struct *src, int32 start, uint32 len);
2006 BOOL _prs_uint8(char *name, prs_struct * ps, int depth, uint8 * data8);
2007 BOOL _prs_uint16(char *name, prs_struct * ps, int depth, uint16 * data16);
2008 BOOL _prs_hash1(prs_struct * ps, uint32 offset, uint8 sess_key[16]);
2009 BOOL _prs_uint32(char *name, prs_struct * ps, int depth, uint32 * data32);
2010 BOOL _prs_uint8s(BOOL charmode, char *name, prs_struct * ps, int depth,
2011 uint8 * data8s, int len);
2012 BOOL _prs_uint16s(BOOL charmode, char *name, prs_struct * ps, int depth,
2013 uint16 * data16s, int len);
2014 BOOL _prs_uint32s(BOOL charmode, char *name, prs_struct * ps, int depth,
2015 uint32 * data32s, int len);
2016 BOOL _prs_buffer2(BOOL charmode, char *name, prs_struct * ps, int depth,
2017 BUFFER2 * str);
2018 BOOL _prs_string2(BOOL charmode, char *name, prs_struct * ps, int depth,
2019 STRING2 * str);
2020 BOOL _prs_unistr2(BOOL charmode, char *name, prs_struct * ps, int depth,
2021 UNISTR2 * str);
2022 BOOL _prs_unistr3(BOOL charmode, char *name, UNISTR3 * str, prs_struct * ps,
2023 int depth);
2024 BOOL _prs_unistr(char *name, prs_struct * ps, int depth, UNISTR * str);
2025 BOOL _prs_string(char *name, prs_struct * ps, int depth, char *str,
2026 uint16 len, uint16 max_buf_size);
2027 BOOL _prs_uint16_pre(char *name, prs_struct * ps, int depth, uint16 * data16,
2028 uint32 * offset);
2029 BOOL _prs_uint16_post(char *name, prs_struct * ps, int depth, uint16 * data16,
2030 uint32 ptr_uint16, uint32 start_offset);
2031 BOOL _prs_uint32_pre(char *name, prs_struct * ps, int depth, uint32 * data32,
2032 uint32 * offset);
2033 BOOL _prs_uint32_post(char *name, prs_struct * ps, int depth, uint32 * data32,
2034 uint32 ptr_uint32, uint32 data_size);
2035 int prs_tdb_delete(TDB_CONTEXT * tdb, prs_struct * pk);
2036 int prs_tdb_store(TDB_CONTEXT * tdb, int flgs, prs_struct * pk,
2037 prs_struct * pd);
2038 void prs_tdb_fetch(TDB_CONTEXT * tdb, prs_struct * pk, prs_struct * pd);
2040 /*The following definitions come from rpc_parse/parse_rpc.c */
2042 BOOL make_rpc_hdr(RPC_HDR * hdr, enum RPC_PKT_TYPE pkt_type, uint8 flags,
2043 uint32 call_id, int frag_len, int auth_len);
2044 BOOL smb_io_rpc_hdr(char *desc, RPC_HDR * rpc, prs_struct * ps, int depth);
2045 BOOL is_complete_pdu(prs_struct * ps);
2046 BOOL smb_io_rpc_hdr_nack(char *desc, RPC_HDR_NACK * rpc, prs_struct * ps,
2047 int depth);
2048 BOOL smb_io_rpc_hdr_fault(char *desc, RPC_HDR_FAULT * rpc, prs_struct * ps,
2049 int depth);
2050 BOOL smb_io_rpc_uuid(char *desc, RPC_UUID * uuid, prs_struct * ps,
2051 int depth);
2052 BOOL make_rpc_hdr_rb(RPC_HDR_RB * rpc,
2053 uint16 max_tsize, uint16 max_rsize, uint32 assoc_gid,
2054 uint8 num_elements, uint16 context_id,
2055 uint8 num_syntaxes, RPC_IFACE * abstract,
2056 RPC_IFACE * transfer);
2057 BOOL smb_io_rpc_hdr_rb(char *desc, RPC_HDR_RB * rpc, prs_struct * ps,
2058 int depth);
2059 BOOL make_rpc_hdr_ba(RPC_HDR_BA * rpc,
2060 uint16 max_tsize, uint16 max_rsize, uint32 assoc_gid,
2061 const char *pipe_addr,
2062 uint8 num_results, uint16 result, uint16 reason,
2063 RPC_IFACE * transfer);
2064 BOOL smb_io_rpc_hdr_ba(char *desc, RPC_HDR_BA * rpc, prs_struct * ps,
2065 int depth);
2066 BOOL make_rpc_hdr_req(RPC_HDR_REQ * hdr, uint32 alloc_hint, uint16 vuid,
2067 uint16 opnum);
2068 BOOL smb_io_rpc_hdr_req(char *desc, RPC_HDR_REQ * rpc, prs_struct * ps,
2069 int depth);
2070 BOOL smb_io_rpc_hdr_resp(char *desc, RPC_HDR_RESP * rpc, prs_struct * ps,
2071 int depth);
2072 BOOL make_rpc_hdr_autha(RPC_HDR_AUTHA * rai,
2073 uint16 max_tsize, uint16 max_rsize,
2074 uint8 auth_type, uint8 auth_level,
2075 uint8 stub_type_len);
2076 BOOL smb_io_rpc_hdr_autha(char *desc, RPC_HDR_AUTHA * rai, prs_struct * ps,
2077 int depth);
2078 BOOL make_rpc_hdr_auth(RPC_HDR_AUTH * rai,
2079 uint8 auth_type, uint8 auth_level,
2080 uint8 stub_type_len, uint32 ptr);
2081 BOOL smb_io_rpc_hdr_auth(char *desc, RPC_HDR_AUTH * rai, prs_struct * ps,
2082 int depth);
2083 BOOL make_rpc_auth_verifier(RPC_AUTH_VERIFIER * rav,
2084 char *signature, uint32 msg_type);
2085 BOOL smb_io_rpc_auth_verifier(char *desc, RPC_AUTH_VERIFIER * rav,
2086 prs_struct * ps, int depth);
2087 BOOL rpc_auth_verifier_chk(RPC_AUTH_VERIFIER * rav,
2088 char *signature, uint32 msg_type);
2090 /*The following definitions come from rpc_parse/parse_samr.c */
2092 BOOL make_samr_q_close_hnd(SAMR_Q_CLOSE_HND *q_c, POLICY_HND *hnd);
2093 BOOL samr_io_q_close_hnd(char *desc, SAMR_Q_CLOSE_HND *q_u, prs_struct *ps, int depth);
2094 BOOL samr_io_r_close_hnd(char *desc, SAMR_R_CLOSE_HND *r_u, prs_struct *ps, int depth);
2095 BOOL make_samr_q_lookup_domain(SAMR_Q_LOOKUP_DOMAIN *q_u,
2096 POLICY_HND *pol, const char *dom_name);
2097 BOOL samr_io_q_lookup_domain(char *desc, SAMR_Q_LOOKUP_DOMAIN *q_u, prs_struct *ps, int depth);
2098 BOOL make_samr_r_lookup_domain(SAMR_R_LOOKUP_DOMAIN *r_u,
2099 DOM_SID *dom_sid, uint32 status);
2100 BOOL samr_io_r_lookup_domain(char *desc, SAMR_R_LOOKUP_DOMAIN *r_u, prs_struct *ps, int depth);
2101 BOOL make_samr_q_unknown_2d(SAMR_Q_UNKNOWN_2D *q_u,
2102 const POLICY_HND *dom_pol,
2103 const DOM_SID *sid);
2104 BOOL samr_io_q_unknown_2d(char *desc, SAMR_Q_UNKNOWN_2D *q_u, prs_struct *ps, int depth);
2105 BOOL samr_io_r_unknown_2d(char *desc, SAMR_R_UNKNOWN_2D *r_u, prs_struct *ps, int depth);
2106 BOOL make_samr_q_open_domain(SAMR_Q_OPEN_DOMAIN *q_u,
2107 const POLICY_HND *connect_pol, uint32 flags,
2108 const DOM_SID *sid);
2109 BOOL samr_io_q_open_domain(char *desc, SAMR_Q_OPEN_DOMAIN *q_u, prs_struct *ps, int depth);
2110 BOOL samr_io_r_open_domain(char *desc, SAMR_R_OPEN_DOMAIN *r_u, prs_struct *ps, int depth);
2111 BOOL make_samr_q_get_usrdom_pwinfo(SAMR_Q_GET_USRDOM_PWINFO *q_u, POLICY_HND *user_pol);
2112 BOOL samr_io_q_get_usrdom_pwinfo(char *desc, SAMR_Q_GET_USRDOM_PWINFO *q_u, prs_struct *ps, int depth);
2113 BOOL samr_io_r_get_usrdom_pwinfo(char *desc, SAMR_R_GET_USRDOM_PWINFO *r_u, prs_struct *ps, int depth);
2114 BOOL make_samr_q_query_sec_obj(SAMR_Q_QUERY_SEC_OBJ *q_u,
2115 const POLICY_HND *user_pol, uint32 sec_info);
2116 BOOL samr_io_q_query_sec_obj(char *desc, SAMR_Q_QUERY_SEC_OBJ *q_u, prs_struct *ps, int depth);
2117 BOOL make_samr_q_query_dom_info(SAMR_Q_QUERY_DOMAIN_INFO *q_u,
2118 POLICY_HND *domain_pol, uint16 switch_value);
2119 BOOL samr_io_q_query_dom_info(char *desc, SAMR_Q_QUERY_DOMAIN_INFO *q_u, prs_struct *ps, int depth);
2120 BOOL make_unk_info3(SAM_UNK_INFO_3 *u_3);
2121 BOOL make_unk_info6(SAM_UNK_INFO_6 *u_6);
2122 BOOL make_unk_info7(SAM_UNK_INFO_7 *u_7);
2123 BOOL make_unk_info2(SAM_UNK_INFO_2 *u_2, char *domain, char *server);
2124 BOOL make_unk_info1(SAM_UNK_INFO_1 *u_1);
2125 BOOL make_samr_r_query_dom_info(SAMR_R_QUERY_DOMAIN_INFO *r_u,
2126 uint16 switch_value, SAM_UNK_CTR *ctr,
2127 uint32 status);
2128 BOOL samr_io_r_query_dom_info(char *desc, SAMR_R_QUERY_DOMAIN_INFO *r_u, prs_struct *ps, int depth);
2129 BOOL samr_io_r_query_sec_obj(char *desc, SAMR_R_QUERY_SEC_OBJ *r_u, prs_struct *ps, int depth);
2130 BOOL make_sam_entry(SAM_ENTRY *sam, uint32 len_sam_name, uint32 rid);
2131 BOOL make_samr_q_enum_dom_users(SAMR_Q_ENUM_DOM_USERS *q_e, POLICY_HND *pol,
2132 uint32 start_idx,
2133 uint16 acb_mask, uint16 unk_1, uint32 size);
2134 BOOL samr_io_q_enum_dom_users(char *desc, SAMR_Q_ENUM_DOM_USERS *q_e, prs_struct *ps, int depth);
2135 BOOL make_samr_r_enum_dom_users(SAMR_R_ENUM_DOM_USERS *r_u,
2136 uint32 next_idx,
2137 uint32 num_sam_entries);
2138 BOOL samr_io_r_enum_dom_users(char *desc, SAMR_R_ENUM_DOM_USERS *r_u, prs_struct *ps, int depth);
2139 BOOL make_samr_q_query_dispinfo(SAMR_Q_QUERY_DISPINFO *q_e, POLICY_HND *pol,
2140 uint16 switch_level, uint32 start_idx,
2141 uint32 max_entries);
2142 BOOL samr_io_q_query_dispinfo(char *desc, SAMR_Q_QUERY_DISPINFO *q_e, prs_struct *ps, int depth);
2143 BOOL make_sam_dispinfo_1(SAM_DISPINFO_1 *sam, uint32 *num_entries,
2144 uint32 *data_size, uint32 start_idx,
2145 SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]);
2146 BOOL make_sam_dispinfo_2(SAM_DISPINFO_2 *sam, uint32 *num_entries,
2147 uint32 *data_size, uint32 start_idx,
2148 SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]);
2149 BOOL make_sam_dispinfo_3(SAM_DISPINFO_3 *sam, uint32 *num_entries,
2150 uint32 *data_size, uint32 start_idx,
2151 DOMAIN_GRP *grp);
2152 BOOL make_sam_dispinfo_4(SAM_DISPINFO_4 *sam, uint32 *num_entries,
2153 uint32 *data_size, uint32 start_idx,
2154 SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]);
2155 BOOL make_sam_dispinfo_5(SAM_DISPINFO_5 *sam, uint32 *num_entries,
2156 uint32 *data_size, uint32 start_idx,
2157 DOMAIN_GRP *grp);
2158 BOOL make_samr_r_query_dispinfo(SAMR_R_QUERY_DISPINFO *r_u,
2159 uint32 num_entries, uint32 data_size,
2160 uint16 switch_level, SAM_DISPINFO_CTR *ctr,
2161 uint32 status);
2162 BOOL samr_io_r_query_dispinfo(char *desc, SAMR_R_QUERY_DISPINFO *r_u, prs_struct *ps, int depth);
2163 BOOL make_samr_q_open_group(SAMR_Q_OPEN_GROUP *q_c,
2164 const POLICY_HND *hnd,
2165 uint32 access_mask, uint32 rid);
2166 BOOL samr_io_q_open_group(char *desc, SAMR_Q_OPEN_GROUP *q_u, prs_struct *ps, int depth);
2167 BOOL samr_io_r_open_group(char *desc, SAMR_R_OPEN_GROUP *r_u, prs_struct *ps, int depth);
2168 BOOL make_samr_group_info1(GROUP_INFO1 *gr1,
2169 char *acct_name, char *acct_desc,
2170 uint32 num_members);
2171 BOOL samr_io_group_info1(char *desc, GROUP_INFO1 *gr1, prs_struct *ps, int depth);
2172 BOOL make_samr_group_info4(GROUP_INFO4 *gr4, const char *acct_desc);
2173 BOOL samr_io_group_info4(char *desc, GROUP_INFO4 *gr4, prs_struct *ps, int depth);
2174 BOOL samr_group_info_ctr(char *desc, GROUP_INFO_CTR *ctr, prs_struct *ps, int depth);
2175 BOOL make_samr_q_create_dom_group(SAMR_Q_CREATE_DOM_GROUP *q_e,
2176 POLICY_HND *pol,
2177 const char *acct_desc);
2178 BOOL samr_io_q_create_dom_group(char *desc, SAMR_Q_CREATE_DOM_GROUP *q_e, prs_struct *ps, int depth);
2179 BOOL samr_io_r_create_dom_group(char *desc, SAMR_R_CREATE_DOM_GROUP *r_u, prs_struct *ps, int depth);
2180 BOOL make_samr_q_delete_dom_group(SAMR_Q_DELETE_DOM_GROUP *q_c, POLICY_HND *hnd);
2181 BOOL samr_io_q_delete_dom_group(char *desc, SAMR_Q_DELETE_DOM_GROUP *q_u, prs_struct *ps, int depth);
2182 BOOL samr_io_r_delete_dom_group(char *desc, SAMR_R_DELETE_DOM_GROUP *r_u, prs_struct *ps, int depth);
2183 BOOL make_samr_q_del_groupmem(SAMR_Q_DEL_GROUPMEM *q_e,
2184 POLICY_HND *pol,
2185 uint32 rid);
2186 BOOL samr_io_q_del_groupmem(char *desc, SAMR_Q_DEL_GROUPMEM *q_e, prs_struct *ps, int depth);
2187 BOOL make_samr_r_del_groupmem(SAMR_R_DEL_GROUPMEM *r_u, POLICY_HND *pol,
2188 uint32 status);
2189 BOOL samr_io_r_del_groupmem(char *desc, SAMR_R_DEL_GROUPMEM *r_u, prs_struct *ps, int depth);
2190 BOOL make_samr_q_add_groupmem(SAMR_Q_ADD_GROUPMEM *q_e,
2191 POLICY_HND *pol,
2192 uint32 rid);
2193 BOOL samr_io_q_add_groupmem(char *desc, SAMR_Q_ADD_GROUPMEM *q_e, prs_struct *ps, int depth);
2194 BOOL make_samr_r_add_groupmem(SAMR_R_ADD_GROUPMEM *r_u, POLICY_HND *pol,
2195 uint32 status);
2196 BOOL samr_io_r_add_groupmem(char *desc, SAMR_R_ADD_GROUPMEM *r_u, prs_struct *ps, int depth);
2197 BOOL make_samr_q_set_groupinfo(SAMR_Q_SET_GROUPINFO *q_e,
2198 POLICY_HND *pol, GROUP_INFO_CTR *ctr);
2199 BOOL samr_io_q_set_groupinfo(char *desc, SAMR_Q_SET_GROUPINFO *q_e, prs_struct *ps, int depth);
2200 BOOL make_samr_r_set_groupinfo(SAMR_R_SET_GROUPINFO *r_u,
2201 uint32 status);
2202 BOOL samr_io_r_set_groupinfo(char *desc, SAMR_R_SET_GROUPINFO *r_u, prs_struct *ps, int depth);
2203 BOOL make_samr_q_query_groupinfo(SAMR_Q_QUERY_GROUPINFO *q_e,
2204 POLICY_HND *pol,
2205 uint16 switch_level);
2206 BOOL samr_io_q_query_groupinfo(char *desc, SAMR_Q_QUERY_GROUPINFO *q_e, prs_struct *ps, int depth);
2207 BOOL make_samr_r_query_groupinfo(SAMR_R_QUERY_GROUPINFO *r_u, GROUP_INFO_CTR *ctr,
2208 uint32 status);
2209 BOOL samr_io_r_query_groupinfo(char *desc, SAMR_R_QUERY_GROUPINFO *r_u, prs_struct *ps, int depth);
2210 BOOL make_samr_q_query_groupmem(SAMR_Q_QUERY_GROUPMEM *q_c, POLICY_HND *hnd);
2211 BOOL samr_io_q_query_groupmem(char *desc, SAMR_Q_QUERY_GROUPMEM *q_u, prs_struct *ps, int depth);
2212 BOOL make_samr_r_query_groupmem(SAMR_R_QUERY_GROUPMEM *r_u,
2213 uint32 num_entries, uint32 *rid, uint32 *attr, uint32 status);
2214 BOOL samr_io_r_query_groupmem(char *desc, SAMR_R_QUERY_GROUPMEM *r_u, prs_struct *ps, int depth);
2215 void samr_free_r_query_groupmem(SAMR_R_QUERY_GROUPMEM *r_u);
2216 BOOL make_samr_q_query_usergroups(SAMR_Q_QUERY_USERGROUPS *q_u,
2217 POLICY_HND *hnd);
2218 BOOL samr_io_q_query_usergroups(char *desc, SAMR_Q_QUERY_USERGROUPS *q_u, prs_struct *ps, int depth);
2219 BOOL make_samr_r_query_usergroups(SAMR_R_QUERY_USERGROUPS *r_u,
2220 uint32 num_gids, DOM_GID *gid, uint32 status);
2221 BOOL samr_io_gids(char *desc, uint32 *num_gids, DOM_GID **gid, prs_struct *ps, int depth);
2222 BOOL samr_io_r_query_usergroups(char *desc, SAMR_R_QUERY_USERGROUPS *r_u, prs_struct *ps, int depth);
2223 BOOL make_samr_q_enum_domains(SAMR_Q_ENUM_DOMAINS *q_e,
2224 const POLICY_HND *pol,
2225 uint32 start_idx, uint32 size);
2226 BOOL samr_io_q_enum_domains(char *desc, SAMR_Q_ENUM_DOMAINS *q_e, prs_struct *ps, int depth);
2227 BOOL make_samr_r_enum_domains(SAMR_R_ENUM_DOMAINS *r_u,
2228 uint32 next_idx, uint32 num_sam_entries);
2229 BOOL samr_io_r_enum_domains(char *desc, SAMR_R_ENUM_DOMAINS *r_u, prs_struct *ps, int depth);
2230 BOOL make_samr_q_enum_dom_groups(SAMR_Q_ENUM_DOM_GROUPS *q_e,
2231 const POLICY_HND *pol,
2232 uint32 start_idx, uint32 size);
2233 BOOL samr_io_q_enum_dom_groups(char *desc, SAMR_Q_ENUM_DOM_GROUPS *q_e, prs_struct *ps, int depth);
2234 BOOL make_samr_r_enum_dom_groups(SAMR_R_ENUM_DOM_GROUPS *r_u,
2235 uint32 next_idx, uint32 num_sam_entries);
2236 BOOL samr_io_r_enum_dom_groups(char *desc, SAMR_R_ENUM_DOM_GROUPS *r_u, prs_struct *ps, int depth);
2237 BOOL make_samr_q_enum_dom_aliases(SAMR_Q_ENUM_DOM_ALIASES *q_e, POLICY_HND *pol,
2238 uint32 start_idx, uint32 size);
2239 BOOL samr_io_q_enum_dom_aliases(char *desc, SAMR_Q_ENUM_DOM_ALIASES *q_e, prs_struct *ps, int depth);
2240 BOOL make_samr_r_enum_dom_aliases(SAMR_R_ENUM_DOM_ALIASES *r_u,
2241 uint32 next_idx,
2242 uint32 num_sam_entries);
2243 BOOL samr_io_r_enum_dom_aliases(char *desc, SAMR_R_ENUM_DOM_ALIASES *r_u, prs_struct *ps, int depth);
2244 BOOL make_samr_alias_info3(ALIAS_INFO3 *al3, const char *acct_desc);
2245 BOOL samr_io_alias_info3(char *desc, ALIAS_INFO3 *al3, prs_struct *ps, int depth);
2246 BOOL samr_alias_info_ctr(char *desc, ALIAS_INFO_CTR *ctr, prs_struct *ps, int depth);
2247 BOOL make_samr_q_query_aliasinfo(SAMR_Q_QUERY_ALIASINFO *q_e,
2248 const POLICY_HND *pol, uint16 switch_level);
2249 BOOL samr_io_q_query_aliasinfo(char *desc, SAMR_Q_QUERY_ALIASINFO *q_e, prs_struct *ps, int depth);
2250 BOOL make_samr_r_query_aliasinfo(SAMR_R_QUERY_ALIASINFO *r_u,
2251 ALIAS_INFO_CTR *ctr, uint32 status);
2252 BOOL samr_io_r_query_aliasinfo(char *desc, SAMR_R_QUERY_ALIASINFO *r_u, prs_struct *ps, int depth);
2253 BOOL make_samr_q_set_aliasinfo(SAMR_Q_SET_ALIASINFO *q_u,
2254 const POLICY_HND *hnd,
2255 ALIAS_INFO_CTR *ctr);
2256 BOOL samr_io_q_set_aliasinfo(char *desc, SAMR_Q_SET_ALIASINFO *q_u, prs_struct *ps, int depth);
2257 BOOL samr_io_r_set_aliasinfo(char *desc, SAMR_R_SET_ALIASINFO *r_u, prs_struct *ps, int depth);
2258 BOOL make_samr_q_query_useraliases(SAMR_Q_QUERY_USERALIASES *q_u,
2259 const POLICY_HND *hnd,
2260 uint32 num_sids,
2261 uint32 *ptr_sid, DOM_SID2 *sid);
2262 BOOL samr_io_q_query_useraliases(char *desc, SAMR_Q_QUERY_USERALIASES *q_u, prs_struct *ps, int depth);
2263 void samr_free_q_query_useraliases(SAMR_Q_QUERY_USERALIASES *q_u);
2264 BOOL make_samr_r_query_useraliases(SAMR_R_QUERY_USERALIASES *r_u,
2265 uint32 num_rids, uint32 *rid, uint32 status);
2266 BOOL samr_io_rids(char *desc, uint32 *num_rids, uint32 **rid, prs_struct *ps, int depth);
2267 BOOL samr_io_r_query_useraliases(char *desc, SAMR_R_QUERY_USERALIASES *r_u, prs_struct *ps, int depth);
2268 BOOL make_samr_q_open_alias(SAMR_Q_OPEN_ALIAS *q_u, const POLICY_HND *pol,
2269 uint32 unknown_0, uint32 rid);
2270 BOOL samr_io_q_open_alias(char *desc, SAMR_Q_OPEN_ALIAS *q_u, prs_struct *ps, int depth);
2271 BOOL samr_io_r_open_alias(char *desc, SAMR_R_OPEN_ALIAS *r_u, prs_struct *ps, int depth);
2272 BOOL make_samr_q_lookup_rids(SAMR_Q_LOOKUP_RIDS *q_u,
2273 const POLICY_HND *pol, uint32 flags,
2274 uint32 num_rids, const uint32 *rid);
2275 BOOL samr_io_q_lookup_rids(char *desc, SAMR_Q_LOOKUP_RIDS *q_u, prs_struct *ps, int depth);
2276 void samr_free_q_lookup_rids(SAMR_Q_LOOKUP_RIDS *q_u);
2277 BOOL make_samr_r_lookup_rids(SAMR_R_LOOKUP_RIDS *r_u,
2278 uint32 num_names, UNIHDR *hdr_name, UNISTR2 *uni_name,
2279 uint32 *type);
2280 BOOL samr_io_r_lookup_rids(char *desc, SAMR_R_LOOKUP_RIDS *r_u, prs_struct *ps, int depth);
2281 void samr_free_r_lookup_rids(SAMR_R_LOOKUP_RIDS *r_u);
2282 BOOL make_samr_q_delete_alias(SAMR_Q_DELETE_DOM_ALIAS *q_u, POLICY_HND *hnd);
2283 BOOL samr_io_q_delete_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS *q_u, prs_struct *ps, int depth);
2284 BOOL samr_io_r_delete_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS *r_u, prs_struct *ps, int depth);
2285 BOOL make_samr_q_create_dom_alias(SAMR_Q_CREATE_DOM_ALIAS *q_u, POLICY_HND *hnd,
2286 const char *acct_desc);
2287 BOOL samr_io_q_create_dom_alias(char *desc, SAMR_Q_CREATE_DOM_ALIAS *q_u, prs_struct *ps, int depth);
2288 BOOL samr_io_r_create_dom_alias(char *desc, SAMR_R_CREATE_DOM_ALIAS *r_u, prs_struct *ps, int depth);
2289 BOOL make_samr_q_add_aliasmem(SAMR_Q_ADD_ALIASMEM *q_u, POLICY_HND *hnd,
2290 DOM_SID *sid);
2291 BOOL samr_io_q_add_aliasmem(char *desc, SAMR_Q_ADD_ALIASMEM *q_u, prs_struct *ps, int depth);
2292 BOOL samr_io_r_add_aliasmem(char *desc, SAMR_R_ADD_ALIASMEM *r_u, prs_struct *ps, int depth);
2293 BOOL make_samr_q_del_aliasmem(SAMR_Q_DEL_ALIASMEM *q_u, POLICY_HND *hnd,
2294 DOM_SID *sid);
2295 BOOL samr_io_q_del_aliasmem(char *desc, SAMR_Q_DEL_ALIASMEM *q_u, prs_struct *ps, int depth);
2296 BOOL samr_io_r_del_aliasmem(char *desc, SAMR_R_DEL_ALIASMEM *r_u, prs_struct *ps, int depth);
2297 BOOL make_samr_q_delete_dom_alias(SAMR_Q_DELETE_DOM_ALIAS *q_c, POLICY_HND *hnd);
2298 BOOL samr_io_q_delete_dom_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS *q_u, prs_struct *ps, int depth);
2299 BOOL make_samr_r_delete_dom_alias(SAMR_R_DELETE_DOM_ALIAS *r_u,
2300 uint32 status);
2301 BOOL samr_io_r_delete_dom_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS *r_u, prs_struct *ps, int depth);
2302 BOOL make_samr_q_query_aliasmem(SAMR_Q_QUERY_ALIASMEM *q_c,
2303 const POLICY_HND *hnd);
2304 BOOL samr_io_q_query_aliasmem(char *desc, SAMR_Q_QUERY_ALIASMEM *q_u, prs_struct *ps, int depth);
2305 BOOL make_samr_r_query_aliasmem(SAMR_R_QUERY_ALIASMEM *r_u,
2306 uint32 num_sids, DOM_SID2 *sid, uint32 status);
2307 BOOL samr_io_r_query_aliasmem(char *desc, SAMR_R_QUERY_ALIASMEM *r_u, prs_struct *ps, int depth);
2308 BOOL make_samr_q_lookup_names(SAMR_Q_LOOKUP_NAMES *q_u,
2309 const POLICY_HND *pol, uint32 flags,
2310 uint32 num_names, char **name);
2311 BOOL samr_io_q_lookup_names(char *desc, SAMR_Q_LOOKUP_NAMES *q_u, prs_struct *ps, int depth);
2312 void samr_free_q_lookup_names(SAMR_Q_LOOKUP_NAMES *q_l);
2313 BOOL make_samr_r_lookup_names(SAMR_R_LOOKUP_NAMES *r_u,
2314 uint32 num_rids,
2315 const uint32 *rid, const uint32 *type,
2316 uint32 status);
2317 BOOL samr_io_r_lookup_names(char *desc, SAMR_R_LOOKUP_NAMES *r_u, prs_struct *ps, int depth);
2318 void samr_free_r_lookup_names(SAMR_R_LOOKUP_NAMES *r_l);
2319 BOOL make_samr_q_delete_dom_user(SAMR_Q_DELETE_DOM_USER *q_c, POLICY_HND *hnd);
2320 BOOL samr_io_q_delete_dom_user(char *desc, SAMR_Q_DELETE_DOM_USER *q_u, prs_struct *ps, int depth);
2321 BOOL samr_io_r_delete_dom_user(char *desc, SAMR_R_DELETE_DOM_USER *r_u, prs_struct *ps, int depth);
2322 BOOL make_samr_q_open_user(SAMR_Q_OPEN_USER *q_u,
2323 const POLICY_HND *pol,
2324 uint32 access_mask, uint32 rid);
2325 BOOL samr_io_q_open_user(char *desc, SAMR_Q_OPEN_USER *q_u, prs_struct *ps, int depth);
2326 BOOL samr_io_r_open_user(char *desc, SAMR_R_OPEN_USER *r_u, prs_struct *ps, int depth);
2327 BOOL make_samr_q_create_user(SAMR_Q_CREATE_USER *q_u,
2328 POLICY_HND *pol,
2329 const char *name,
2330 uint16 acb_info, uint32 access_mask);
2331 BOOL samr_io_q_create_user(char *desc, SAMR_Q_CREATE_USER *q_u, prs_struct *ps, int depth);
2332 BOOL samr_io_r_create_user(char *desc, SAMR_R_CREATE_USER *r_u, prs_struct *ps, int depth);
2333 BOOL make_samr_q_query_userinfo(SAMR_Q_QUERY_USERINFO *q_u,
2334 POLICY_HND *hnd, uint16 switch_value);
2335 BOOL samr_io_q_query_userinfo(char *desc, SAMR_Q_QUERY_USERINFO *q_u, prs_struct *ps, int depth);
2336 BOOL make_sam_user_info12(SAM_USER_INFO_12 *usr,
2337 uint16 acb_info,
2338 const uint8 lm_pwd[16],
2339 const uint8 nt_pwd[16]);
2340 BOOL sam_io_user_info12(char *desc, SAM_USER_INFO_12 *u, prs_struct *ps, int depth);
2341 BOOL make_sam_user_info10(SAM_USER_INFO_10 *usr,
2342 uint32 acb_info);
2343 BOOL sam_io_user_info10(char *desc, SAM_USER_INFO_10 *usr, prs_struct *ps, int depth);
2344 BOOL make_sam_user_info11(SAM_USER_INFO_11 *usr,
2345 NTTIME *expiry,
2346 char *mach_acct,
2347 uint32 rid_user,
2348 uint32 rid_group,
2349 uint16 acct_ctrl);
2350 BOOL sam_io_user_info11(char *desc, SAM_USER_INFO_11 *usr, prs_struct *ps, int depth);
2351 BOOL make_sam_user_info24(SAM_USER_INFO_24 *usr,
2352 const char newpass[516], uint16 passlen);
2353 BOOL make_sam_user_info23W(SAM_USER_INFO_23 *usr,
2355 const NTTIME *logon_time, /* all zeros */
2356 const NTTIME *logoff_time, /* all zeros */
2357 const NTTIME *kickoff_time, /* all zeros */
2358 const NTTIME *pass_last_set_time, /* all zeros */
2359 const NTTIME *pass_can_change_time, /* all zeros */
2360 const NTTIME *pass_must_change_time, /* all zeros */
2362 const UNISTR2 *user_name,
2363 const UNISTR2 *full_name,
2364 const UNISTR2 *home_dir,
2365 const UNISTR2 *dir_drive,
2366 const UNISTR2 *log_scr,
2367 const UNISTR2 *prof_path,
2368 const UNISTR2 *desc,
2369 const UNISTR2 *wkstas,
2370 const UNISTR2 *unk_str,
2371 const UNISTR2 *mung_dial,
2373 uint32 user_rid, /* 0x0000 0000 */
2374 uint32 group_rid,
2375 uint16 acb_info,
2377 uint32 unknown_3,
2378 uint16 logon_divs,
2379 LOGON_HRS *hrs,
2380 uint32 unknown_5,
2381 char newpass[516],
2382 uint32 unknown_6);
2383 BOOL make_sam_user_info23A(SAM_USER_INFO_23 *usr,
2385 NTTIME *logon_time, /* all zeros */
2386 NTTIME *logoff_time, /* all zeros */
2387 NTTIME *kickoff_time, /* all zeros */
2388 NTTIME *pass_last_set_time, /* all zeros */
2389 NTTIME *pass_can_change_time, /* all zeros */
2390 NTTIME *pass_must_change_time, /* all zeros */
2392 char *user_name, /* NULL */
2393 char *full_name,
2394 char *home_dir,
2395 char *dir_drive,
2396 char *log_scr,
2397 char *prof_path,
2398 char *desc,
2399 char *wkstas,
2400 char *unk_str,
2401 char *mung_dial,
2403 uint32 user_rid, /* 0x0000 0000 */
2404 uint32 group_rid,
2405 uint16 acb_info,
2407 uint32 unknown_3,
2408 uint16 logon_divs,
2409 LOGON_HRS *hrs,
2410 uint32 unknown_5,
2411 char newpass[516],
2412 uint32 unknown_6);
2413 BOOL make_sam_user_info21W(SAM_USER_INFO_21 *usr,
2415 const NTTIME *logon_time,
2416 const NTTIME *logoff_time,
2417 const NTTIME *kickoff_time,
2418 const NTTIME *pass_last_set_time,
2419 const NTTIME *pass_can_change_time,
2420 const NTTIME *pass_must_change_time,
2422 const UNISTR2 *user_name,
2423 const UNISTR2 *full_name,
2424 const UNISTR2 *home_dir,
2425 const UNISTR2 *dir_drive,
2426 const UNISTR2 *log_scr,
2427 const UNISTR2 *prof_path,
2428 const UNISTR2 *desc,
2429 const UNISTR2 *wkstas,
2430 const UNISTR2 *unk_str,
2431 const UNISTR2 *mung_dial,
2433 const uchar lm_pwd[16],
2434 const uchar nt_pwd[16],
2436 uint32 user_rid,
2437 uint32 group_rid,
2438 uint16 acb_info,
2440 uint32 unknown_3,
2441 uint16 logon_divs,
2442 const LOGON_HRS *hrs,
2443 uint32 unknown_5,
2444 uint32 unknown_6);
2445 BOOL make_sam_user_info21A(SAM_USER_INFO_21 *usr,
2447 NTTIME *logon_time,
2448 NTTIME *logoff_time,
2449 NTTIME *kickoff_time,
2450 NTTIME *pass_last_set_time,
2451 NTTIME *pass_can_change_time,
2452 NTTIME *pass_must_change_time,
2454 char *user_name,
2455 char *full_name,
2456 char *home_dir,
2457 char *dir_drive,
2458 char *log_scr,
2459 char *prof_path,
2460 char *desc,
2461 char *wkstas,
2462 char *unk_str,
2463 char *mung_dial,
2465 uint32 user_rid,
2466 uint32 group_rid,
2467 uint16 acb_info,
2469 uint32 unknown_3,
2470 uint16 logon_divs,
2471 LOGON_HRS *hrs,
2472 uint32 unknown_5,
2473 uint32 unknown_6);
2474 BOOL sam_io_user_info21(char *desc, SAM_USER_INFO_21 *usr, prs_struct *ps, int depth);
2475 uint32 make_samr_userinfo_ctr_usr21(SAM_USERINFO_CTR *ctr,
2476 uint16 switch_value,
2477 const SAM_USER_INFO_21 *usr);
2478 BOOL make_samr_userinfo_ctr(SAM_USERINFO_CTR *ctr, const uchar *sess_key,
2479 uint16 switch_value, void *info);
2480 BOOL samr_io_userinfo_ctr(char *desc, SAM_USERINFO_CTR *ctr, prs_struct *ps, int depth);
2481 void free_samr_userinfo_ctr(SAM_USERINFO_CTR *ctr);
2482 BOOL make_samr_r_query_userinfo(SAMR_R_QUERY_USERINFO *r_u,
2483 SAM_USERINFO_CTR *ctr, uint32 status);
2484 BOOL samr_io_r_query_userinfo(char *desc, SAMR_R_QUERY_USERINFO *r_u, prs_struct *ps, int depth);
2485 BOOL make_samr_q_set_userinfo(SAMR_Q_SET_USERINFO *q_u,
2486 POLICY_HND *hnd,
2487 uint16 switch_value, void *info);
2488 BOOL samr_io_q_set_userinfo(char *desc, SAMR_Q_SET_USERINFO *q_u, prs_struct *ps, int depth);
2489 void free_samr_q_set_userinfo(SAMR_Q_SET_USERINFO *q_u);
2490 BOOL make_samr_r_set_userinfo(SAMR_R_SET_USERINFO *r_u, uint32 status);
2491 BOOL samr_io_r_set_userinfo(char *desc, SAMR_R_SET_USERINFO *r_u, prs_struct *ps, int depth);
2492 BOOL make_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 *q_u,
2493 POLICY_HND *hnd,
2494 uint16 switch_value,
2495 SAM_USERINFO_CTR *ctr);
2496 BOOL samr_io_q_set_userinfo2(char *desc, SAMR_Q_SET_USERINFO2 *q_u, prs_struct *ps, int depth);
2497 void free_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 *q_u);
2498 BOOL make_samr_r_set_userinfo2(SAMR_R_SET_USERINFO2 *r_u,
2499 uint32 status);
2500 BOOL samr_io_r_set_userinfo2(char *desc, SAMR_R_SET_USERINFO2 *r_u, prs_struct *ps, int depth);
2501 BOOL make_samr_q_connect(SAMR_Q_CONNECT *q_u,
2502 const char *srv_name, uint32 access_mask);
2503 BOOL samr_io_q_connect(char *desc, SAMR_Q_CONNECT *q_u, prs_struct *ps, int depth);
2504 BOOL samr_io_r_connect(char *desc, SAMR_R_CONNECT *r_u, prs_struct *ps, int depth);
2505 BOOL make_samr_q_connect_anon(SAMR_Q_CONNECT_ANON *q_u);
2506 BOOL samr_io_q_connect_anon(char *desc, SAMR_Q_CONNECT_ANON *q_u, prs_struct *ps, int depth);
2507 BOOL samr_io_r_connect_anon(char *desc, SAMR_R_CONNECT_ANON *r_u, prs_struct *ps, int depth);
2508 BOOL make_samr_q_get_dom_pwinfo(SAMR_Q_GET_DOM_PWINFO *q_u, const char *srv_name);
2509 BOOL samr_io_q_get_dom_pwinfo(char *desc, SAMR_Q_GET_DOM_PWINFO *q_u, prs_struct *ps, int depth);
2510 BOOL samr_io_r_get_dom_pwinfo(char *desc, SAMR_R_GET_DOM_PWINFO *r_u, prs_struct *ps, int depth);
2511 BOOL make_enc_passwd(SAMR_ENC_PASSWD *pwd, const char pass[512]);
2512 BOOL samr_io_enc_passwd(char *desc, SAMR_ENC_PASSWD *pwd, prs_struct *ps, int depth);
2513 BOOL make_enc_hash(SAMR_ENC_HASH *hsh, const uchar hash[16]);
2514 BOOL samr_io_enc_hash(char *desc, SAMR_ENC_HASH *hsh, prs_struct *ps, int depth);
2515 BOOL make_samr_q_chgpasswd_user(SAMR_Q_CHGPASSWD_USER *q_u,
2516 const char *dest_host, const char *user_name,
2517 const char nt_newpass[516],
2518 const uchar nt_oldhash[16],
2519 const char lm_newpass[516],
2520 const uchar lm_oldhash[16]);
2521 BOOL samr_io_q_chgpasswd_user(char *desc, SAMR_Q_CHGPASSWD_USER *q_u, prs_struct *ps, int depth);
2522 BOOL make_samr_r_chgpasswd_user(SAMR_R_CHGPASSWD_USER *r_u, uint32 status);
2523 BOOL samr_io_r_chgpasswd_user(char *desc, SAMR_R_CHGPASSWD_USER *r_u, prs_struct *ps, int depth);
2525 /*The following definitions come from rpc_parse/parse_sec.c */
2527 BOOL make_sec_access(SEC_ACCESS *t, uint32 mask);
2528 BOOL sec_io_access(char *desc, SEC_ACCESS *t, prs_struct *ps, int depth);
2529 BOOL make_sec_ace(SEC_ACE *t, DOM_SID *sid, uint8 type, SEC_ACCESS mask, uint8 flag);
2530 BOOL sec_io_ace(char *desc, SEC_ACE *t, prs_struct *ps, int depth);
2531 BOOL make_sec_acl(SEC_ACL *t, uint16 revision, int num_aces, SEC_ACE *ace);
2532 void free_sec_acl(SEC_ACL *t);
2533 BOOL sec_io_acl(char *desc, SEC_ACL *t, prs_struct *ps, int depth);
2534 int make_sec_desc(SEC_DESC *t, uint16 revision, uint16 type,
2535 DOM_SID *owner_sid, DOM_SID *grp_sid,
2536 SEC_ACL *sacl, SEC_ACL *dacl);
2537 void free_sec_desc(SEC_DESC *t);
2538 BOOL sec_io_desc(char *desc, SEC_DESC *t, prs_struct *ps, int depth);
2539 BOOL make_sec_desc_buf(SEC_DESC_BUF *buf, int len, SEC_DESC *data);
2540 void free_sec_desc_buf(SEC_DESC_BUF *buf);
2541 BOOL sec_io_desc_buf(char *desc, SEC_DESC_BUF *sec, prs_struct *ps, int depth);
2543 /*The following definitions come from rpc_parse/parse_vuid.c */
2545 BOOL vuid_io_key(char *desc, vuser_key * r_u, prs_struct * ps, int depth);
2546 BOOL make_vuid_user_struct(user_struct * r_u,
2547 uid_t uid, gid_t gid,
2548 const char *name,
2549 const char *requested_name,
2550 const char *real_name,
2551 BOOL guest,
2552 uint32 n_groups, const gid_t * groups,
2553 const NET_USER_INFO_3 * usr);
2554 BOOL vuid_io_user_struct(char *desc, user_struct * r_u, prs_struct * ps,
2555 int depth);
2556 void vuid_free_user_struct(user_struct * r_u);
2558 /*The following definitions come from tdb/tdb.c */
2560 char *tdb_error(TDB_CONTEXT *tdb);
2561 int tdb_update(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf);
2562 TDB_DATA tdb_fetch(TDB_CONTEXT *tdb, TDB_DATA key);
2563 int tdb_exists(TDB_CONTEXT *tdb, TDB_DATA key);
2564 int tdb_traverse(TDB_CONTEXT *tdb, int (*fn)(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, void* state), void* state);
2565 TDB_DATA tdb_firstkey(TDB_CONTEXT *tdb);
2566 TDB_DATA tdb_nextkey(TDB_CONTEXT *tdb, TDB_DATA key);
2567 int tdb_delete(TDB_CONTEXT *tdb, TDB_DATA key);
2568 int tdb_store(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, int flag);
2569 TDB_CONTEXT *tdb_open(char *name, int hash_size, int tdb_flags,
2570 int open_flags, mode_t mode);
2571 int tdb_close(TDB_CONTEXT *tdb);
2572 int tdb_writelock(TDB_CONTEXT *tdb);
2573 int tdb_writeunlock(TDB_CONTEXT *tdb);
2574 int tdb_lockchain(TDB_CONTEXT *tdb, TDB_DATA key);
2575 int tdb_unlockchain(TDB_CONTEXT *tdb, TDB_DATA key);
2576 #endif /* _WINBINDD_PROTO_H_ */