summaryrefslogtreecommitdiff
path: root/source/include/rpc_client_proto.h
blob: df52d4b2d7b25b0479767b2c3a7fe74c04a94622 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
#ifndef _RPC_CLIENT_PROTO_H_
#define _RPC_CLIENT_PROTO_H_
/* This file is automatically generated with "make proto". DO NOT EDIT */


/*The following definitions come from  rpc_client/cli_atsvc.c  */

BOOL at_add_job(
		char *srv_name, AT_JOB_INFO *info, char *command,
		uint32 *jobid);
BOOL at_del_job( char *srv_name, uint32 min_jobid, uint32 max_jobid);
BOOL at_enum_jobs( char *srv_name, uint32 *num_jobs,
		  AT_ENUM_INFO *jobs, char ***commands);
BOOL at_query_job(char *srv_name,
		  uint32 jobid, AT_JOB_INFO *job, fstring command);

/*The following definitions come from  rpc_client/cli_brs.c  */

BOOL brs_query_info( const char *srv_name, uint32 switch_value,
			void *id);

/*The following definitions come from  rpc_client/cli_connect.c  */

void init_connections(void);
void free_connections(void);
void cli_connection_free(struct cli_connection *con);
void cli_connection_unlink(struct cli_connection *con);
BOOL cli_connection_init(const char *srv_name, const char *pipe_name,
			 struct cli_connection **con);
BOOL cli_connection_init_auth(const char *srv_name, const char *pipe_name,
			      struct cli_connection **con,
			      cli_auth_fns * auth, void *auth_creds);
BOOL cli_connection_getsrv(const char *srv_name, const char *pipe_name,
			   struct cli_connection **con);
BOOL cli_connection_get(const POLICY_HND * pol, struct cli_connection **con);
BOOL cli_pol_link(POLICY_HND * to, const POLICY_HND * from);
BOOL cli_get_usr_sesskey(const POLICY_HND * pol, uchar usr_sess_key[16]);
BOOL cli_set_con_usr_sesskey(struct cli_connection *con,
			     const uchar usr_sess_key[16]);
const vuser_key *cli_con_sec_ctx(struct cli_connection *con);
struct cli_auth_fns *cli_conn_get_authfns(struct cli_connection *con);
void *cli_conn_get_auth_creds(struct cli_connection *con);
void *cli_conn_get_auth_info(struct cli_connection *con);
BOOL cli_conn_set_auth_info(struct cli_connection *con, void *auth_info);
struct ntdom_info *cli_conn_get_ntinfo(struct cli_connection *con);
BOOL cli_get_con_sesskey(struct cli_connection *con, uchar sess_key[16]);
BOOL cli_con_get_srvname(struct cli_connection *con, char *srv_name);
BOOL cli_get_sesskey(const POLICY_HND * pol, uchar sess_key[16]);
BOOL cli_get_sesskey_srv(const char *srv_name, uchar sess_key[16]);
void cli_con_gen_next_creds(struct cli_connection *con,
			    DOM_CRED * new_clnt_cred);
void cli_con_get_cli_cred(struct cli_connection *con, DOM_CRED * clnt_cred);
BOOL cli_con_deal_with_creds(struct cli_connection *con,
			     DOM_CRED * rcv_srv_cred);
BOOL cli_con_set_creds(const char *srv_name, const uchar sess_key[16],
		       DOM_CRED * cred);
BOOL rpc_hnd_pipe_req(const POLICY_HND * hnd, uint8 op_num,
		      prs_struct * data, prs_struct * rdata);
BOOL rpc_con_pipe_req(struct cli_connection *con, uint8 op_num,
		      prs_struct * data, prs_struct * rdata);
BOOL rpc_api_write(struct cli_connection *con, prs_struct * data);
BOOL rpc_api_rcv_pdu(struct cli_connection *con, prs_struct * rdata);
BOOL rpc_api_send_rcv_pdu(struct cli_connection *con, prs_struct * data,
			  prs_struct * rdata);
BOOL set_policy_con(struct policy_cache *cache, POLICY_HND * hnd,
		    struct cli_connection *con,
		    void (*free_fn) (struct cli_connection *));
BOOL get_policy_con(struct policy_cache *cache, const POLICY_HND * hnd,
		    struct cli_connection **con);

/*The following definitions come from  rpc_client/cli_eventlog.c  */

BOOL event_open(const char* srv_name, const char *log, POLICY_HND *hnd);
BOOL event_close( POLICY_HND *hnd);
BOOL event_numofeventlogrec( POLICY_HND *hnd, uint32 *number);
BOOL event_readeventlog(POLICY_HND *hnd, 
                           uint32 number, uint32 flags, uint32 offset, 
			   uint32 *number_of_bytes, EVENTLOGRECORD *ev);

