summaryrefslogtreecommitdiff
path: root/source/include/rpc_parse_proto.h
blob: ab36786297b0dff1153aa43229816fd0e14c375a (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
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
#ifndef _RPC_PARSE_PROTO_H_
#define _RPC_PARSE_PROTO_H_
/* This file is automatically generated with "make proto". DO NOT EDIT */


/*The following definitions come from  lib/msrpc-client.c  */

BOOL receive_msrpc(int fd, prs_struct * data, unsigned int timeout);
BOOL msrpc_send(int fd, prs_struct * ps);
BOOL msrpc_receive(int fd, prs_struct * ps);
BOOL ncalrpc_l_connect(struct msrpc_local *msrpc, const char *pipe_name);
void ncalrpc_l_close_socket(struct msrpc_local *msrpc);
void ncalrpc_l_sockopt(struct msrpc_local *msrpc, char *options);
BOOL ncalrpc_l_connect_auth(struct msrpc_local *msrpc,
			    const vuser_key * key, const char *pipename);
struct msrpc_local *ncalrpc_l_initialise(struct msrpc_local *msrpc,
					 const vuser_key * key);
void ncalrpc_l_shutdown(struct msrpc_local *msrpc);
BOOL ncalrpc_l_establish_connection(struct msrpc_local *msrpc,
				    const char *pipe_name);

/*The following definitions come from  rpc_parse/parse_at.c  */

BOOL make_at_q_add_job(AT_Q_ADD_JOB *q_a, char *server,
			AT_JOB_INFO *info, char *command);
BOOL at_io_job_info(char *desc, AT_JOB_INFO *info, prs_struct *ps, int depth);
BOOL at_io_q_add_job(char *desc, AT_Q_ADD_JOB *q_a, prs_struct *ps, int depth);
BOOL at_io_r_add_job(char *desc, AT_R_ADD_JOB *r_a, prs_struct *ps, int depth);
BOOL make_at_q_del_job(AT_Q_DEL_JOB *q_a, char *server, uint32 min_jobid,
		       uint32 max_jobid);
BOOL at_io_q_del_job(char *desc, AT_Q_DEL_JOB *q_d, prs_struct *ps, int depth);
BOOL at_io_r_del_job(char *desc, AT_R_DEL_JOB *r_d, prs_struct *ps, int depth);
BOOL make_at_q_enum_jobs(AT_Q_ENUM_JOBS *q_e, char *server);
BOOL at_io_q_enum_jobs(char *desc, AT_Q_ENUM_JOBS *q_e, prs_struct *ps, int depth);
BOOL at_io_r_enum_jobs(char *desc, AT_R_ENUM_JOBS *r_e, prs_struct *ps, int depth);
BOOL make_at_q_query_job(AT_Q_QUERY_JOB *q_q, char *server, uint32 jobid);
BOOL at_io_q_query_job(char *desc, AT_Q_QUERY_JOB *q_q, prs_struct *ps, int depth);
BOOL at_io_r_query_job(char *desc, AT_R_QUERY_JOB *r_q, prs_struct *ps, int depth);

/*The following definitions come from  rpc_parse/parse_brs.c  */

BOOL make_brs_q_query_info(BRS_Q_QUERY_INFO *q_u,
				const char *server, uint16 switch_value)  ;
BOOL brs_io_q_query_info(char *desc, BRS_Q_QUERY_INFO *q_u, prs_struct *ps, int depth);
BOOL make_brs_info_100(BRS_INFO_100 *inf);
BOOL make_brs_r_query_info(BRS_R_QUERY_INFO *r_u,
				uint32 switch_value, void *inf,
				int status)  ;
BOOL brs_io_r_query_info(char *desc,  BRS_R_QUERY_INFO *r_u, prs_struct *ps, int depth);

/*The following definitions come from  rpc_parse/parse_dfs.c  */

BOOL dfs_io_r_dfs_exist(char *desc, DFS_R_DFS_EXIST *q_d, prs_struct *ps,
			int depth);
BOOL make_dfs_q_dfs_remove(DFS_Q_DFS_REMOVE *q_d, char *entrypath, 
			   char *servername, char *sharename);
BOOL dfs_io_q_dfs_remove(char *desc, DFS_Q_DFS_REMOVE *q_d, prs_struct *ps,
			 int depth);
BOOL dfs_io_r_dfs_remove(char *desc, DFS_R_DFS_REMOVE *r_d, prs_struct *ps,
		      int depth);
BOOL make_dfs_q_dfs_add(DFS_Q_DFS_ADD *q_d, char *entrypath, char *servername,
			char *sharename, char *comment, uint32 flags);
BOOL dfs_io_q_dfs_add(char *desc, DFS_Q_DFS_ADD *q_d, prs_struct *ps,
		      int depth);
BOOL dfs_io_r_dfs_add(char *desc, DFS_R_DFS_ADD *r_d, prs_struct *ps,
		      int depth);
BOOL make_dfs_q_dfs_enum(DFS_Q_DFS_ENUM *q_d, uint32 level, DFS_INFO_CTR *ctr);
BOOL dfs_io_q_dfs_enum(char *desc, DFS_Q_DFS_ENUM *q_d, prs_struct *ps,
		      int depth);
BOOL dfs_io_r_dfs_enum(char *desc, DFS_R_DFS_ENUM *q_d, prs_struct *ps, int depth);
BOOL smb_io_dfs_storage_info(char *desc, DFS_INFO_3* info3,
			     prs_struct *ps, int depth);

/*The following definitions come from  rpc_parse/parse_eventlog.c  */

BOOL make_eventlog_q_open(EVENTLOG_Q_OPEN *q_u, const char *journal, char *unk);
BOOL eventlog_io_q_open(char *desc, EVENTLOG_Q_OPEN *q_u, prs_struct *ps, int depth);
BOOL eventlog_io_r_open(char *desc, EVENTLOG_R_OPEN *r_u, prs_struct *ps, int depth);
BOOL make_eventlog_q_close(EVENTLOG_Q_CLOSE *q_u, POLICY_HND *pol);
BOOL eventlog_io_q_close(char *desc, EVENTLOG_Q_CLOSE *q_u, prs_struct *ps, int depth);
BOOL eventlog_io_r_close(char *desc, EVENTLOG_R_CLOSE *r_u, prs_struct *ps, int depth);
BOOL make_eventlog_q_numofeventlogrec(EVENTLOG_Q_NUMOFEVENTLOGREC *q_u, POLICY_HND *pol);
BOOL eventlog_io_q_numofeventlogrec(char *desc,EVENTLOG_Q_NUMOFEVENTLOGREC  *q_u, prs_struct *ps, int depth);
BOOL eventlog_io_r_numofeventlogrec(char *desc, EVENTLOG_R_NUMOFEVENTLOGREC *r_u, prs_struct *ps, int depth);
BOOL make_eventlog_q_readeventlog(EVENTLOG_Q_READEVENTLOG *q_u, POLICY_HND *pol,
                                  uint32 flags, uint32 offset, uint32 number_of_bytes);
BOOL eventlog_io_q_readeventlog(char *desc, EVENTLOG_Q_READEVENTLOG *q_u, prs_struct *ps, int depth);
BOOL eventlog_io_r_readeventlog(char *desc, EVENTLOG_R_READEVENTLOG *r_u, prs_struct *ps, int depth);

/*The following definitions come from  rpc_parse/parse_lsa.c  */

BOOL make_lsa_trans_name(LSA_TRANS_NAME * trn, UNISTR2 * uni_name,
			 uint16 sid_name_use, char *name, uint32 idx);
int make_dom_ref_uni(DOM_R_REF * ref, const UNISTR2 * uni_domname,
		     const DOM_SID * dom_sid);
int make_dom_ref(DOM_R_REF * ref, const char *domname, const DOM_SID *dom_sid);
BOOL make_lsa_sec_qos(LSA_SEC_QOS * qos, uint16 imp_lev, uint8 ctxt,
		      uint8 eff, uint32 unknown);
BOOL make_lsa_obj_attr(LSA_OBJ_ATTR * attr, uint32 attributes,
		       LSA_SEC_QOS * qos);
BOOL make_q_open_pol(LSA_Q_OPEN_POL * r_q, uint16 system_name,
		     uint32 attributes,
		     uint32 desired_access, LSA_SEC_QOS * qos);
BOOL lsa_io_q_open_pol(char *desc, LSA_Q_OPEN_POL * r_q, prs_struct * ps,
		       int depth);
BOOL lsa_io_r_open_pol(char *desc, LSA_R_OPEN_POL * r_p, prs_struct * ps,
		       int depth);
BOOL make_q_open_pol2(LSA_Q_OPEN_POL2 * r_q, const char *server_name,
		      uint32 attributes,
		      uint32 desired_access, LSA_SEC_QOS * qos);
BOOL lsa_io_q_open_pol2(char *desc, LSA_Q_OPEN_POL2 * r_q, prs_struct * ps,
			int depth);
BOOL lsa_io_r_open_pol2(char *desc, LSA_R_OPEN_POL2 * r_p, prs_struct * ps,
			int depth);
BOOL make_q_query_sec_obj(LSA_Q_QUERY_SEC_OBJ * q_q, const POLICY_HND *hnd,
				uint32 sec_info);
BOOL lsa_io_q_query_sec_obj(char *desc, LSA_Q_QUERY_SEC_OBJ * q_q,
			    prs_struct *ps, int depth);
BOOL lsa_io_r_query_sec_obj(char *desc, LSA_R_QUERY_SEC_OBJ *r_u,
			    prs_struct *ps, int depth);
BOOL make_q_query(LSA_Q_QUERY_INFO * q_q, POLICY_HND *hnd, uint16 info_class);
BOOL lsa_io_q_query(char *desc, LSA_Q_QUERY_INFO * q_q, prs_struct * ps,
		    int depth);
BOOL make_q_create_secret(LSA_Q_CREATE_SECRET * q_o,
			  const POLICY_HND *pol_hnd, const char *secret_name,
			  uint32 desired_access);
BOOL lsa_io_q_create_secret(char *desc, LSA_Q_CREATE_SECRET * q_o,
			    prs_struct * ps, int depth);
BOOL lsa_io_r_create_secret(char *desc, LSA_R_CREATE_SECRET * r_o,
			    prs_struct * ps, int depth);
BOOL make_q_open_secret(LSA_Q_OPEN_SECRET * q_o, const POLICY_HND *pol_hnd,
			const char *secret_name, uint32 desired_access);
BOOL lsa_io_q_open_secret(char *desc, LSA_Q_OPEN_SECRET * q_o,
			  prs_struct * ps, int depth);
BOOL lsa_io_r_open_secret(char *desc, LSA_R_OPEN_SECRET * r_o,
			  prs_struct * ps, int depth);
BOOL lsa_io_secret_value(char *desc, LSA_SECRET_VALUE * value,
			 prs_struct * ps, int depth);
BOOL lsa_io_secret_info(char *desc, LSA_SECRET_INFO * info, prs_struct * ps,
			int depth);
BOOL lsa_io_secret(char *desc, LSA_SECRET * q_q, prs_struct * ps, int depth);
BOOL make_q_query_secret(LSA_Q_QUERY_SECRET * q_q, POLICY_HND *pol,
			 const STRING2 *secret, const NTTIME * update);
BOOL lsa_io_q_query_secret(char *desc, LSA_Q_QUERY_SECRET * q_q,
			   prs_struct * ps, int depth);
BOOL lsa_io_r_query_secret(char *desc, LSA_R_QUERY_SECRET * r_q,
			   prs_struct * ps, int depth);
BOOL lsa_io_q_set_secret(char *desc, LSA_Q_SET_SECRET * q_q, prs_struct * ps,
			 int depth);
BOOL lsa_io_r_set_secret(char *desc, LSA_R_SET_SECRET * r_q, prs_struct * ps,
			 int depth);
BOOL make_q_enum_trust_dom(LSA_Q_ENUM_TRUST_DOM * q_e,
			   POLICY_HND *pol,
			   uint32 enum_context, uint32 preferred_len);
BOOL lsa_io_q_enum_trust_dom(char *desc, LSA_Q_ENUM_TRUST_DOM * q_e,
			     prs_struct * ps, int depth);
BOOL make_r_enum_trust_dom(LSA_R_ENUM_TRUST_DOM * r_e, int32 enum_context,
			   uint32 num_domains,
			   UNISTR2 * domain_names, DOM_SID ** domain_sids,
			   uint32 status);
BOOL lsa_io_r_enum_trust_dom(char *desc, LSA_R_ENUM_TRUST_DOM * r_e,
			     prs_struct * ps, int depth);
void lsa_free_r_enum_trust_dom(LSA_R_ENUM_TRUST_DOM * r_e);
BOOL lsa_io_r_query(char *desc, LSA_R_QUERY_INFO * r_q, prs_struct * ps,
		    int depth);
BOOL make_lsa_sid_enum(LSA_SID_ENUM * sen, uint32 num_entries, DOM_SID **sids);
BOOL make_q_lookup_sids(LSA_Q_LOOKUP_SIDS * q_l, POLICY_HND *hnd,
			int num_sids, DOM_SID ** sids, uint16 level);
BOOL lsa_io_q_lookup_sids(char *desc, LSA_Q_LOOKUP_SIDS * q_s,
			  prs_struct * ps, int depth);
BOOL lsa_io_r_lookup_sids(char *desc, LSA_R_LOOKUP_SIDS * r_s,
			  prs_struct * ps, int depth);
BOOL make_q_lookup_names(LSA_Q_LOOKUP_NAMES * q_l, POLICY_HND *hnd,
			 uint32 num_names, char **names);
BOOL lsa_io_q_lookup_names(char *desc, LSA_Q_LOOKUP_NAMES * q_r,
			   prs_struct * ps, int depth);
BOOL lsa_io_r_lookup_names(char *desc, LSA_R_LOOKUP_NAMES * r_r,
			   prs_struct * ps, int depth);
BOOL make_lsa_q_close(LSA_Q_CLOSE * q_c, POLICY_HND *hnd);
BOOL lsa_io_q_close(char *desc, LSA_Q_CLOSE * q_c, prs_struct * ps, int depth);
BOOL lsa_io_r_close(char *desc, LSA_R_CLOSE * r_c, prs_struct * ps, int depth);
BOOL make_dom_rid2(DOM_RID2 *rid2, uint32 rid, uint16 type, uint32 idx);
BOOL smb_io_dom_rid2(char *desc,  DOM_RID2 *rid2, prs_struct *ps, int depth);
BOOL lsa_io_dom_query_3(char *desc,  DOM_QUERY_3 *d_q, prs_struct *ps, int depth);
BOOL lsa_io_dom_query_5(char *desc,  DOM_QUERY_3 *d_q, prs_struct *ps, int depth);

/*The following definitions come from  rpc_parse/parse_misc.c  */

BOOL smb_io_bigint(char *desc, BIGINT *bigint, prs_struct *ps, int depth);
BOOL smb_io_time(char *desc,  NTTIME *nttime, prs_struct *ps, int depth);
BOOL smb_io_lookup_level(char *desc, LOOKUP_LEVEL *level, prs_struct *ps, int depth);
uint32 get_enum_hnd(ENUM_HND *enh);
BOOL make_enum_hnd(ENUM_HND *enh, uint32 hnd);
BOOL smb_io_enum_hnd(char *desc,  ENUM_HND *hnd, prs_struct *ps, int depth);
BOOL smb_io_dom_sid(char *desc,  DOM_SID *sid, prs_struct *ps, int depth);
BOOL make_dom_sid2(DOM_SID2 *sid2, const DOM_SID *sid);
BOOL smb_io_dom_sid2(char *desc,  DOM_SID2 *sid, prs_struct *ps, int depth);
BOOL make_str_hdr(STRHDR *hdr, int max_len, int len, uint32 buffer);
BOOL smb_io_strhdr(char *desc,  STRHDR *hdr, prs_struct *ps, int depth);
BOOL make_strhdr2(STRHDR2 *hdr, uint32 max_len, uint32 len, uint32 buffer);
BOOL smb_io_strhdr2(char *desc, STRHDR2 *hdr, prs_struct *ps, int depth);
BOOL make_uni_hdr(UNIHDR *hdr, int len);
BOOL make_unihdr_from_unistr2(UNIHDR *hdr, const UNISTR2 *str);
BOOL smb_io_unihdr(char *desc,  UNIHDR *hdr, prs_struct *ps, int depth);
BOOL make_buf_hdr(BUFHDR *hdr, int max_len, int len);
BOOL smb_io_hdrbuf_pre(char *desc,  BUFHDR *hdr, prs_struct *ps, int depth, uint32 *offset);
BOOL smb_io_hdrbuf_post(char *desc,  BUFHDR *hdr, prs_struct *ps, int depth, 
				uint32 ptr_hdrbuf, uint32 max_len, uint32 len);
BOOL smb_io_hdrbuf(char *desc,  BUFHDR *hdr, prs_struct *ps, int depth);
BOOL make_bufhdr2(BUFHDR2 *hdr, uint32 info_level, uint32 length, uint32 buffer);
BOOL smb_io_bufhdr2(char *desc, BUFHDR2 *hdr, prs_struct *ps, int depth);
BOOL make_uni_hdr2(UNIHDR2 *hdr, int len);
BOOL make_unihdr2_from_unistr2(UNIHDR2 *hdr, const UNISTR2 *str);
BOOL smb_io_unihdr2(char *desc,  UNIHDR2 *hdr2, prs_struct *ps, int depth);
BOOL make_unistr(UNISTR *str, char *buf);
BOOL smb_io_unistr(char *desc,  UNISTR *uni, prs_struct *ps, int depth);
BOOL make_buffer3_uint32(BUFFER3 *str, uint32 val);
BOOL make_buffer3_str(BUFFER3 *str, const char *buf, int len);
BOOL make_buffer3_hex(BUFFER3 *str, char *buf);
BOOL make_buffer3_bytes(BUFFER3 *str, uint8 *buf, int len);
BOOL smb_io_buffer3(char *desc,  BUFFER3 *buf3, prs_struct *ps, int depth);
BOOL make_buffer4_str(BUFFER4 *str, const char *buf, int len);
BOOL smb_io_buffer4(char *desc, BUFFER4 *buf4, uint32 buffer, prs_struct *ps, int depth);
BOOL init_buffer5(BUFFER5 **str);
BOOL clear_buffer5(BUFFER5 **str);
BOOL make_buffer5(BUFFER5 *str, char *buf, int len);
BOOL smb_io_buffer5(char *desc, BUFFER5 *buf5, prs_struct *ps, int depth);
BOOL make_buffer2_multi(BUFFER2 *str, char *const* const buf, uint32 num);
BOOL make_buffer2(BUFFER2 *str, const char *buf, int len);
BOOL smb_io_buffer2(char *desc,  BUFFER2 *buf2, uint32 buffer, prs_struct *ps, int depth);
BOOL make_buf_unistr2(UNISTR2 *str, uint32 *ptr, const char *buf);
BOOL make_string2(STRING2 *str, const char *buf, int len);
BOOL make_buf_string2(STRING2 *str, uint32 *ptr, const char *buf);
BOOL smb_io_string2(char *desc,  STRING2 *str2, uint32 buffer, prs_struct *ps, int depth);
BOOL make_unistr2(UNISTR2 *str, const char *buf, int len);
BOOL smb_io_unistr2(char *desc,  UNISTR2 *uni2, uint32 buffer, prs_struct *ps, int depth);
BOOL smb_io_chal(char *desc,  DOM_CHAL *chal, prs_struct *ps, int depth);
BOOL smb_io_cred(char *desc,  DOM_CRED *cred, prs_struct *ps, int depth);
BOOL smb_io_gid(char *desc,  DOM_GID *gid, prs_struct *ps, int depth);
BOOL smb_io_pol_hnd(char *desc,  POLICY_HND *pol, prs_struct *ps, int depth);
BOOL smb_io_unistr3(char *desc,  UNISTR3 *name, prs_struct *ps, int depth);

/*The following definitions come from  rpc_parse/parse_netsec.c  */

BOOL rpc_hdr_netsec_auth_chk(RPC_HDR_AUTH * rai);
BOOL make_rpc_auth_netsec_neg(RPC_AUTH_NETSEC_NEG * neg,
			      fstring domain, fstring myname);
BOOL smb_io_rpc_auth_netsec_neg(char *desc, RPC_AUTH_NETSEC_NEG * neg,
				prs_struct *ps, int depth);
BOOL make_rpc_auth_netsec_resp(RPC_AUTH_NETSEC_RESP * rsp, uint32 flags);
BOOL smb_io_rpc_auth_netsec_resp(char *desc, RPC_AUTH_NETSEC_RESP * rsp,
				 prs_struct *ps, int depth);
BOOL rpc_auth_netsec_chk(RPC_AUTH_NETSEC_CHK * chk);
BOOL make_rpc_auth_netsec_chk(RPC_AUTH_NETSEC_CHK * chk,
			      const uchar sig[8],
			      const uchar data1[8],
			      const uchar data3[8], const uchar data8[8]);
BOOL smb_io_rpc_auth_netsec_chk(char *desc, RPC_AUTH_NETSEC_CHK * chk,
				prs_struct *ps, int depth);
BOOL netsec_encode(struct netsec_auth_struct *a,
		   RPC_AUTH_NETSEC_CHK * verf, char *data, size_t data_len);
BOOL netsec_decode(struct netsec_auth_struct *a,
		   RPC_AUTH_NETSEC_CHK * verf, char *data, size_t data_len);

/*The following definitions come from  rpc_parse/parse_reg.c  */

BOOL make_reg_q_open_hkcr(REG_Q_OPEN_HKCR * q_o,
			  uint16 unknown_0, uint32 level);
BOOL reg_io_q_open_hkcr(char *desc, REG_Q_OPEN_HKCR * r_q, prs_struct *ps,
			int depth);
BOOL reg_io_r_open_hkcr(char *desc, REG_R_OPEN_HKCR * r_r, prs_struct *ps,
			int depth);
BOOL make_reg_q_open_hklm(REG_Q_OPEN_HKLM * q_o,
			  uint16 unknown_0, uint32 access_mask);
BOOL reg_io_q_open_hklm(char *desc, REG_Q_OPEN_HKLM * r_q, prs_struct *ps,
			int depth);
BOOL reg_io_r_open_hklm(char *desc, REG_R_OPEN_HKLM * r_r, prs_struct *ps,
			int depth);
BOOL make_reg_q_flush_key(REG_Q_FLUSH_KEY * q_u, POLICY_HND *pol);
BOOL reg_io_q_flush_key(char *desc, REG_Q_FLUSH_KEY * r_q, prs_struct *ps,
			int depth);
BOOL reg_io_r_flush_key(char *desc, REG_R_FLUSH_KEY * r_r, prs_struct *ps,
			int depth);
BOOL make_reg_q_create_key(REG_Q_CREATE_KEY * q_c, POLICY_HND *hnd,
			   char *key_name, char *key_class,
			   SEC_ACCESS * sam_access,
			   SEC_DESC_BUF * sec_buf,
			   int sec_len, SEC_DESC * sec);
BOOL reg_io_q_create_key(char *desc, REG_Q_CREATE_KEY * r_q, prs_struct *ps,
			 int depth);
BOOL reg_io_r_create_key(char *desc, REG_R_CREATE_KEY * r_r, prs_struct *ps,
			 int depth);
BOOL make_reg_q_delete_val(REG_Q_DELETE_VALUE * q_c, POLICY_HND *hnd,
			   char *name);
BOOL reg_io_q_delete_val(char *desc, REG_Q_DELETE_VALUE * r_q, prs_struct *ps,
			 int depth);
BOOL reg_io_r_delete_val(char *desc, REG_R_DELETE_VALUE * r_r, prs_struct *ps,
			 int depth);
BOOL make_reg_q_delete_key(REG_Q_DELETE_KEY * q_c, POLICY_HND *hnd,
			   char *name);
BOOL reg_io_q_delete_key(char *desc, REG_Q_DELETE_KEY * r_q, prs_struct *ps,
			 int depth);
BOOL reg_io_r_delete_key(char *desc, REG_R_DELETE_KEY * r_r, prs_struct *ps,
			 int depth);
BOOL make_reg_q_query_key(REG_Q_QUERY_KEY * q_o, POLICY_HND *hnd,
			  uint32 max_class_len);
BOOL reg_io_q_query_key(char *desc, REG_Q_QUERY_KEY * r_q, prs_struct *ps,
			int depth);
BOOL reg_io_r_query_key(char *desc, REG_R_QUERY_KEY * r_r, prs_struct *ps,
			int depth);
BOOL make_reg_q_unk_1a(REG_Q_UNK_1A * q_o, POLICY_HND *hnd);
BOOL reg_io_q_unk_1a(char *desc, REG_Q_UNK_1A * r_q, prs_struct *ps,
		     int depth);
BOOL reg_io_r_unk_1a(char *desc, REG_R_UNK_1A * r_r, prs_struct *ps,
		     int depth);
BOOL make_reg_q_open_hku(REG_Q_OPEN_HKU * q_o, uint16 unknown_0, uint32 level);
BOOL reg_io_q_open_hku(char *desc, REG_Q_OPEN_HKU * r_q, prs_struct *ps,
		       int depth);
BOOL reg_io_r_open_hku(char *desc, REG_R_OPEN_HKU * r_r, prs_struct *ps,
		       int depth);
BOOL make_reg_q_close(REG_Q_CLOSE * q_c, POLICY_HND *hnd);
BOOL reg_io_q_close(char *desc, REG_Q_CLOSE * q_u, prs_struct *ps, int depth);
BOOL reg_io_r_close(char *desc, REG_R_CLOSE * r_u, prs_struct *ps, int depth);
BOOL make_reg_q_set_key_sec(REG_Q_SET_KEY_SEC * q_i, POLICY_HND *pol,
			    uint32 sec_info,
			    uint32 buf_len, SEC_DESC * sec_desc);
BOOL reg_io_q_set_key_sec(char *desc, REG_Q_SET_KEY_SEC * r_q, prs_struct *ps,
			  int depth);
BOOL reg_io_r_set_key_sec(char *desc, REG_R_SET_KEY_SEC * r_q, prs_struct *ps,
			  int depth);
BOOL make_reg_q_get_key_sec(REG_Q_GET_KEY_SEC * q_i, POLICY_HND *pol,
			    uint32 sec_info,
			    uint32 buf_len, SEC_DESC_BUF * sec_buf);
BOOL reg_io_q_get_key_sec(char *desc, REG_Q_GET_KEY_SEC * r_q, prs_struct *ps,
			  int depth);
void make_reg_r_get_key_sec(REG_R_GET_KEY_SEC * r_i, POLICY_HND *pol,
			    uint32 buf_len, uint8 *buf, uint32 status);
BOOL reg_io_r_get_key_sec(char *desc, REG_R_GET_KEY_SEC * r_q, prs_struct *ps,
			  int depth);
BOOL make_reg_q_info(REG_Q_INFO * q_i, POLICY_HND *pol, const char *val_name,
		     uint8 major, uint8 minor);
BOOL reg_io_q_info(char *desc, REG_Q_INFO * r_q, prs_struct *ps, int depth);
BOOL make_reg_r_info(REG_R_INFO * r_r,
		     uint32 *type, BUFFER2 * buf, uint32 status);
BOOL reg_io_r_info(char *desc, REG_R_INFO * r_r, prs_struct *ps, int depth);
BOOL make_reg_q_enum_val(REG_Q_ENUM_VALUE * q_i, POLICY_HND *pol,
			 uint32 val_idx, uint32 max_val_len,
			 uint32 max_buf_len);
BOOL reg_io_q_enum_val(char *desc, REG_Q_ENUM_VALUE * q_q, prs_struct *ps,
		       int depth);
BOOL reg_io_r_enum_val(char *desc, REG_R_ENUM_VALUE * r_q, prs_struct *ps,
		       int depth);
BOOL make_reg_q_create_val(REG_Q_CREATE_VALUE * q_i, POLICY_HND *pol,
			   char *val_name, uint32 type, BUFFER3 * val);
BOOL reg_io_q_create_val(char *desc, REG_Q_CREATE_VALUE * q_q, prs_struct *ps,
			 int depth);
BOOL reg_io_r_create_val(char *desc, REG_R_CREATE_VALUE * r_q, prs_struct *ps,
			 int depth);
BOOL make_reg_q_enum_key(REG_Q_ENUM_KEY * q_i, POLICY_HND *pol,
			 uint32 key_idx);
BOOL reg_io_q_enum_key(char *desc, REG_Q_ENUM_KEY * q_q, prs_struct *ps,
		       int depth);
BOOL reg_io_r_enum_key(char *desc, REG_R_ENUM_KEY * r_q, prs_struct *ps,
		       int depth);
BOOL make_reg_q_open_entry(REG_Q_OPEN_ENTRY * r_q, POLICY_HND *pol,
			   char *key_name, uint32 access_mask);
BOOL reg_io_q_open_entry(char *desc, REG_Q_OPEN_ENTRY * r_q, prs_struct *ps,
			 int depth);
BOOL make_reg_r_open_entry(REG_R_OPEN_ENTRY * r_r,
			   POLICY_HND *pol, uint32 status);
BOOL reg_io_r_open_entry(char *desc, REG_R_OPEN_ENTRY * r_r, prs_struct *ps,
			 int depth);
BOOL make_reg_q_shutdown(REG_Q_SHUTDOWN * q_i,
			 const char *msg, uint32 timeout, uint16 flags);
BOOL reg_io_q_shutdown(char *desc, REG_Q_SHUTDOWN * q_q, prs_struct *ps,
		       int depth);
BOOL reg_io_r_shutdown(char *desc, REG_R_SHUTDOWN * r_q, prs_struct *ps,
		       int depth);

/*The following definitions come from  rpc_parse/parse_rpc.c  */

BOOL make_rpc_hdr(RPC_HDR * hdr, enum RPC_PKT_TYPE pkt_type, uint8 flags,
		  uint32 call_id, int frag_len, int auth_len);
BOOL smb_io_rpc_hdr(char *desc, RPC_HDR * rpc, prs_struct * ps, int depth);
BOOL is_complete_pdu(prs_struct * ps);
BOOL smb_io_rpc_hdr_nack(char *desc, RPC_HDR_NACK * rpc, prs_struct * ps,
			 int depth);
BOOL smb_io_rpc_hdr_fault(char *desc, RPC_HDR_FAULT * rpc, prs_struct * ps,
			  int depth);
BOOL smb_io_rpc_uuid(char *desc, RPC_UUID * uuid, prs_struct *ps, int depth);
BOOL make_rpc_hdr_rb(RPC_HDR_RB * rpc,
		     uint16 max_tsize, uint16 max_rsize, uint32 assoc_gid,
		     uint8 num_elements, uint16 context_id,
		     uint8 num_syntaxes, RPC_IFACE * abstract,
		     RPC_IFACE * transfer);
BOOL smb_io_rpc_hdr_rb(char *desc, RPC_HDR_RB * rpc, prs_struct * ps,
		       int depth);
BOOL make_rpc_hdr_ba(RPC_HDR_BA * rpc,
		     uint16 max_tsize, uint16 max_rsize, uint32 assoc_gid,
		     const char *pipe_addr,
		     uint8 num_results, uint16 result, uint16 reason,
		     RPC_IFACE * transfer);
BOOL smb_io_rpc_hdr_ba(char *desc, RPC_HDR_BA * rpc, prs_struct * ps,
		       int depth);
BOOL make_rpc_hdr_req(RPC_HDR_REQ * hdr, uint32 alloc_hint, uint16 vuid,
		      uint16 opnum);
BOOL smb_io_rpc_hdr_req(char *desc, RPC_HDR_REQ * rpc, prs_struct * ps,
			int depth);
BOOL smb_io_rpc_hdr_resp(char *desc, RPC_HDR_RESP * rpc, prs_struct * ps,
			 int depth);
BOOL make_rpc_hdr_autha(RPC_HDR_AUTHA * rai,
			uint16 max_tsize, uint16 max_rsize,
			uint8 auth_type, uint8 auth_level,
			uint8 stub_type_len);
BOOL smb_io_rpc_hdr_autha(char *desc, RPC_HDR_AUTHA * rai, prs_struct * ps,
			  int depth);
BOOL make_rpc_hdr_auth(RPC_HDR_AUTH * rai,
		       uint8 auth_type, uint8 auth_level,
		       uint8 stub_type_len, uint32 ptr);
BOOL smb_io_rpc_hdr_auth(char *desc, RPC_HDR_AUTH * rai, prs_struct * ps,
			 int depth);
BOOL make_rpc_auth_verifier(RPC_AUTH_VERIFIER * rav,
			    char *signature, uint32 msg_type);
BOOL smb_io_rpc_auth_verifier(char *desc, RPC_AUTH_VERIFIER * rav,
			      prs_struct * ps, int depth);
BOOL rpc_auth_verifier_chk(RPC_AUTH_VERIFIER * rav,
			   char *signature, uint32 msg_type);

/*The following definitions come from  rpc_parse/parse_samr.c  */

BOOL make_samr_q_close_hnd(SAMR_Q_CLOSE_HND * q_c, POLICY_HND *hnd);
BOOL samr_io_q_close_hnd(char *desc, SAMR_Q_CLOSE_HND * q_u,
			 prs_struct *ps, int depth);
BOOL samr_io_r_close_hnd(char *desc, SAMR_R_CLOSE_HND * r_u,
			 prs_struct *ps, int depth);
BOOL make_samr_q_lookup_domain(SAMR_Q_LOOKUP_DOMAIN * q_u,
			       POLICY_HND *pol, const char *dom_name);
BOOL samr_io_q_lookup_domain(char *desc, SAMR_Q_LOOKUP_DOMAIN * q_u,
			     prs_struct *ps, int depth);
BOOL make_samr_r_lookup_domain(SAMR_R_LOOKUP_DOMAIN * r_u,
			       DOM_SID *dom_sid, uint32 status);
BOOL samr_io_r_lookup_domain(char *desc, SAMR_R_LOOKUP_DOMAIN * r_u,
			     prs_struct *ps, int depth);
BOOL make_samr_q_unknown_2d(SAMR_Q_UNKNOWN_2D * q_u,
			    const POLICY_HND *dom_pol, const DOM_SID *sid);
BOOL samr_io_q_unknown_2d(char *desc, SAMR_Q_UNKNOWN_2D * q_u,
			  prs_struct *ps, int depth);
BOOL samr_io_r_unknown_2d(char *desc, SAMR_R_UNKNOWN_2D * r_u,
			  prs_struct *ps, int depth);
BOOL make_samr_q_open_domain(SAMR_Q_OPEN_DOMAIN * q_u,
			     const POLICY_HND *connect_pol, uint32 flags,
			     const DOM_SID *sid);
BOOL samr_io_q_open_domain(char *desc, SAMR_Q_OPEN_DOMAIN * q_u,
			   prs_struct *ps, int depth);
BOOL samr_io_r_open_domain(char *desc, SAMR_R_OPEN_DOMAIN * r_u,
			   prs_struct *ps, int depth);
BOOL make_samr_q_get_usrdom_pwinfo(SAMR_Q_GET_USRDOM_PWINFO * q_u,
				   POLICY_HND *user_pol);
BOOL samr_io_q_get_usrdom_pwinfo(char *desc, SAMR_Q_GET_USRDOM_PWINFO * q_u,
				 prs_struct *ps, int depth);
BOOL samr_io_r_get_usrdom_pwinfo(char *desc, SAMR_R_GET_USRDOM_PWINFO * r_u,
				 prs_struct *ps, int depth);
BOOL make_samr_q_query_sec_obj(SAMR_Q_QUERY_SEC_OBJ * q_u,
			       const POLICY_HND *user_pol, uint32 sec_info);
BOOL samr_io_q_query_sec_obj(char *desc, SAMR_Q_QUERY_SEC_OBJ * q_u,
			     prs_struct *ps, int depth);
BOOL make_samr_q_query_dom_info(SAMR_Q_QUERY_DOMAIN_INFO * q_u,
				POLICY_HND *domain_pol, uint16 switch_value);
BOOL samr_io_q_query_dom_info(char *desc, SAMR_Q_QUERY_DOMAIN_INFO * q_u,
			      prs_struct *ps, int depth);
BOOL make_unk_info3(SAM_UNK_INFO_3 * u_3);
BOOL make_unk_info6(SAM_UNK_INFO_6 * u_6);
BOOL make_unk_info7(SAM_UNK_INFO_7 * u_7);
BOOL make_unk_info12(SAM_UNK_INFO_12 * u_12);
BOOL make_unk_info2(SAM_UNK_INFO_2 * u_2, char *domain, char *server);
BOOL make_unk_info1(SAM_UNK_INFO_1 * u_1);
BOOL make_samr_r_query_dom_info(SAMR_R_QUERY_DOMAIN_INFO * r_u,
				uint16 switch_value, SAM_UNK_CTR * ctr,
				uint32 status);
BOOL samr_io_r_query_dom_info(char *desc, SAMR_R_QUERY_DOMAIN_INFO * r_u,
			      prs_struct *ps, int depth);
BOOL samr_io_r_query_sec_obj(char *desc, SAMR_R_QUERY_SEC_OBJ * r_u,
			     prs_struct *ps, int depth);
BOOL make_sam_entry(SAM_ENTRY * sam, uint32 len_sam_name, uint32 rid);
BOOL make_samr_q_enum_dom_users(SAMR_Q_ENUM_DOM_USERS * q_e, POLICY_HND *pol,
				uint32 start_idx,
				uint16 acb_mask, uint16 unk_1, uint32 size);
BOOL samr_io_q_enum_dom_users(char *desc, SAMR_Q_ENUM_DOM_USERS * q_e,
			      prs_struct *ps, int depth);
BOOL make_samr_r_enum_dom_users(SAMR_R_ENUM_DOM_USERS * r_u,
				uint32 next_idx, uint32 num_sam_entries);
BOOL samr_io_r_enum_dom_users(char *desc, SAMR_R_ENUM_DOM_USERS * r_u,
			      prs_struct *ps, int depth);
BOOL make_samr_q_query_dispinfo(SAMR_Q_QUERY_DISPINFO * q_e, POLICY_HND *pol,
				uint16 switch_level, uint32 start_idx,
				uint32 max_entries);
BOOL samr_io_q_query_dispinfo(char *desc, SAMR_Q_QUERY_DISPINFO * q_e,
			      prs_struct *ps, int depth);
BOOL make_sam_dispinfo_1(SAM_DISPINFO_1 * sam, uint32 *num_entries,
			 uint32 *data_size, uint32 start_idx,
			 SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]);