/*The following definitions come from  rpc_client/cli_login.c  */

uint32 cli_nt_setup_creds(const char *srv_name,
			  const char *domain,
			  const char *myhostname,
			  const char *trust_acct,
			  const uchar trust_pwd[16], uint16 sec_chan);
BOOL cli_nt_srv_pwset(const char *srv_name, const char *myhostname,
		      const char *trust_acct,
		      const uchar * new_hashof_trust_pwd, uint16 sec_chan);
BOOL cli_nt_login_general(const char *srv_name, const char *myhostname,
			  const char *domain, const char *username,
			  uint32 luid_low,
			  const char *general,
			  NET_ID_INFO_CTR * ctr, NET_USER_INFO_3 * user_info3);
BOOL cli_nt_login_interactive(const char *srv_name, const char *myhostname,
			      const char *domain, const char *username,
			      uint32 luid_low,
			      const uchar * lm_owf_user_pwd,
			      const uchar * nt_owf_user_pwd,
			      NET_ID_INFO_CTR * ctr,
			      NET_USER_INFO_3 * user_info3);
BOOL cli_nt_login_network(const char *srv_name, const char *myhostname,
			  const char *domain, const char *username,
			  uint32 luid_low, const char lm_chal[8],
			  const char *lm_chal_resp,
			  int lm_chal_len,
			  const char *nt_chal_resp,
			  int nt_chal_len,
			  NET_ID_INFO_CTR * ctr, NET_USER_INFO_3 * user_info3);
BOOL cli_nt_logoff(const char *srv_name, const char *myhostname,
		   NET_ID_INFO_CTR * ctr);
BOOL net_sam_sync(const char *srv_name,
		  const char *domain,
		  const char *myhostname,
		  const char *trust_acct,
		  uchar trust_passwd[16],
		  SAM_DELTA_HDR hdr_deltas[MAX_SAM_DELTAS],
		  SAM_DELTA_CTR deltas[MAX_SAM_DELTAS], uint32 * num_deltas);

/*The following definitions come from  rpc_client/cli_lsarpc.c  */

BOOL get_domain_sids(const char *domain, DOM_SID * sid3, DOM_SID * sid5);
BOOL get_trust_sid_and_domain(const char *myname, char *server,
			      DOM_SID * sid, char *domain, size_t len);
BOOL lsa_open_policy(const char *system_name, POLICY_HND *hnd,
		     BOOL sec_qos, uint32 des_access);
BOOL lsa_open_policy2(const char *system_name, POLICY_HND *hnd,
		      BOOL sec_qos, uint32 des_access);
BOOL lsa_create_secret(const POLICY_HND *hnd,
		       const char *secret_name,
		       uint32 des_access, POLICY_HND *hnd_secret);
BOOL lsa_open_secret(const POLICY_HND *hnd,
		     const char *secret_name,
		     uint32 des_access, POLICY_HND *hnd_secret);
uint32 lsa_set_secret(POLICY_HND *hnd, const STRING2 * secret);
BOOL lsa_query_secret(POLICY_HND *hnd, STRING2 * secret, NTTIME * last_update);
BOOL lsa_lookup_names(POLICY_HND *hnd,
		      int num_names,
		      char **names,
		      DOM_SID ** sids, uint32 ** types, int *num_sids);
BOOL lsa_lookup_sids(POLICY_HND *hnd,
		     int num_sids,
		     DOM_SID ** sids,
		     char ***names, uint32 ** types, int *num_names);
BOOL lsa_query_sec_obj(const POLICY_HND *hnd, uint32 sec_info,
				SEC_DESC_BUF *sec_buf);
BOOL lsa_query_info_pol(POLICY_HND *hnd, uint16 info_class,
			fstring domain_name, DOM_SID * domain_sid);
BOOL lsa_enum_trust_dom(POLICY_HND *hnd, uint32 * enum_ctx,
			uint32 * num_doms, char ***names, DOM_SID *** sids);
BOOL lsa_close(POLICY_HND *hnd);

/*The following definitions come from  rpc_client/cli_netlogon.c  */

void gen_next_creds( struct ntdom_info *nt, DOM_CRED *new_clnt_cred);
BOOL cli_net_logon_ctrl2(const char* srv_name, uint32 status_level);
uint32 cli_net_auth2(const char *srv_name,
				const char *trust_acct, 
				const char *acct_name, 
				uint16 sec_chan, 
				uint32 *neg_flags, DOM_CHAL *srv_chal);
uint32 cli_net_req_chal( const char *srv_name, const char* myhostname,
				DOM_CHAL *clnt_chal, DOM_CHAL *srv_chal);
BOOL cli_net_srv_pwset(const char* srv_name,
				const char* myhostname,
				const char* trust_acct,
				const uint8 hashed_trust_pwd[16],
				uint16 sec_chan_type);
uint32 cli_net_sam_logon(const char* srv_name, const char* myhostname,
				NET_ID_INFO_CTR *ctr, 
				NET_USER_INFO_3 *user_info3);
BOOL cli_net_sam_logoff(const char* srv_name, const char* myhostname,
				NET_ID_INFO_CTR *ctr);
BOOL cli_net_sam_sync( const char* srv_name, const char* myhostname,
				uint32 database_id,
				uint32 *num_deltas,
				SAM_DELTA_HDR *hdr_deltas,
				SAM_DELTA_CTR *deltas);

/*The following definitions come from  rpc_client/cli_pipe.c  */

BOOL create_rpc_request(prs_struct * rhdr, uint16 vuid,
			uint8 op_num, uint8 flags, int data_len, int auth_len);
BOOL rpc_api_pipe_req(struct cli_connection *con, uint8 opnum,
		      prs_struct * data, prs_struct * rdata);
BOOL cli_send_and_rcv_pdu_trans(struct cli_connection *con,
				struct cli_state *cli, uint16 fnum,
				prs_struct * data, prs_struct * rdata,
				int max_send_pdu);
BOOL cli_send_and_rcv_pdu_rw(struct cli_connection *con,
			     struct cli_state *cli, uint16 fnum,
			     prs_struct * data, prs_struct * rdata,
			     int max_send_pdu);
BOOL cli_send_and_rcv_pdu(struct cli_connection *con,
			  struct cli_state *cli, uint16 fnum,
			  prs_struct * data, prs_struct * rdata,
			  int max_send_pdu);
BOOL cli_rcv_pdu(struct cli_connection *con,
		 struct cli_state *cli, uint16 fnum, prs_struct *rdata);
BOOL rpc_pipe_bind(struct cli_connection *con,
		   const char *pipe_name,
		   RPC_IFACE * abstract, RPC_IFACE * transfer);
void cli_nt_set_ntlmssp_flgs(struct cli_state *cli, uint32 ntlmssp_flgs);
BOOL cli_nt_session_open(struct cli_state *cli, const char *pipe_name,
			 uint16 * fnum);
void cli_nt_session_close(struct cli_state *cli, uint16 fnum);

/*The following definitions come from  rpc_client/cli_pipe_netsec.c  */


/*The following definitions come from  rpc_client/cli_pipe_noauth.c  */


/*The following definitions come from  rpc_client/cli_pipe_ntlmssp.c  */


/*The following definitions come from  rpc_client/cli_reg.c  */

BOOL reg_connect( const char* srv_name,
				const char *full_keyname,
				char *key_name,
				uint32 access_mask,
				POLICY_HND *reg_hnd);
BOOL reg_open_hkcr( struct cli_connection *con,
				uint16 unknown_0, uint32 level,
				POLICY_HND *hnd);
BOOL reg_open_hklm( struct cli_connection *con,
				uint16 unknown_0, uint32 level,
				POLICY_HND *hnd);
BOOL reg_open_hku( struct cli_connection *con, 
				uint16 unknown_0, uint32 level,
				POLICY_HND *hnd);
BOOL reg_flush_key( POLICY_HND *hnd);
BOOL reg_query_key( POLICY_HND *hnd,
				char *key_class, uint32 *class_len,
				uint32 *num_subkeys, uint32 *max_subkeylen,
				uint32 *max_subkeysize, uint32 *num_values,
				uint32 *max_valnamelen, uint32 *max_valbufsize,
				uint32 *sec_desc, NTTIME *mod_time);
BOOL reg_unknown_1a( POLICY_HND *hnd, uint32 *unk);
BOOL reg_query_info( POLICY_HND *hnd,
				const char* val_name,
				uint32 *type, BUFFER2 *buffer);
BOOL reg_set_key_sec( POLICY_HND *hnd,
				uint32 sec_info,
				uint32 sec_buf_size, SEC_DESC *sec_buf);
BOOL reg_get_key_sec( POLICY_HND *hnd,
				uint32 sec_info,
				uint32 *sec_buf_size, SEC_DESC_BUF *sec_buf);
BOOL reg_delete_val( POLICY_HND *hnd, char *val_name);
BOOL reg_delete_key( POLICY_HND *hnd, char *key_name);
BOOL reg_create_key( POLICY_HND *hnd,
				char *key_name, char *key_class,
				SEC_ACCESS *sam_access,
				POLICY_HND *key);