BOOL make_sam_dispinfo_2(SAM_DISPINFO_2 * sam, uint32 *num_entries,
			 uint32 *data_size, uint32 start_idx,
			 SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]);
BOOL make_sam_dispinfo_3(SAM_DISPINFO_3 * sam, uint32 *num_entries,
			 uint32 *data_size, uint32 start_idx,
			 DOMAIN_GRP * grp);
BOOL make_sam_dispinfo_4(SAM_DISPINFO_4 * sam, uint32 *num_entries,
			 uint32 *data_size, uint32 start_idx,
			 SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]);
BOOL make_sam_dispinfo_5(SAM_DISPINFO_5 * sam, uint32 *num_entries,
			 uint32 *data_size, uint32 start_idx,
			 DOMAIN_GRP * grp);
BOOL make_samr_r_query_dispinfo(SAMR_R_QUERY_DISPINFO * r_u,
				uint32 num_entries, uint32 data_size,
				uint16 switch_level, SAM_DISPINFO_CTR * ctr,
				uint32 status);
BOOL samr_io_r_query_dispinfo(char *desc, SAMR_R_QUERY_DISPINFO * r_u,
			      prs_struct *ps, int depth);
BOOL make_samr_q_open_group(SAMR_Q_OPEN_GROUP * q_c,
			    const POLICY_HND *hnd,
			    uint32 access_mask, uint32 rid);