BOOL reg_enum_key( POLICY_HND *hnd,
				int key_index, char *key_name,
				uint32 *unk_1, uint32 *unk_2,
				time_t *mod_time);
BOOL reg_create_val( POLICY_HND *hnd,
				char *val_name, uint32 type, BUFFER3 *data);
BOOL reg_enum_val( POLICY_HND *hnd,
				int val_index, int max_valnamelen, int max_valbufsize,
				fstring val_name,
				uint32 *val_type, BUFFER2 *value);
BOOL reg_open_entry( POLICY_HND *hnd,
				char *key_name, uint32 unk_0,
				POLICY_HND *key_hnd);
BOOL reg_close( POLICY_HND *hnd);
BOOL reg_shutdown(const char *srv_name,
			const char *msg, uint32 timeout, uint16 flags);

/*The following definitions come from  rpc_client/cli_samr.c  */

BOOL samr_chgpasswd_user( struct cli_connection *con, 
		const char *srv_name, const char *user_name,
		const char nt_newpass[516], const uchar nt_oldhash[16],
		const char lm_newpass[516], const uchar lm_oldhash[16]);
BOOL samr_get_dom_pwinfo(struct cli_connection *con, const char *srv_name);
BOOL samr_query_dom_info(  POLICY_HND *domain_pol, uint16 switch_value,
				SAM_UNK_CTR *ctr);
uint32 samr_enum_domains(  POLICY_HND *pol,
				uint32 *start_idx, uint32 size,
				struct acct_info **sam,
				uint32 *num_sam_domains);
uint32 samr_enum_dom_groups(  POLICY_HND *pol,
				uint32 *start_idx, uint32 size,
				struct acct_info **sam,
				uint32 *num_sam_groups);
uint32 samr_enum_dom_aliases(  POLICY_HND *pol,
				uint32 *start_idx, uint32 size,
				struct acct_info **sam,
				uint32 *num_sam_aliases);
uint32 samr_enum_dom_users(  POLICY_HND *pol, uint32 *start_idx, 
				uint16 acb_mask, uint16 unk_1, uint32 size,
				struct acct_info **sam,
				uint32 *num_sam_users);
BOOL samr_connect(  const char *srv_name, uint32 access_mask,
				POLICY_HND *connect_pol);
BOOL samr_query_sec_obj(  const POLICY_HND *pol,
				uint32 type,
				SEC_DESC_BUF *buf);
BOOL samr_open_user(  const POLICY_HND *pol,
				uint32 unk_0, uint32 rid, 
				POLICY_HND *user_pol);
BOOL samr_open_alias(  const POLICY_HND *domain_pol,
				uint32 flags, uint32 rid,
				POLICY_HND *alias_pol);
BOOL samr_del_aliasmem(  POLICY_HND *alias_pol, DOM_SID *sid);
BOOL samr_add_aliasmem(  POLICY_HND *alias_pol, DOM_SID *sid);
BOOL samr_delete_dom_alias(  POLICY_HND *alias_pol);
uint32 samr_create_dom_user(  POLICY_HND *domain_pol, const char *acct_name,
				uint32 unk_0, uint32 unk_1,
				POLICY_HND *user_pol, uint32 *rid);
BOOL samr_create_dom_alias(  POLICY_HND *domain_pol, const char *acct_name,
				POLICY_HND *alias_pol, uint32 *rid);
BOOL samr_query_aliasinfo(  POLICY_HND *alias_pol, uint16 switch_value,
				ALIAS_INFO_CTR *ctr);
BOOL samr_set_aliasinfo(  POLICY_HND *alias_pol, ALIAS_INFO_CTR *ctr);
BOOL samr_open_group(  const POLICY_HND *domain_pol,
				uint32 flags, uint32 rid,
				POLICY_HND *group_pol);
BOOL samr_del_groupmem(  POLICY_HND *group_pol, uint32 rid);
BOOL samr_add_groupmem(  POLICY_HND *group_pol, uint32 rid);
BOOL samr_delete_dom_user(  POLICY_HND *user_pol);
BOOL samr_delete_dom_group(  POLICY_HND *group_pol);
BOOL samr_create_dom_group(  POLICY_HND *domain_pol, const char *acct_name,
				POLICY_HND *group_pol, uint32 *rid);
BOOL samr_set_groupinfo(  POLICY_HND *group_pol, GROUP_INFO_CTR *ctr);
BOOL samr_unknown_2d(  const POLICY_HND *domain_pol,
				const DOM_SID *sid);