BOOL samr_io_q_open_group(char *desc, SAMR_Q_OPEN_GROUP * q_u,
			  prs_struct *ps, int depth);
BOOL samr_io_r_open_group(char *desc, SAMR_R_OPEN_GROUP * r_u,
			  prs_struct *ps, int depth);
BOOL make_samr_group_info1(GROUP_INFO1 * gr1,
			   char *acct_name, char *acct_desc,
			   uint32 num_members);
BOOL samr_io_group_info1(char *desc, GROUP_INFO1 * gr1,
			 prs_struct *ps, int depth);
BOOL make_samr_group_info4(GROUP_INFO4 * gr4, const char *acct_desc);
BOOL samr_io_group_info4(char *desc, GROUP_INFO4 * gr4,
			 prs_struct *ps, int depth);
BOOL make_samr_q_create_dom_group(SAMR_Q_CREATE_DOM_GROUP * q_e,
				  POLICY_HND *pol, const char *acct_desc);
BOOL samr_io_q_create_dom_group(char *desc, SAMR_Q_CREATE_DOM_GROUP * q_e,
				prs_struct *ps, int depth);
BOOL samr_io_r_create_dom_group(char *desc, SAMR_R_CREATE_DOM_GROUP * r_u,
				prs_struct *ps, int depth);
BOOL make_samr_q_delete_dom_group(SAMR_Q_DELETE_DOM_GROUP * q_c,
				  POLICY_HND *hnd);
BOOL samr_io_q_delete_dom_group(char *desc, SAMR_Q_DELETE_DOM_GROUP * q_u,
				prs_struct *ps, int depth);
BOOL samr_io_r_delete_dom_group(char *desc, SAMR_R_DELETE_DOM_GROUP * r_u,
				prs_struct *ps, int depth);
BOOL make_samr_q_del_groupmem(SAMR_Q_DEL_GROUPMEM * q_e,
			      POLICY_HND *pol, uint32 rid);
BOOL samr_io_q_del_groupmem(char *desc, SAMR_Q_DEL_GROUPMEM * q_e,
			    prs_struct *ps, int depth);
BOOL make_samr_r_del_groupmem(SAMR_R_DEL_GROUPMEM * r_u, POLICY_HND *pol,
			      uint32 status);
BOOL samr_io_r_del_groupmem(char *desc, SAMR_R_DEL_GROUPMEM * r_u,
			    prs_struct *ps, int depth);
BOOL make_samr_q_add_groupmem(SAMR_Q_ADD_GROUPMEM * q_e,
			      POLICY_HND *pol, uint32 rid);
BOOL samr_io_q_add_groupmem(char *desc, SAMR_Q_ADD_GROUPMEM * q_e,
			    prs_struct *ps, int depth);
BOOL make_samr_r_add_groupmem(SAMR_R_ADD_GROUPMEM * r_u, POLICY_HND *pol,
			      uint32 status);
BOOL samr_io_r_add_groupmem(char *desc, SAMR_R_ADD_GROUPMEM * r_u,
			    prs_struct *ps, int depth);
BOOL make_samr_q_set_groupinfo(SAMR_Q_SET_GROUPINFO * q_e,
			       POLICY_HND *pol, GROUP_INFO_CTR * ctr);
BOOL samr_io_q_set_groupinfo(char *desc, SAMR_Q_SET_GROUPINFO * q_e,
			     prs_struct *ps, int depth);
BOOL make_samr_r_set_groupinfo(SAMR_R_SET_GROUPINFO * r_u, uint32 status);
BOOL samr_io_r_set_groupinfo(char *desc, SAMR_R_SET_GROUPINFO * r_u,
			     prs_struct *ps, int depth);
BOOL make_samr_q_query_groupinfo(SAMR_Q_QUERY_GROUPINFO * q_e,
				 POLICY_HND *pol, uint16 switch_level);
BOOL samr_io_q_query_groupinfo(char *desc, SAMR_Q_QUERY_GROUPINFO * q_e,
			       prs_struct *ps, int depth);
BOOL make_samr_r_query_groupinfo(SAMR_R_QUERY_GROUPINFO * r_u,
				 GROUP_INFO_CTR * ctr, uint32 status);
BOOL samr_io_r_query_groupinfo(char *desc, SAMR_R_QUERY_GROUPINFO * r_u,
			       prs_struct *ps, int depth);
BOOL make_samr_q_query_groupmem(SAMR_Q_QUERY_GROUPMEM * q_c, POLICY_HND *hnd);
BOOL samr_io_q_query_groupmem(char *desc, SAMR_Q_QUERY_GROUPMEM * q_u,
			      prs_struct *ps, int depth);
BOOL make_samr_r_query_groupmem(SAMR_R_QUERY_GROUPMEM * r_u,
				uint32 num_entries, uint32 *rid,
				uint32 *attr, uint32 status);
BOOL samr_io_r_query_groupmem(char *desc, SAMR_R_QUERY_GROUPMEM * r_u,
			      prs_struct *ps, int depth);
void samr_free_r_query_groupmem(SAMR_R_QUERY_GROUPMEM * r_u);
BOOL make_samr_q_query_usergroups(SAMR_Q_QUERY_USERGROUPS * q_u,
				  POLICY_HND *hnd);
BOOL samr_io_q_query_usergroups(char *desc, SAMR_Q_QUERY_USERGROUPS * q_u,
				prs_struct *ps, int depth);
BOOL make_samr_r_query_usergroups(SAMR_R_QUERY_USERGROUPS * r_u,
				  uint32 num_gids, DOM_GID * gid,
				  uint32 status);
BOOL samr_io_gids(char *desc, uint32 *num_gids, DOM_GID ** gid,
		  prs_struct *ps, int depth);
BOOL samr_io_r_query_usergroups(char *desc, SAMR_R_QUERY_USERGROUPS * r_u,
				prs_struct *ps, int depth);
BOOL make_samr_q_enum_domains(SAMR_Q_ENUM_DOMAINS * q_e,
			      const POLICY_HND *pol,
			      uint32 start_idx, uint32 size);
BOOL samr_io_q_enum_domains(char *desc, SAMR_Q_ENUM_DOMAINS * q_e,
			    prs_struct *ps, int depth);
BOOL make_samr_r_enum_domains(SAMR_R_ENUM_DOMAINS * r_u,
			      uint32 next_idx, uint32 num_sam_entries);
BOOL samr_io_r_enum_domains(char *desc, SAMR_R_ENUM_DOMAINS * r_u,
			    prs_struct *ps, int depth);
BOOL make_samr_q_enum_dom_groups(SAMR_Q_ENUM_DOM_GROUPS * q_e,
				 const POLICY_HND *pol,
				 uint32 start_idx, uint32 size);
BOOL samr_io_q_enum_dom_groups(char *desc, SAMR_Q_ENUM_DOM_GROUPS * q_e,
			       prs_struct *ps, int depth);
BOOL make_samr_r_enum_dom_groups(SAMR_R_ENUM_DOM_GROUPS * r_u,
				 uint32 next_idx, uint32 num_sam_entries);
BOOL samr_io_r_enum_dom_groups(char *desc, SAMR_R_ENUM_DOM_GROUPS * r_u,
			       prs_struct *ps, int depth);
BOOL make_samr_q_enum_dom_aliases(SAMR_Q_ENUM_DOM_ALIASES * q_e,
				  POLICY_HND *pol, uint32 start_idx,
				  uint32 size);
BOOL samr_io_q_enum_dom_aliases(char *desc, SAMR_Q_ENUM_DOM_ALIASES * q_e,
				prs_struct *ps, int depth);
BOOL make_samr_r_enum_dom_aliases(SAMR_R_ENUM_DOM_ALIASES * r_u,
				  uint32 next_idx, uint32 num_sam_entries);
BOOL samr_io_r_enum_dom_aliases(char *desc, SAMR_R_ENUM_DOM_ALIASES * r_u,
				prs_struct *ps, int depth);
BOOL make_samr_alias_info3(ALIAS_INFO3 * al3, const char *acct_desc);
BOOL samr_io_alias_info3(char *desc, ALIAS_INFO3 * al3,
			 prs_struct *ps, int depth);
BOOL samr_alias_info_ctr(char *desc, ALIAS_INFO_CTR * ctr,
			 prs_struct *ps, int depth);
BOOL make_samr_q_query_aliasinfo(SAMR_Q_QUERY_ALIASINFO * q_e,
				 const POLICY_HND *pol, uint16 switch_level);
BOOL samr_io_q_query_aliasinfo(char *desc, SAMR_Q_QUERY_ALIASINFO * q_e,
			       prs_struct *ps, int depth);
BOOL make_samr_r_query_aliasinfo(SAMR_R_QUERY_ALIASINFO * r_u,
				 ALIAS_INFO_CTR * ctr, uint32 status);
BOOL samr_io_r_query_aliasinfo(char *desc, SAMR_R_QUERY_ALIASINFO * r_u,
			       prs_struct *ps, int depth);