BOOL samr_open_domain(  const POLICY_HND *connect_pol,
				uint32 ace_perms,
				const DOM_SID *sid,
				POLICY_HND *domain_pol);
BOOL samr_query_lookup_domain(  POLICY_HND *pol, const char *dom_name,
			      DOM_SID *dom_sid);
BOOL samr_query_lookup_names(const POLICY_HND *pol, uint32 flags,
			     uint32 num_names, char **names,
			     uint32 *num_rids, uint32 **rids, uint32 **types);
BOOL samr_query_lookup_rids(  const POLICY_HND *pol, uint32 flags,
				uint32 num_rids, const uint32 *rids,
				uint32 *num_names,
				char   ***names,
				uint32 **type);
BOOL samr_query_aliasmem(  const POLICY_HND *alias_pol, 
				uint32 *num_mem, DOM_SID2 *sid);
BOOL samr_query_useraliases(  const POLICY_HND *pol,
				uint32 *ptr_sid, DOM_SID2 *sid,
				uint32 *num_aliases, uint32 **rid);
BOOL samr_query_groupmem(  POLICY_HND *group_pol, 
				uint32 *num_mem, uint32 **rid, uint32 **attr);
BOOL samr_query_usergroups(  POLICY_HND *pol, uint32 *num_groups,
				DOM_GID **gid);
BOOL samr_query_groupinfo(  POLICY_HND *pol,
				uint16 switch_value, GROUP_INFO_CTR* ctr);
BOOL samr_set_userinfo2(  POLICY_HND *pol, uint16 switch_value,
				void* usr);
BOOL samr_set_userinfo(  POLICY_HND *pol, uint16 switch_value, void* usr);
BOOL samr_query_userinfo(  POLICY_HND *pol, uint16 switch_value,
				SAM_USERINFO_CTR *ctr);
BOOL samr_close(  POLICY_HND *hnd);
BOOL samr_query_dispinfo(  POLICY_HND *pol_domain, uint16 level,
				uint32 *num_entries,
				SAM_DISPINFO_CTR *ctr);

/*The following definitions come from  rpc_client/cli_spoolss.c  */

uint32 spoolss_enum_printers(uint32 flags, fstring srv_name, uint32 level,
			     NEW_BUFFER *buffer, uint32 offered,
			     uint32 *needed, uint32 *returned);
uint32 spoolss_enum_jobs(const POLICY_HND *hnd, uint32 firstjob, uint32 numofjobs,
			 uint32 level, NEW_BUFFER *buffer, uint32 offered, 
			 uint32 *needed, uint32 *returned);
uint32 spoolss_enum_printerdata(const POLICY_HND *hnd, uint32 idx, 
			uint32 *valuelen, uint16 *value, uint32 *rvaluelen, 
			uint32 *type, 
			uint32 *datalen, uint8 *data, uint32 *rdatalen);
BOOL spoolss_open_printer_ex(  char *printername,
			 char *datatype, uint32 access_required,
			 char *station,  char *username,
			POLICY_HND *hnd);
BOOL spoolss_closeprinter(POLICY_HND *hnd);

/*The following definitions come from  rpc_client/cli_srvsvc.c  */

BOOL srv_net_srv_tprt_enum(
			const char *srv_name, 
			uint32 switch_value, SRV_TPRT_INFO_CTR *ctr,
			uint32 preferred_len,
			ENUM_HND *hnd);
BOOL srv_net_srv_conn_enum( char *srv_name, char *qual_name,
			uint32 switch_value, SRV_CONN_INFO_CTR *ctr,
			uint32 preferred_len,
			ENUM_HND *hnd);
BOOL srv_net_srv_sess_enum( char *srv_name, char *qual_name, char *user_name,
			uint32 switch_value, SRV_SESS_INFO_CTR *ctr,
			uint32 preferred_len,
			ENUM_HND *hnd);
BOOL srv_net_srv_share_enum( char *srv_name, 
			uint32 switch_value, SRV_SHARE_INFO_CTR *ctr,
			uint32 preferred_len,
			ENUM_HND *hnd);
BOOL srv_net_srv_share_get_info(const char *srv_name,
				const char *share_name,
				uint32 info_level);
BOOL srv_net_srv_file_enum( char *srv_name, char *qual_name, uint32 file_id,
			uint32 switch_value, SRV_FILE_INFO_CTR *ctr,
			uint32 preferred_len,
			ENUM_HND *hnd);
BOOL srv_net_srv_get_info( char *srv_name, uint32 switch_value,
				SRV_INFO_CTR *ctr);
BOOL srv_net_remote_tod( char *srv_name, TIME_OF_DAY_INFO *tod);