BOOL make_samr_q_set_aliasinfo(SAMR_Q_SET_ALIASINFO * q_u,
			       const POLICY_HND *hnd, ALIAS_INFO_CTR * ctr);
BOOL samr_io_q_set_aliasinfo(char *desc, SAMR_Q_SET_ALIASINFO * q_u,
			     prs_struct *ps, int depth);
BOOL samr_io_r_set_aliasinfo(char *desc, SAMR_R_SET_ALIASINFO * r_u,
			     prs_struct *ps, int depth);
BOOL make_samr_q_query_useraliases(SAMR_Q_QUERY_USERALIASES * q_u,
				   const POLICY_HND *hnd,
				   uint32 num_sids,
				   uint32 *ptr_sid, DOM_SID2 * sid);
BOOL samr_io_q_query_useraliases(char *desc, SAMR_Q_QUERY_USERALIASES * q_u,
				 prs_struct *ps, int depth);
void samr_free_q_query_useraliases(SAMR_Q_QUERY_USERALIASES * q_u);
BOOL make_samr_r_query_useraliases(SAMR_R_QUERY_USERALIASES * r_u,
				   uint32 num_rids, uint32 *rid,
				   uint32 status);
BOOL samr_io_rids(char *desc, uint32 *num_rids, uint32 **rid,
		  prs_struct *ps, int depth);
BOOL samr_io_r_query_useraliases(char *desc, SAMR_R_QUERY_USERALIASES * r_u,
				 prs_struct *ps, int depth);
BOOL make_samr_q_open_alias(SAMR_Q_OPEN_ALIAS * q_u, const POLICY_HND *pol,
			    uint32 unknown_0, uint32 rid);
BOOL samr_io_q_open_alias(char *desc, SAMR_Q_OPEN_ALIAS * q_u,
			  prs_struct *ps, int depth);
BOOL samr_io_r_open_alias(char *desc, SAMR_R_OPEN_ALIAS * r_u,
			  prs_struct *ps, int depth);
BOOL make_samr_q_lookup_rids(SAMR_Q_LOOKUP_RIDS * q_u,
			     const POLICY_HND *pol, uint32 flags,
			     uint32 num_rids, const uint32 *rid);
BOOL samr_io_q_lookup_rids(char *desc, SAMR_Q_LOOKUP_RIDS * q_u,
			   prs_struct *ps, int depth);
void samr_free_q_lookup_rids(SAMR_Q_LOOKUP_RIDS * q_u);
BOOL make_samr_r_lookup_rids(SAMR_R_LOOKUP_RIDS * r_u,
			     uint32 num_names, UNIHDR * hdr_name,
			     UNISTR2 *uni_name, uint32 *type);
BOOL samr_io_r_lookup_rids(char *desc, SAMR_R_LOOKUP_RIDS * r_u,
			   prs_struct *ps, int depth);
void samr_free_r_lookup_rids(SAMR_R_LOOKUP_RIDS * r_u);
BOOL make_samr_q_delete_alias(SAMR_Q_DELETE_DOM_ALIAS * q_u, POLICY_HND *hnd);
BOOL samr_io_q_delete_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS * q_u,
			    prs_struct *ps, int depth);
BOOL samr_io_r_delete_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS * r_u,
			    prs_struct *ps, int depth);
BOOL make_samr_q_create_dom_alias(SAMR_Q_CREATE_DOM_ALIAS * q_u,
				  POLICY_HND *hnd, const char *acct_desc);
BOOL samr_io_q_create_dom_alias(char *desc, SAMR_Q_CREATE_DOM_ALIAS * q_u,
				prs_struct *ps, int depth);
BOOL samr_io_r_create_dom_alias(char *desc, SAMR_R_CREATE_DOM_ALIAS * r_u,
				prs_struct *ps, int depth);
BOOL make_samr_q_add_aliasmem(SAMR_Q_ADD_ALIASMEM * q_u, POLICY_HND *hnd,
			      DOM_SID *sid);
BOOL samr_io_q_add_aliasmem(char *desc, SAMR_Q_ADD_ALIASMEM * q_u,
			    prs_struct *ps, int depth);
BOOL samr_io_r_add_aliasmem(char *desc, SAMR_R_ADD_ALIASMEM * r_u,
			    prs_struct *ps, int depth);
BOOL make_samr_q_del_aliasmem(SAMR_Q_DEL_ALIASMEM * q_u, POLICY_HND *hnd,
			      DOM_SID *sid);
BOOL samr_io_q_del_aliasmem(char *desc, SAMR_Q_DEL_ALIASMEM * q_u,
			    prs_struct *ps, int depth);
BOOL samr_io_r_del_aliasmem(char *desc, SAMR_R_DEL_ALIASMEM * r_u,
			    prs_struct *ps, int depth);
BOOL make_samr_q_delete_dom_alias(SAMR_Q_DELETE_DOM_ALIAS * q_c,
				  POLICY_HND *hnd);
BOOL samr_io_q_delete_dom_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS * q_u,
				prs_struct *ps, int depth);
BOOL make_samr_r_delete_dom_alias(SAMR_R_DELETE_DOM_ALIAS * r_u,
				  uint32 status);
BOOL samr_io_r_delete_dom_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS * r_u,
				prs_struct *ps, int depth);
BOOL make_samr_q_query_aliasmem(SAMR_Q_QUERY_ALIASMEM * q_c,
				const POLICY_HND *hnd);
BOOL samr_io_q_query_aliasmem(char *desc, SAMR_Q_QUERY_ALIASMEM * q_u,
			      prs_struct *ps, int depth);
BOOL make_samr_r_query_aliasmem(SAMR_R_QUERY_ALIASMEM * r_u,
				uint32 num_sids, DOM_SID2 * sid,
				uint32 status);
BOOL samr_io_r_query_aliasmem(char *desc, SAMR_R_QUERY_ALIASMEM * r_u,
			      prs_struct *ps, int depth);
BOOL make_samr_q_lookup_names(SAMR_Q_LOOKUP_NAMES * q_u,
			      const POLICY_HND *pol, uint32 flags,
			      uint32 num_names, char **name);
BOOL samr_io_q_lookup_names(char *desc, SAMR_Q_LOOKUP_NAMES * q_u,
			    prs_struct *ps, int depth);
void samr_free_q_lookup_names(SAMR_Q_LOOKUP_NAMES * q_l);
BOOL make_samr_r_lookup_names(SAMR_R_LOOKUP_NAMES * r_u,
			      uint32 num_rids,
			      const uint32 *rid, const uint32 *type,
			      uint32 status);
BOOL samr_io_r_lookup_names(char *desc, SAMR_R_LOOKUP_NAMES * r_u,
			    prs_struct *ps, int depth);
void samr_free_r_lookup_names(SAMR_R_LOOKUP_NAMES * r_l);
BOOL make_samr_q_delete_dom_user(SAMR_Q_DELETE_DOM_USER * q_c,
				 POLICY_HND *hnd);
BOOL samr_io_q_delete_dom_user(char *desc, SAMR_Q_DELETE_DOM_USER * q_u,
			       prs_struct *ps, int depth);
BOOL samr_io_r_delete_dom_user(char *desc, SAMR_R_DELETE_DOM_USER * r_u,
			       prs_struct *ps, int depth);
BOOL make_samr_q_open_user(SAMR_Q_OPEN_USER * q_u,
			   const POLICY_HND *pol,
			   uint32 access_mask, uint32 rid);
BOOL samr_io_q_open_user(char *desc, SAMR_Q_OPEN_USER * q_u,
			 prs_struct *ps, int depth);
BOOL samr_io_r_open_user(char *desc, SAMR_R_OPEN_USER * r_u,
			 prs_struct *ps, int depth);
BOOL make_samr_q_create_user(SAMR_Q_CREATE_USER * q_u,
			     POLICY_HND *pol,
			     const char *name,
			     uint32 acb_info, uint32 access_mask);
BOOL samr_io_q_create_user(char *desc, SAMR_Q_CREATE_USER * q_u,
			   prs_struct *ps, int depth);
BOOL samr_io_r_create_user(char *desc, SAMR_R_CREATE_USER * r_u,
			   prs_struct *ps, int depth);
BOOL make_samr_q_query_userinfo(SAMR_Q_QUERY_USERINFO * q_u,
				POLICY_HND *hnd, uint16 switch_value);
BOOL samr_io_q_query_userinfo(char *desc, SAMR_Q_QUERY_USERINFO * q_u,
			      prs_struct *ps, int depth);
BOOL make_sam_user_info12(SAM_USER_INFO_12 * usr,
			  const uint8 lm_pwd[16], const uint8 nt_pwd[16]);
BOOL sam_io_user_info12(char *desc, SAM_USER_INFO_12 * u,
			prs_struct *ps, int depth);
BOOL make_sam_user_info10(SAM_USER_INFO_10 * usr, uint32 acb_info);
BOOL sam_io_user_info10(char *desc, SAM_USER_INFO_10 * usr,
			prs_struct *ps, int depth);
BOOL make_sam_user_info11(SAM_USER_INFO_11 * usr,
			  NTTIME * expiry,
			  char *mach_acct,
			  uint32 rid_user, uint32 rid_group, uint16 acct_ctrl);
BOOL sam_io_user_info11(char *desc, SAM_USER_INFO_11 * usr,
			prs_struct *ps, int depth);
BOOL make_sam_user_info24(SAM_USER_INFO_24 * usr,
			  const char newpass[516], uint16 passlen);
BOOL make_sam_user_info23W(SAM_USER_INFO_23 * usr, const NTTIME * logon_time,	/* all zeros */
			   const NTTIME * logoff_time,	/* all zeros */
			   const NTTIME * kickoff_time,	/* all zeros */
			   const NTTIME * pass_last_set_time,	/* all zeros */
			   const NTTIME * pass_can_change_time,	/* all zeros */
			   const NTTIME * pass_must_change_time,	/* all zeros */
			   const UNISTR2 *user_name,
			   const UNISTR2 *full_name, const UNISTR2 *home_dir, const UNISTR2 *dir_drive, const UNISTR2 *log_scr, const UNISTR2 *prof_path, const UNISTR2 *desc, const UNISTR2 *wkstas, const UNISTR2 *unk_str, const UNISTR2 *mung_dial, uint32 user_rid,	/* 0x0000 0000 */
			   uint32 group_rid,
			   uint32 acb_info,
			   uint32 unknown_3,
			   uint16 logon_divs,
			   LOGON_HRS * hrs,
			   uint32 unknown_5,
			   char newpass[516], uint32 unknown_6);
BOOL make_sam_user_info23A(SAM_USER_INFO_23 * usr, NTTIME * logon_time,	/* all zeros */
			   NTTIME * logoff_time,	/* all zeros */
			   NTTIME * kickoff_time,	/* all zeros */
			   NTTIME * pass_last_set_time,	/* all zeros */
			   NTTIME * pass_can_change_time,	/* all zeros */
			   NTTIME * pass_must_change_time,	/* all zeros */
			   char *user_name,	/* NULL */
			   char *full_name,
			   char *home_dir, char *dir_drive, char *log_scr,
			   char *prof_path, char *desc, char *wkstas,
			   char *unk_str, char *mung_dial, uint32 user_rid,	/* 0x0000 0000 */
			   uint32 group_rid, uint32 acb_info,
			   uint32 unknown_3, uint16 logon_divs,
			   LOGON_HRS * hrs, uint32 unknown_5,
			   char newpass[516], uint32 unknown_6);
BOOL make_sam_user_info21W(SAM_USER_INFO_21 * usr,
			   const NTTIME * logon_time,
			   const NTTIME * logoff_time,
			   const NTTIME * kickoff_time,
			   const NTTIME * pass_last_set_time,
			   const NTTIME * pass_can_change_time,
			   const NTTIME * pass_must_change_time,
			   const UNISTR2 *user_name,
			   const UNISTR2 *full_name,
			   const UNISTR2 *home_dir,
			   const UNISTR2 *dir_drive,
			   const UNISTR2 *log_scr,
			   const UNISTR2 *prof_path,
			   const UNISTR2 *desc,
			   const UNISTR2 *wkstas,
			   const UNISTR2 *unk_str,
			   const UNISTR2 *mung_dial,
			   const uchar lm_pwd[16],
			   const uchar nt_pwd[16],
			   uint32 user_rid,
			   uint32 group_rid,
			   uint32 acb_info,
			   uint32 unknown_3,
			   uint16 logon_divs,
			   const LOGON_HRS * hrs,
			   uint32 unknown_5, uint32 unknown_6);