/*The following definitions come from  rpc_client/cli_svcctl.c  */

BOOL svc_open_sc_man( const char *srv_name, char *db_name,
				uint32 des_access,
				POLICY_HND *hnd);
BOOL svc_open_service( POLICY_HND *scm_hnd,
				const char *srv_name,
				uint32 des_access,
				POLICY_HND *hnd);
BOOL svc_enum_svcs( POLICY_HND *hnd,
				uint32 services_type, uint32 services_state,
				uint32 *buf_size, uint32 *resume_hnd,
				uint32 *dos_error,
				ENUM_SRVC_STATUS **svcs, uint32 *num_svcs);
BOOL svc_stop_service( POLICY_HND *hnd,
				uint32 unknown);
BOOL svc_start_service( POLICY_HND *hnd,
				uint32 argc,
				char **argv);
BOOL svc_query_svc_cfg( POLICY_HND *hnd,
				QUERY_SERVICE_CONFIG *cfg,
				uint32 *buf_size);
BOOL svc_close(POLICY_HND *hnd);
BOOL svc_change_svc_cfg( POLICY_HND *hnd,
				uint32 service_type, uint32 start_type,
				uint32 unknown_0,
				uint32 error_control,
				char* bin_path_name, char* load_order_grp, 
				uint32 tag_id,
				char* dependencies, char* service_start_name,
				char* password,
				char* disp_name);

/*The following definitions come from  rpc_client/cli_use.c  */

void init_cli_use(void);
void free_cli_use(void);
struct cli_state *cli_net_use_add(const char *srv_name,
				  const struct ntuser_creds *usr_creds,
				  BOOL redir, BOOL reuse, BOOL *is_new);
BOOL cli_net_use_del(const char *srv_name,
		     const struct ntuser_creds *usr_creds,
		     BOOL force_close, BOOL *connection_closed);
void cli_net_use_enum(uint32 * num_cons, struct use_info ***use);
void cli_use_wait_keyboard(void);

/*The following definitions come from  rpc_client/cli_wkssvc.c  */

BOOL wks_query_info( char *srv_name, uint32 switch_value,
			WKS_INFO_100 *wks100);

/*The following definitions come from  rpc_client/msrpc_lsarpc.c  */

uint32 lookup_lsa_names(const char *srv_name,
			uint32 num_names, char **names,
			uint32 * num_sids, DOM_SID ** sids, uint32 ** types);
uint32 lookup_lsa_name(const char *domain,
		       char *name, DOM_SID * sid, uint32 * type);
uint32 lookup_lsa_sid(const char *domain,
		      DOM_SID * sid, char *name, uint32 * type);
BOOL msrpc_lsa_create_secret(const char *srv_name, const char *secret_name,
			     uint32 access_rights);
void secret_store_data(STRING2 * secret, const char* data, int len);
void secret_store_data2(STRING2 * secret, const char* data, int len);
BOOL msrpc_lsa_set_secret(const char *srv_name,
			  const char *secret_name, const char *data, int len);
BOOL msrpc_lsa_query_secret(const char *srv_name,
			    const char *secret_name,
			    STRING2 * secret, NTTIME * last_update);
BOOL secret_get_data(const STRING2 *secret, uchar *data, uint32 *len);
BOOL msrpc_lsa_query_trust_passwd(const char *srv_name,
				  const char *secret_name,
				  uchar trust_passwd[16],
				  NTTIME * last_update);

/*The following definitions come from  rpc_client/msrpc_netlogon.c  */

BOOL modify_trust_password(const char *domain, const char *srv_name,
			   const uchar orig_trust_passwd_hash[16],
			   const uchar new_trust_passwd_hash[16],
			   uint16 sec_chan);
uint32 check_domain_security(const char *orig_user, const char *domain,
			     const uchar * challenge,
			     const char *smb_apasswd, int smb_apasslen,
			     const char *smb_ntpasswd, int smb_ntpasslen,
			     NET_USER_INFO_3 * info3);

/*The following definitions come from  rpc_client/msrpc_samr.c  */

uint32 lookup_sam_domainname(const char *srv_name,
			     const char *domain, DOM_SID *sid);
uint32 lookup_sam_names(const char *domain, const DOM_SID *sid,
			uint32 num_names, char **names,
			uint32 *num_rids, uint32 **rids, uint32 **types);
uint32 lookup_sam_name(const char *domain, DOM_SID *sid,
				char *name, uint32 *rid, uint32 *type);
uint32 lookup_sam_rid(const char *domain, DOM_SID *sid,
				uint32 rid, char *name, uint32 *type);