BOOL make_sam_user_info21A(SAM_USER_INFO_21 * usr,
			   NTTIME * logon_time,
			   NTTIME * logoff_time,
			   NTTIME * kickoff_time,
			   NTTIME * pass_last_set_time,
			   NTTIME * pass_can_change_time,
			   NTTIME * pass_must_change_time,
			   char *user_name,
			   char *full_name,
			   char *home_dir,
			   char *dir_drive,
			   char *log_scr,
			   char *prof_path,
			   char *desc,
			   char *wkstas,
			   char *unk_str,
			   char *mung_dial,
			   uint32 user_rid,
			   uint32 group_rid,
			   uint32 acb_info,
			   uint32 unknown_3,
			   uint16 logon_divs,
			   LOGON_HRS * hrs,
			   uint32 unknown_5, uint32 unknown_6);
BOOL sam_io_user_info21(char *desc, SAM_USER_INFO_21 * usr,
			prs_struct *ps, int depth);
uint32 make_samr_userinfo_ctr_usr21(SAM_USERINFO_CTR * ctr,
				    uint16 switch_value,
				    const SAM_USER_INFO_21 * usr);
BOOL make_samr_userinfo_ctr(SAM_USERINFO_CTR * ctr, const uchar * sess_key,
			    uint16 switch_value, void *info);
void free_samr_userinfo_ctr(SAM_USERINFO_CTR * ctr);
BOOL make_samr_r_query_userinfo(SAMR_R_QUERY_USERINFO * r_u,
				SAM_USERINFO_CTR * ctr, uint32 status);
BOOL samr_io_r_query_userinfo(char *desc, SAMR_R_QUERY_USERINFO * r_u,
			      prs_struct *ps, int depth);
BOOL make_samr_q_set_userinfo(SAMR_Q_SET_USERINFO * q_u,
			      POLICY_HND *hnd,
			      uint16 switch_value, void *info);
BOOL samr_io_q_set_userinfo(char *desc, SAMR_Q_SET_USERINFO * q_u,
			    prs_struct *ps, int depth);
void free_samr_q_set_userinfo(SAMR_Q_SET_USERINFO * q_u);
BOOL make_samr_r_set_userinfo(SAMR_R_SET_USERINFO * r_u, uint32 status);
BOOL samr_io_r_set_userinfo(char *desc, SAMR_R_SET_USERINFO * r_u,
			    prs_struct *ps, int depth);
BOOL make_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 * q_u,
			       POLICY_HND *hnd,
			       uint16 switch_value, SAM_USERINFO_CTR * ctr);
BOOL samr_io_q_set_userinfo2(char *desc, SAMR_Q_SET_USERINFO2 * q_u,
			     prs_struct *ps, int depth);
void free_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 * q_u);
BOOL make_samr_r_set_userinfo2(SAMR_R_SET_USERINFO2 * r_u, uint32 status);
BOOL samr_io_r_set_userinfo2(char *desc, SAMR_R_SET_USERINFO2 * r_u,
			     prs_struct *ps, int depth);
BOOL make_samr_q_connect(SAMR_Q_CONNECT * q_u,
			 const char *srv_name, uint32 access_mask);
BOOL samr_io_q_connect(char *desc, SAMR_Q_CONNECT * q_u,
		       prs_struct *ps, int depth);
BOOL samr_io_r_connect(char *desc, SAMR_R_CONNECT * r_u,
		       prs_struct *ps, int depth);
BOOL make_samr_q_connect_anon(SAMR_Q_CONNECT_ANON * q_u);
BOOL samr_io_q_connect_anon(char *desc, SAMR_Q_CONNECT_ANON * q_u,
			    prs_struct *ps, int depth);
BOOL samr_io_r_connect_anon(char *desc, SAMR_R_CONNECT_ANON * r_u,
			    prs_struct *ps, int depth);
BOOL make_samr_q_get_dom_pwinfo(SAMR_Q_GET_DOM_PWINFO * q_u,
				const char *srv_name);
BOOL samr_io_q_get_dom_pwinfo(char *desc, SAMR_Q_GET_DOM_PWINFO * q_u,
			      prs_struct *ps, int depth);
BOOL samr_io_r_get_dom_pwinfo(char *desc, SAMR_R_GET_DOM_PWINFO * r_u,
			      prs_struct *ps, int depth);
BOOL make_enc_passwd(SAMR_ENC_PASSWD * pwd, const char pass[512]);
BOOL samr_io_enc_passwd(char *desc, SAMR_ENC_PASSWD * pwd,
			prs_struct *ps, int depth);
BOOL make_enc_hash(SAMR_ENC_HASH * hsh, const uchar hash[16]);
BOOL samr_io_enc_hash(char *desc, SAMR_ENC_HASH * hsh,
		      prs_struct *ps, int depth);