BOOL req_user_info( const POLICY_HND *pol_dom,
				const char *domain,
				const DOM_SID *sid,
				uint32 user_rid, uint16 info_level,
				USER_INFO_FN(usr_inf));
uint32 sam_query_usergroups( const POLICY_HND *pol_dom,
				const char *domain,
				const DOM_SID *sid,
				uint32 user_rid,
				const char *user_name,
				uint32 *num_groups,
				DOM_GID **gid,
				char    ***name,
				uint32  **type,
				USER_MEM_FN(usr_mem));
void msrpc_sam_user( const POLICY_HND *pol_dom, const POLICY_HND *pol_blt,
			const char* domain,
			const DOM_SID *sid1,
			const DOM_SID *blt_sid1,
			uint32 user_rid, uint16 info_level,
			char  *user_name,
			USER_FN(usr_fn),
			USER_INFO_FN(usr_inf_fn),
			USER_MEM_FN(usr_grp_fn),
			USER_MEM_FN(usr_als_fn));
BOOL msrpc_sam_query_user( const char* srv_name,
			const char* domain,
			const DOM_SID *sid,
			char  *user_name,
			USER_FN(usr_fn),
			USER_INFO_FN(usr_inf_fn),
			USER_MEM_FN(usr_grp_fn),
			USER_MEM_FN(usr_als_fn));
int msrpc_sam_enum_users( const char* srv_name,
			const char* domain,
			const DOM_SID *sid1,
			struct acct_info **sam,
			uint32 *num_sam_entries,
			USER_FN(usr_fn),
			USER_INFO_FN(usr_inf_fn),
			USER_MEM_FN(usr_grp_fn),
			USER_MEM_FN(usr_als_fn));
BOOL sam_query_dominfo(const char* srv_name,
				const DOM_SID *sid1,
				uint32 switch_value, SAM_UNK_CTR *ctr);
BOOL query_aliasinfo( const POLICY_HND *pol_dom,
				const char *domain,
				const DOM_SID *sid,
				uint32 alias_rid,
				ALIAS_INFO_FN(grp_inf));
BOOL sam_query_aliasmem(const char *srv_name,
				const POLICY_HND *pol_dom,
				uint32 alias_rid,
				uint32 *num_names,
				DOM_SID ***sids,
				char ***name,
				uint32 **type);
BOOL req_aliasmem_info(const char* srv_name,
				const POLICY_HND *pol_dom,
				const char *domain,
				const DOM_SID *sid,
				uint32 alias_rid,
				const char *alias_name,
				ALIAS_MEM_FN(als_mem));
BOOL sam_query_groupmem( const POLICY_HND *pol_dom,
				uint32 group_rid,
				uint32 *num_names,
				uint32 **rid_mem,
				char ***name,
				uint32 **type);
BOOL query_groupinfo( const POLICY_HND *pol_dom,
				const char *domain,
				const DOM_SID *sid,
				uint32 group_rid,
				GROUP_INFO_FN(grp_inf));
BOOL req_groupmem_info( const POLICY_HND *pol_dom,
				const char *domain,
				const DOM_SID *sid,
				uint32 group_rid,
				const char *group_name,
				GROUP_MEM_FN(grp_mem));
uint32 msrpc_sam_get_first_domain( const char* srv_name,
				char *dom_name,
				DOM_SID *dom_sid);
uint32 msrpc_sam_enum_domains( const char* srv_name,
				struct acct_info **sam,
				uint32 *num_sam_entries,
				DOMAIN_FN(dom_fn),
				DOMAIN_INFO_FN(dom_inf_fn));
uint32 msrpc_sam_enum_groups( const char* srv_name,
				const char* domain,
				const DOM_SID *sid1,
				struct acct_info **sam,
				uint32 *num_sam_entries,
				GROUP_FN(grp_fn),
				GROUP_INFO_FN(grp_inf_fn),
				GROUP_MEM_FN(grp_mem_fn));
uint32 msrpc_sam_enum_aliases( const char* srv_name,
				const char* domain,
				const DOM_SID *sid1,
				struct acct_info **sam,
				uint32 *num_sam_entries,
				ALIAS_FN(als_fn),
				ALIAS_INFO_FN(als_inf_fn),
				ALIAS_MEM_FN(als_mem_fn));
BOOL create_samr_domain_user( POLICY_HND *pol_dom,
				char *acct_name, uint16 acb_info,
				const char* password, int plen,
				uint32 *rid);
BOOL create_samr_domain_alias( POLICY_HND *pol_open_domain,
				const char *acct_name, const char *acct_desc,
				uint32 *rid);