BOOL make_samr_q_chgpasswd_user(SAMR_Q_CHGPASSWD_USER * q_u,
				const char *dest_host, 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_io_q_chgpasswd_user(char *desc, SAMR_Q_CHGPASSWD_USER * q_u,
			      prs_struct *ps, int depth);
BOOL make_samr_r_chgpasswd_user(SAMR_R_CHGPASSWD_USER * r_u, uint32 status);
BOOL samr_io_r_chgpasswd_user(char *desc, SAMR_R_CHGPASSWD_USER * r_u,
			      prs_struct *ps, int depth);

/*The following definitions come from  rpc_parse/parse_sec.c  */

BOOL make_sec_access(SEC_ACCESS * t, uint32 mask);
BOOL sec_io_access(char *desc, SEC_ACCESS * t, prs_struct *ps, int depth);
BOOL make_sec_ace(SEC_ACE * t, const DOM_SID *sid, uint8 type,
		  SEC_ACCESS mask, uint8 flag);
BOOL sec_io_ace(char *desc, SEC_ACE * t, prs_struct *ps, int depth);
BOOL make_sec_acl(SEC_ACL * t, uint16 revision, int num_aces, SEC_ACE * ace);
void free_sec_acl(SEC_ACL * t);
BOOL sec_io_acl(char *desc, SEC_ACL * t, prs_struct *ps, int depth);
int make_sec_desc(SEC_DESC * t, uint16 revision, uint16 type,
		  DOM_SID *owner_sid, DOM_SID *grp_sid,
		  SEC_ACL * sacl, SEC_ACL * dacl);
void free_sec_desc(SEC_DESC * t);
BOOL sec_io_desc(char *desc, SEC_DESC * t, prs_struct *ps, int depth);
BOOL make_sec_desc_buf(SEC_DESC_BUF * buf, int len, SEC_DESC * data);
void free_sec_desc_buf(SEC_DESC_BUF * buf);
BOOL sec_io_desc_buf(char *desc, SEC_DESC_BUF * sec, prs_struct *ps,
		     int depth);

/*The following definitions come from  rpc_parse/parse_spoolss.c  */

BOOL make_systemtime(SYSTEMTIME *systime, struct tm *unixtime);
BOOL smb_io_notify_info_data_strings(char *desc,SPOOL_NOTIFY_INFO_DATA *data,
                                     prs_struct *ps, int depth);
BOOL make_spoolss_q_open_printer_ex(SPOOL_Q_OPEN_PRINTER_EX *q_u, fstring printername, fstring datatype, 
					uint32 access_required, fstring clientname, fstring user_name);
BOOL spoolss_io_q_open_printer_ex(char *desc, SPOOL_Q_OPEN_PRINTER_EX *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_open_printer_ex(char *desc, SPOOL_R_OPEN_PRINTER_EX *r_u, prs_struct *ps, int depth);
BOOL make_spoolss_q_getprinterdata(SPOOL_Q_GETPRINTERDATA *q_u,
				POLICY_HND *handle,
				char *valuename,
				uint32 size);
BOOL spoolss_io_q_getprinterdata(char *desc, SPOOL_Q_GETPRINTERDATA *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_getprinterdata(char *desc, SPOOL_R_GETPRINTERDATA *r_u, prs_struct *ps, int depth);
BOOL make_spoolss_q_closeprinter(SPOOL_Q_CLOSEPRINTER *q_u, POLICY_HND *hnd);
BOOL spoolss_io_q_closeprinter(char *desc, SPOOL_Q_CLOSEPRINTER *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_closeprinter(char *desc, SPOOL_R_CLOSEPRINTER *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_startdocprinter(char *desc, SPOOL_Q_STARTDOCPRINTER *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_startdocprinter(char *desc, SPOOL_R_STARTDOCPRINTER *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_enddocprinter(char *desc, SPOOL_Q_ENDDOCPRINTER *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_enddocprinter(char *desc, SPOOL_R_ENDDOCPRINTER *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_startpageprinter(char *desc, SPOOL_Q_STARTPAGEPRINTER *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_startpageprinter(char *desc, SPOOL_R_STARTPAGEPRINTER *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_endpageprinter(char *desc, SPOOL_Q_ENDPAGEPRINTER *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_endpageprinter(char *desc, SPOOL_R_ENDPAGEPRINTER *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_writeprinter(char *desc, SPOOL_Q_WRITEPRINTER *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_writeprinter(char *desc, SPOOL_R_WRITEPRINTER *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_rffpcnex(char *desc, SPOOL_Q_RFFPCNEX *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_rffpcnex(char *desc, SPOOL_R_RFFPCNEX *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_rfnpcnex(char *desc, SPOOL_Q_RFNPCNEX *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_rfnpcnex(char *desc, SPOOL_R_RFNPCNEX *r_u, prs_struct *ps, int depth);
BOOL new_smb_io_printer_info_0(char *desc, NEW_BUFFER *buffer, PRINTER_INFO_0 *info, int depth);
BOOL new_smb_io_printer_info_1(char *desc, NEW_BUFFER *buffer, PRINTER_INFO_1 *info, int depth);
BOOL new_smb_io_printer_info_2(char *desc, NEW_BUFFER *buffer, PRINTER_INFO_2 *info, int depth);
BOOL new_smb_io_printer_driver_info_1(char *desc, NEW_BUFFER *buffer, DRIVER_INFO_1 *info, int depth) ;
BOOL new_smb_io_printer_driver_info_2(char *desc, NEW_BUFFER *buffer, DRIVER_INFO_2 *info, int depth) ;
BOOL new_smb_io_printer_driver_info_3(char *desc, NEW_BUFFER *buffer, DRIVER_INFO_3 *info, int depth);
BOOL new_smb_io_job_info_1(char *desc, NEW_BUFFER *buffer, JOB_INFO_1 *info, int depth);
BOOL new_smb_io_job_info_2(char *desc, NEW_BUFFER *buffer, JOB_INFO_2 *info, int depth);
BOOL new_smb_io_form_1(char *desc, NEW_BUFFER *buffer, FORM_1 *info, int depth);
void new_spoolss_move_buffer(NEW_BUFFER *src, NEW_BUFFER **dest);
void new_spoolss_allocate_buffer(NEW_BUFFER **buffer);
void new_spoolss_free_buffer(NEW_BUFFER *buffer);
uint32 new_get_buffer_size(NEW_BUFFER *buffer);
BOOL new_smb_io_driverdir_1(char *desc, NEW_BUFFER *buffer, DRIVER_DIRECTORY_1 *info, int depth);
BOOL new_smb_io_port_1(char *desc, NEW_BUFFER *buffer, PORT_INFO_1 *info, int depth);
BOOL new_smb_io_port_2(char *desc, NEW_BUFFER *buffer, PORT_INFO_2 *info, int depth);
BOOL smb_io_printprocessor_info_1(char *desc, NEW_BUFFER *buffer, PRINTPROCESSOR_1 *info, int depth);
BOOL smb_io_printprocdatatype_info_1(char *desc, NEW_BUFFER *buffer, PRINTPROCDATATYPE_1 *info, int depth);
BOOL smb_io_printmonitor_info_1(char *desc, NEW_BUFFER *buffer, PRINTMONITOR_1 *info, int depth);
BOOL smb_io_printmonitor_info_2(char *desc, NEW_BUFFER *buffer, PRINTMONITOR_2 *info, int depth);
uint32 spoolss_size_printer_info_0(PRINTER_INFO_0 *info);
uint32 spoolss_size_printer_info_1(PRINTER_INFO_1 *info);
uint32 spoolss_size_printer_info_2(PRINTER_INFO_2 *info);
uint32 spoolss_size_printer_driver_info_1(DRIVER_INFO_1 *info);
uint32 spoolss_size_printer_driver_info_2(DRIVER_INFO_2 *info);
uint32 spoolss_size_printer_driver_info_3(DRIVER_INFO_3 *info);
uint32 spoolss_size_job_info_1(JOB_INFO_1 *info);
uint32 spoolss_size_job_info_2(JOB_INFO_2 *info);
uint32 spoolss_size_form_1(FORM_1 *info);
uint32 spoolss_size_port_info_1(PORT_INFO_1 *info);
uint32 spoolss_size_driverdir_info_1(DRIVER_DIRECTORY_1 *info);
uint32 spoolss_size_port_info_2(PORT_INFO_2 *info);
uint32 spoolss_size_printprocessor_info_1(PRINTPROCESSOR_1 *info);
uint32 spoolss_size_printprocdatatype_info_1(PRINTPROCDATATYPE_1 *info);
uint32 spoolss_size_printmonitor_info_1(PRINTMONITOR_1 *info);
uint32 spoolss_size_printmonitor_info_2(PRINTMONITOR_2 *info);
BOOL make_spoolss_q_getprinterdriver2(SPOOL_Q_GETPRINTERDRIVER2 *q_u, 
			       const POLICY_HND *hnd, fstring architecture,
			       uint32 level, uint32 clientmajor, uint32 clientminor,
			       NEW_BUFFER *buffer, uint32 offered);
BOOL spoolss_io_q_getprinterdriver2(char *desc, SPOOL_Q_GETPRINTERDRIVER2 *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_getprinterdriver2(char *desc, SPOOL_R_GETPRINTERDRIVER2 *r_u, prs_struct *ps, int depth);
BOOL make_spoolss_q_enumprinters(SPOOL_Q_ENUMPRINTERS *q_u, uint32 flags, 
				fstring servername, uint32 level, 
				NEW_BUFFER *buffer, uint32 offered);
BOOL spoolss_io_q_enumprinters(char *desc, SPOOL_Q_ENUMPRINTERS *q_u, prs_struct *ps, int depth);
BOOL new_spoolss_io_r_enumprinters(char *desc, SPOOL_R_ENUMPRINTERS *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_getprinter(char *desc, SPOOL_R_GETPRINTER *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_getprinter(char *desc, SPOOL_Q_GETPRINTER *q_u, prs_struct *ps, int depth);
BOOL make_spoolss_q_getprinter(SPOOL_Q_GETPRINTER *q_u, const POLICY_HND *hnd, uint32 level, 
				NEW_BUFFER *buffer, uint32 offered);
BOOL spoolss_io_r_setprinter(char *desc, SPOOL_R_SETPRINTER *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_setprinter(char *desc, SPOOL_Q_SETPRINTER *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_fcpn(char *desc, SPOOL_R_FCPN *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_fcpn(char *desc, SPOOL_Q_FCPN *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_addjob(char *desc, SPOOL_R_ADDJOB *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_addjob(char *desc, SPOOL_Q_ADDJOB *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_enumjobs(char *desc, SPOOL_R_ENUMJOBS *r_u, prs_struct *ps, int depth);
BOOL make_spoolss_q_enumjobs(SPOOL_Q_ENUMJOBS *q_u, const POLICY_HND *hnd,
				uint32 firstjob,
				uint32 numofjobs,
				uint32 level,
				NEW_BUFFER *buffer,
				uint32 offered);
BOOL spoolss_io_q_enumjobs(char *desc, SPOOL_Q_ENUMJOBS *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_schedulejob(char *desc, SPOOL_R_SCHEDULEJOB *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_schedulejob(char *desc, SPOOL_Q_SCHEDULEJOB *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_setjob(char *desc, SPOOL_R_SETJOB *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_setjob(char *desc, SPOOL_Q_SETJOB *q_u, prs_struct *ps, int depth);
BOOL new_spoolss_io_r_enumprinterdrivers(char *desc, SPOOL_R_ENUMPRINTERDRIVERS *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_enumprinterdrivers(char *desc, SPOOL_Q_ENUMPRINTERDRIVERS *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_enumforms(char *desc, SPOOL_Q_ENUMFORMS *q_u, prs_struct *ps, int depth);
BOOL new_spoolss_io_r_enumforms(char *desc, SPOOL_R_ENUMFORMS *r_u, prs_struct *ps, int depth);
BOOL new_spoolss_io_r_enumports(char *desc, SPOOL_R_ENUMPORTS *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_enumports(char *desc, SPOOL_Q_ENUMPORTS *q_u, prs_struct *ps, int depth);
BOOL spool_io_printer_info_level_1(char *desc, SPOOL_PRINTER_INFO_LEVEL_1 *il, prs_struct *ps, int depth);
BOOL spool_io_printer_info_level_2(char *desc, SPOOL_PRINTER_INFO_LEVEL_2 *il, prs_struct *ps, int depth);
BOOL spool_io_printer_info_level(char *desc, SPOOL_PRINTER_INFO_LEVEL *il, prs_struct *ps, int depth);
BOOL spoolss_io_q_addprinterex(char *desc, SPOOL_Q_ADDPRINTEREX *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_addprinterex(char *desc, SPOOL_R_ADDPRINTEREX *r_u, prs_struct *ps, int depth);
BOOL spool_io_printer_driver_info_level_3(char *desc, SPOOL_PRINTER_DRIVER_INFO_LEVEL_3 **q_u, 
                                          prs_struct *ps, int depth);
BOOL uniarray_2_ascarray(BUFFER5 *buf5, char ***ar);
BOOL smb_io_unibuffer(char *desc, UNISTR2 *buffer, prs_struct *ps, int depth);
BOOL spool_io_printer_driver_info_level(char *desc, SPOOL_PRINTER_DRIVER_INFO_LEVEL *il, prs_struct *ps, int depth);
BOOL spoolss_io_q_addprinterdriver(char *desc, SPOOL_Q_ADDPRINTERDRIVER *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_addprinterdriver(char *desc, SPOOL_R_ADDPRINTERDRIVER *q_u, prs_struct *ps, int depth);
BOOL uni_2_asc_printer_driver_3(SPOOL_PRINTER_DRIVER_INFO_LEVEL_3 *uni,
                                NT_PRINTER_DRIVER_INFO_LEVEL_3 **asc);
BOOL uni_2_asc_printer_info_2(const SPOOL_PRINTER_INFO_LEVEL_2 *uni,
                              NT_PRINTER_INFO_LEVEL_2  **asc);
BOOL spoolss_io_q_getprinterdriverdir(char *desc, SPOOL_Q_GETPRINTERDRIVERDIR *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_getprinterdriverdir(char *desc, SPOOL_R_GETPRINTERDRIVERDIR *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_enumprintprocessors(char *desc, SPOOL_R_ENUMPRINTPROCESSORS *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_enumprintprocessors(char *desc, SPOOL_Q_ENUMPRINTPROCESSORS *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_enumprintprocdatatypes(char *desc, SPOOL_R_ENUMPRINTPROCDATATYPES *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_enumprintprocdatatypes(char *desc, SPOOL_Q_ENUMPRINTPROCDATATYPES *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_enumprintmonitors(char *desc, SPOOL_Q_ENUMPRINTMONITORS *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_enumprintmonitors(char *desc, SPOOL_R_ENUMPRINTMONITORS *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_enumprinterdata(char *desc, SPOOL_R_ENUMPRINTERDATA *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_enumprinterdata(char *desc, SPOOL_Q_ENUMPRINTERDATA *q_u, prs_struct *ps, int depth);
BOOL make_spoolss_q_enumprinterdata(SPOOL_Q_ENUMPRINTERDATA *q_u, POLICY_HND *hnd, uint32 idx, uint32 valuelen, uint32 datalen);
BOOL spoolss_io_q_setprinterdata(char *desc, SPOOL_Q_SETPRINTERDATA *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_setprinterdata(char *desc, SPOOL_R_SETPRINTERDATA *r_u, prs_struct *ps, int depth);
BOOL convert_specific_param(NT_PRINTER_PARAM **param, const UNISTR2 *value,
				uint32 type, const uint8 *data, uint32 len);
BOOL spoolss_io_q_addform(char *desc, SPOOL_Q_ADDFORM *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_addform(char *desc, SPOOL_R_ADDFORM *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_setform(char *desc, SPOOL_Q_SETFORM *q_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_setform(char *desc, SPOOL_R_SETFORM *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_r_getjob(char *desc, SPOOL_R_GETJOB *r_u, prs_struct *ps, int depth);
BOOL spoolss_io_q_getjob(char *desc, SPOOL_Q_GETJOB *q_u, prs_struct *ps, int depth);
void free_devmode(DEVICEMODE *devmode);
void free_printer_info_2(PRINTER_INFO_2 *printer);
void free_print2_array(uint32 num_entries, PRINTER_INFO_2 **entries);
PRINTER_INFO_2 *add_print2_to_array(uint32 *len, PRINTER_INFO_2 ***array,
				const PRINTER_INFO_2 *prt);
void free_print1_array(uint32 num_entries, PRINTER_INFO_1 **entries);
PRINTER_INFO_1 *add_print1_to_array(uint32 *len, PRINTER_INFO_1 ***array,
				const PRINTER_INFO_1 *prt);
void free_job1_array(uint32 num_entries, JOB_INFO_1 **entries);
JOB_INFO_1 *add_job1_to_array(uint32 *len, JOB_INFO_1 ***array,
				const JOB_INFO_1 *job);
void free_job_info_2(JOB_INFO_2 *job);
void free_job2_array(uint32 num_entries, JOB_INFO_2 **entries);
JOB_INFO_2 *add_job2_to_array(uint32 *len, JOB_INFO_2 ***array,
				const JOB_INFO_2 *job);

/*The following definitions come from  rpc_parse/parse_srv.c  */

BOOL make_srv_sh_info1_str(SH_INFO_1_STR * sh1,
			   const char *net_name, const char *remark);
BOOL make_srv_sh_info1(SH_INFO_1 * sh1,
		       const char *net_name, uint32 type, const char *remark);
BOOL make_srv_sh_info2_str(SH_INFO_2_STR * sh2,
			   const char *net_name, const char *remark,
			   const char *path, const char *pass);
BOOL make_srv_sh_info2(SH_INFO_2 * sh2,
		       const char *net_name, uint32 type,
		       const char *remark,
		       uint32 perms, uint32 max_uses, uint32 num_uses,
		       const char *path, const char *pass);
void srv_free_share_info_ctr(SHARE_INFO_CTR * info);
void srv_free_srv_share_ctr(SRV_SHARE_INFO_CTR * ctr);
BOOL make_srv_q_net_share_enum(SRV_Q_NET_SHARE_ENUM * q_n,
			       const char *srv_name,
			       uint32 share_level, SRV_SHARE_INFO_CTR * ctr,
			       uint32 preferred_len, ENUM_HND * hnd);
BOOL srv_io_q_net_share_enum(char *desc, SRV_Q_NET_SHARE_ENUM * q_n,
			     prs_struct *ps, int depth);
BOOL srv_io_r_net_share_enum(char *desc, SRV_R_NET_SHARE_ENUM * r_n,
			     prs_struct *ps, int depth);
BOOL make_srv_q_net_share_get_info(SRV_Q_NET_SHARE_GET_INFO * q_n,
				   const UNISTR2 *srv_name,
				   const UNISTR2 *share_name,
				   uint32 info_level);
BOOL srv_io_q_net_share_get_info(char *desc, SRV_Q_NET_SHARE_GET_INFO * q_n,
				 prs_struct *ps, int depth);
BOOL make_srv_r_net_share_get_info(SRV_R_NET_SHARE_GET_INFO * r_n,
				   uint32 info_level,
				   SHARE_INFO_CTR * ctr, uint32 status);
BOOL srv_io_r_net_share_get_info(char *desc, SRV_R_NET_SHARE_GET_INFO * r_n,
				 prs_struct *ps, int depth);
BOOL srv_io_q_net_share_add(char *desc, SRV_Q_NET_SHARE_ADD * q_n,
			    prs_struct *ps, int depth);
BOOL srv_io_r_net_share_add(char *desc, SRV_R_NET_SHARE_ADD * r_n,
			    prs_struct *ps, int depth);
BOOL make_srv_sess_info0_str(SESS_INFO_0_STR * ss0, char *name);
BOOL make_srv_sess_info0(SESS_INFO_0 * ss0, char *name);
BOOL make_srv_sess_info1_str(SESS_INFO_1_STR * ss1, char *name, char *user);
BOOL make_srv_sess_info1(SESS_INFO_1 * ss1,
			 char *name, char *user,
			 uint32 num_opens, uint32 open_time, uint32 idle_time,
			 uint32 user_flags);
BOOL make_srv_q_net_sess_enum(SRV_Q_NET_SESS_ENUM * q_n,
			      const char *srv_name, const char *qual_name,
			      char *user_name,
			      uint32 sess_level, SRV_SESS_INFO_CTR * ctr,
			      uint32 preferred_len, ENUM_HND * hnd);
BOOL srv_io_q_net_sess_enum(char *desc, SRV_Q_NET_SESS_ENUM * q_n,
			    prs_struct *ps, int depth);
BOOL srv_io_r_net_sess_enum(char *desc, SRV_R_NET_SESS_ENUM * r_n,
			    prs_struct *ps, int depth);
BOOL make_srv_conn_info0(CONN_INFO_0 * ss0, uint32 id);
BOOL make_srv_conn_info1_str(CONN_INFO_1_STR * ss1, char *usr_name,
			     char *net_name);
BOOL make_srv_conn_info1(CONN_INFO_1 * ss1,
			 uint32 id, uint32 type,
			 uint32 num_opens, uint32 num_users, uint32 open_time,
			 char *usr_name, char *net_name);
BOOL make_srv_q_net_conn_enum(SRV_Q_NET_CONN_ENUM * q_n,
			      const char *srv_name, const char *qual_name,
			      uint32 conn_level, SRV_CONN_INFO_CTR * ctr,
			      uint32 preferred_len, ENUM_HND * hnd);
BOOL srv_io_q_net_conn_enum(char *desc, SRV_Q_NET_CONN_ENUM * q_n,
			    prs_struct *ps, int depth);
BOOL srv_io_r_net_conn_enum(char *desc, SRV_R_NET_CONN_ENUM * r_n,
			    prs_struct *ps, int depth);
BOOL make_srv_tprt_info0_str(TPRT_INFO_0_STR * tp0,
			     char *trans_name,
			     char *trans_addr, uint32 trans_addr_len,
			     char *addr_name);
BOOL make_srv_tprt_info0(TPRT_INFO_0 * tp0,
			 uint32 num_vcs, uint32 trans_addr_len,
			 char *trans_name, char *trans_addr, char *addr_name);
void free_srv_tprt_info_0(SRV_TPRT_INFO_0 * tp0);
void free_srv_tprt_ctr(SRV_TPRT_INFO_CTR * ctr);
BOOL make_srv_q_net_tprt_enum(SRV_Q_NET_TPRT_ENUM * q_n,
			      const char *srv_name,
			      uint32 tprt_level, SRV_TPRT_INFO_CTR * ctr,
			      uint32 preferred_len, ENUM_HND * hnd);
BOOL srv_io_q_net_tprt_enum(char *desc, SRV_Q_NET_TPRT_ENUM * q_n,
			    prs_struct *ps, int depth);
BOOL srv_io_r_net_tprt_enum(char *desc, SRV_R_NET_TPRT_ENUM * r_n,
			    prs_struct *ps, int depth);
BOOL make_srv_file_info3_str(FILE_INFO_3_STR * fi3,
			     const char *path_name, const char *user_name);
BOOL make_srv_file_info3(FILE_INFO_3 * fl3,
			 uint32 id, uint32 perms, uint32 num_locks,
			 const char *path_name, const char *user_name);
void srv_free_srv_file_ctr(SRV_FILE_INFO_CTR * ctr);
BOOL make_srv_q_net_file_enum(SRV_Q_NET_FILE_ENUM * q_n,
			      const char *srv_name, const char *qual_name,
			      uint32 file_id,
			      uint32 file_level, SRV_FILE_INFO_CTR * ctr,
			      uint32 preferred_len, ENUM_HND * hnd);
BOOL srv_io_q_net_file_enum(char *desc, SRV_Q_NET_FILE_ENUM * q_n,
			    prs_struct *ps, int depth);
BOOL srv_io_r_net_file_enum(char *desc, SRV_R_NET_FILE_ENUM * r_n,
			    prs_struct *ps, int depth);
BOOL make_srv_q_net_srv_get_info(SRV_Q_NET_SRV_GET_INFO * srv,
				 char *server_name, uint32 switch_value);
BOOL srv_io_q_net_srv_get_info(char *desc, SRV_Q_NET_SRV_GET_INFO * q_n,
			       prs_struct *ps, int depth);
BOOL make_srv_r_net_srv_get_info(SRV_R_NET_SRV_GET_INFO * srv,
				 uint32 switch_value, SRV_INFO_CTR * ctr,
				 uint32 status);
BOOL srv_io_r_net_srv_get_info(char *desc, SRV_R_NET_SRV_GET_INFO * r_n,
			       prs_struct *ps, int depth);
BOOL make_srv_q_net_remote_tod(SRV_Q_NET_REMOTE_TOD * q_t, char *server_name);
BOOL srv_io_q_net_remote_tod(char *desc, SRV_Q_NET_REMOTE_TOD * q_n,
			     prs_struct *ps, int depth);
BOOL make_time_of_day_info(TIME_OF_DAY_INFO * tod, uint32 elapsedt,
			   uint32 msecs, uint32 hours, uint32 mins,
			   uint32 secs, uint32 hunds, uint32 zone,
			   uint32 tintervals, uint32 day, uint32 month,
			   uint32 year, uint32 weekday);
BOOL srv_io_r_net_remote_tod(char *desc, SRV_R_NET_REMOTE_TOD * r_n,
			     prs_struct *ps, int depth);

/*The following definitions come from  rpc_parse/parse_svc.c  */

BOOL make_svc_q_open_sc_man(SVC_Q_OPEN_SC_MAN * q_u,
			    const char *server, const char *database,
			    uint32 des_access);
BOOL svc_io_q_open_sc_man(char *desc, SVC_Q_OPEN_SC_MAN * q_u, prs_struct *ps,
			  int depth);
BOOL svc_io_r_open_sc_man(char *desc, SVC_R_OPEN_SC_MAN * r_u, prs_struct *ps,
			  int depth);
BOOL make_svc_q_open_service(SVC_Q_OPEN_SERVICE * q_u,
			     POLICY_HND *hnd,
			     const char *server, uint32 des_access);
BOOL svc_io_q_open_service(char *desc, SVC_Q_OPEN_SERVICE * q_u,
			   prs_struct *ps, int depth);
BOOL svc_io_r_open_service(char *desc, SVC_R_OPEN_SERVICE * r_u,
			   prs_struct *ps, int depth);
BOOL make_svc_q_stop_service(SVC_Q_STOP_SERVICE * q_c, POLICY_HND *hnd,
			     uint32 unk);
BOOL svc_io_q_stop_service(char *desc, SVC_Q_STOP_SERVICE * q_s,
			   prs_struct *ps, int depth);
BOOL svc_io_r_stop_service(char *desc, SVC_R_STOP_SERVICE * r_s,
			   prs_struct *ps, int depth);
BOOL make_svc_q_start_service(SVC_Q_START_SERVICE * q_c, POLICY_HND *hnd,
			      uint32 argc, char **argv);
BOOL svc_io_q_start_service(char *desc, SVC_Q_START_SERVICE * q_s,
			    prs_struct *ps, int depth);
BOOL svc_io_r_start_service(char *desc, SVC_R_START_SERVICE * r_s,
			    prs_struct *ps, int depth);
BOOL make_svc_query_svc_cfg(QUERY_SERVICE_CONFIG * q_u,
			    uint32 service_type, uint32 start_type,
			    uint32 error_control,
			    char *bin_path_name, char *load_order_grp,
			    uint32 tag_id,
			    char *dependencies, char *service_start_name,
			    char *disp_name);
BOOL svc_io_query_svc_cfg(char *desc, QUERY_SERVICE_CONFIG * q_u,
			  prs_struct *ps, int depth);
BOOL make_svc_q_enum_svcs_status(SVC_Q_ENUM_SVCS_STATUS * q_c,
				 POLICY_HND *hnd, uint32 service_type,
				 uint32 service_state, uint32 buf_size,
				 uint32 resume_hnd);
BOOL svc_io_q_enum_svcs_status(char *desc, SVC_Q_ENUM_SVCS_STATUS * q_u,
			       prs_struct *ps, int depth);
BOOL make_svc_r_enum_svcs_status(SVC_R_ENUM_SVCS_STATUS * r_c,
				 ENUM_SRVC_STATUS * svcs,
				 uint32 more_buf_size, uint32 num_svcs,
				 ENUM_HND * resume_hnd, uint32 dos_status);
BOOL svc_io_r_enum_svcs_status(char *desc, SVC_R_ENUM_SVCS_STATUS * svc,
			       prs_struct *ps, int depth);
BOOL svc_io_svc_status(char *desc, SVC_STATUS * svc, prs_struct *ps,
		       int depth);
BOOL make_svc_q_query_svc_config(SVC_Q_QUERY_SVC_CONFIG * q_c,
				 POLICY_HND *hnd, uint32 buf_size);
BOOL svc_io_q_query_svc_config(char *desc, SVC_Q_QUERY_SVC_CONFIG * q_u,
			       prs_struct *ps, int depth);
BOOL make_svc_r_query_svc_config(SVC_R_QUERY_SVC_CONFIG * r_c,
				 QUERY_SERVICE_CONFIG * cfg, uint32 buf_size);
BOOL svc_io_r_query_svc_config(char *desc, SVC_R_QUERY_SVC_CONFIG * r_u,
			       prs_struct *ps, int depth);
BOOL svc_io_q_query_disp_name(char *desc, SVC_Q_QUERY_DISP_NAME * q_u,
			      prs_struct *ps, int depth);
BOOL svc_io_r_query_disp_name(char *desc, SVC_R_QUERY_DISP_NAME * r_u,
			      prs_struct *ps, int depth);
BOOL make_svc_q_close(SVC_Q_CLOSE * q_c, POLICY_HND *hnd);
BOOL svc_io_q_close(char *desc, SVC_Q_CLOSE * q_u, prs_struct *ps, int depth);
BOOL svc_io_r_close(char *desc, SVC_R_CLOSE * r_u, prs_struct *ps, int depth);
BOOL make_svc_q_change_svc_config(SVC_Q_CHANGE_SVC_CONFIG * q_u,
				  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);
BOOL svc_io_q_change_svc_config(char *desc, SVC_Q_CHANGE_SVC_CONFIG * q_u,
				prs_struct *ps, int depth);
BOOL make_svc_r_change_svc_config(SVC_R_CHANGE_SVC_CONFIG * r_c,
				  uint32 unknown_0, uint32 status);
BOOL svc_io_r_change_svc_config(char *desc, SVC_R_CHANGE_SVC_CONFIG * r_u,
				prs_struct *ps, int depth);
BOOL svc_io_q_unknown_3(char *desc, SVC_Q_UNKNOWN_3 * q_u,
			prs_struct *ps, int depth);
BOOL svc_io_r_unknown_3(char *desc, SVC_R_UNKNOWN_3 * r_u,
			prs_struct *ps, int depth);

/*The following definitions come from  rpc_parse/parse_wks.c  */

BOOL make_wks_q_query_info(WKS_Q_QUERY_INFO *q_u,
				char *server, uint16 switch_value)  ;
BOOL wks_io_q_query_info(char *desc, WKS_Q_QUERY_INFO *q_u, prs_struct *ps, int depth);
BOOL make_wks_info_100(WKS_INFO_100 *inf,
				uint32 platform_id, uint32 ver_major, uint32 ver_minor,
				char *my_name, char *domain_name);
BOOL make_wks_r_query_info(WKS_R_QUERY_INFO *r_u,
				uint32 switch_value, WKS_INFO_100 *wks100,
				int status)  ;
BOOL wks_io_r_query_info(char *desc,  WKS_R_QUERY_INFO *r_u, prs_struct *ps, int depth);
#endif /* _RPC_PARSE_PROTO_H_ */