BOOL create_samr_domain_group( POLICY_HND *pol_open_domain,
				const char *acct_name, const char *acct_desc,
				uint32 *rid);
BOOL get_samr_query_usergroups( const POLICY_HND *pol_open_domain,
				uint32 user_rid,
				uint32 *num_groups, DOM_GID **gid);
BOOL delete_samr_dom_group( POLICY_HND *pol_open_domain,
				uint32 group_rid);
BOOL get_samr_query_groupmem( 
				const POLICY_HND *pol_open_domain,
				uint32 group_rid, uint32 *num_mem,
				uint32 **rid, uint32 **attr);
BOOL delete_samr_dom_alias( 
				POLICY_HND *pol_open_domain,
				uint32 alias_rid);
BOOL get_samr_query_aliasmem( 
				const POLICY_HND *pol_open_domain,
				uint32 alias_rid, uint32 *num_mem, DOM_SID2 *sid);
BOOL set_samr_set_userinfo2( 
				POLICY_HND *pol_open_domain,
				uint32 info_level,
				uint32 user_rid, void *usr);
BOOL set_samr_set_userinfo( const POLICY_HND *pol_open_domain,
				uint32 info_level,
				uint32 user_rid, void *usr);
BOOL get_samr_query_userinfo( const POLICY_HND *pol_open_domain,
				uint32 info_level,
				uint32 user_rid, SAM_USERINFO_CTR *ctr);
BOOL get_samr_query_groupinfo( 
				const POLICY_HND *pol_open_domain,
				uint32 info_level,
				uint32 group_rid, GROUP_INFO_CTR *ctr);
BOOL get_samr_query_aliasinfo( 
				const POLICY_HND *pol_open_domain,
				uint32 info_level,
				uint32 alias_rid, ALIAS_INFO_CTR *ctr);
BOOL msrpc_sam_create_dom_user(const char* srv_name, DOM_SID *sid1,
				char *acct_name, uint16 acb_info,
				const char *password, int plen,
				uint32 *rid);
BOOL msrpc_sam_query_dispinfo(const char* srv_name, const char* domain,
				DOM_SID *sid1,
				uint16 switch_value,
				uint32 *num_entries, SAM_DISPINFO_CTR *ctr,
				DISP_FN(disp_fn));
BOOL msrpc_sam_ntchange_pwd(const char* srv_name,
				const char* domain,
				const char *ntuser, 
				const uchar lm_oldhash[16],
				const uchar nt_oldhash[16],
				const char* new_passwd);
BOOL msrpc_sam_ntpasswd_set(const char* srv_name, const char *user, 
				struct ntuser_creds *samr_creds,
				const uchar lm_newpass[516],
				const uchar lm_hshhash[16],
				const uchar nt_newpass[516],
				const uchar nt_hshhash[16]);
BOOL msrpc_sam_query_userinfo(const char* srv_name, const DOM_SID *sid,
				const char *user_name, uint16 info_level,
				SAM_USERINFO_CTR *ctr);

/*The following definitions come from  rpc_client/ncacn_np_use.c  */

BOOL ncacn_np_establish_connection(struct ncacn_np *cli,
				   const char *srv_name,
				   const struct ntuser_creds *ntc,
				   const char *pipe_name, BOOL redir,
				   BOOL reuse);
void init_ncacn_np_use(void);
void free_ncacn_np_use(void);
struct ncacn_np *ncacn_np_initialise(struct ncacn_np *msrpc,
				     const vuser_key * key);
struct ncacn_np *ncacn_np_use_add(const char *pipe_name,
				  const vuser_key * key,
				  const char *srv_name,
				  const struct ntuser_creds *ntc,
				  BOOL redir,
				  BOOL reuse, BOOL *is_new_connection);
BOOL ncacn_np_use_del(const char *pipe_name,
		      const vuser_key * key,
		      BOOL force_close, BOOL *connection_closed);
void ncacn_np_use_enum(uint32 * num_cons, struct use_info ***use);

/*The following definitions come from  rpc_client/ncalrpc_l_use.c  */

void init_ncalrpc_use(void);
void free_ncalrpc_use(void);
struct msrpc_local *ncalrpc_l_use_add(const char *pipe_name,
				      const vuser_key * key,
				      BOOL redir, BOOL reuse, BOOL *is_new);
BOOL ncalrpc_l_use_del(const char *pipe_name,
		       const vuser_key * key,
		       BOOL force_close, BOOL *connection_closed);
void ncalrpc_l_use_enum(uint32 * num_cons, struct use_info ***use);
void ncalrpc_use_wait_keyboard(void);
#endif /* _RPC_CLIENT_PROTO_H_ */