Fix samr_EnumDomainUsers in samba3, must not be a ref pointer here.
[samba.git] / source / librpc / gen_ndr / samr.h
1 /* header auto-generated by pidl */
2
3 #include <stdint.h>
4
5 #include "librpc/gen_ndr/misc.h"
6 #include "librpc/gen_ndr/lsa.h"
7 #include "librpc/gen_ndr/security.h"
8 #ifndef _HEADER_samr
9 #define _HEADER_samr
10
11 #define SAMR_ENUM_USERS_MULTIPLIER      ( 54 )
12 ;
13
14 /* bitmap samr_AcctFlags */
15 #define ACB_DISABLED ( 0x00000001 )
16 #define ACB_HOMDIRREQ ( 0x00000002 )
17 #define ACB_PWNOTREQ ( 0x00000004 )
18 #define ACB_TEMPDUP ( 0x00000008 )
19 #define ACB_NORMAL ( 0x00000010 )
20 #define ACB_MNS ( 0x00000020 )
21 #define ACB_DOMTRUST ( 0x00000040 )
22 #define ACB_WSTRUST ( 0x00000080 )
23 #define ACB_SVRTRUST ( 0x00000100 )
24 #define ACB_PWNOEXP ( 0x00000200 )
25 #define ACB_AUTOLOCK ( 0x00000400 )
26 #define ACB_ENC_TXT_PWD_ALLOWED ( 0x00000800 )
27 #define ACB_SMARTCARD_REQUIRED ( 0x00001000 )
28 #define ACB_TRUSTED_FOR_DELEGATION ( 0x00002000 )
29 #define ACB_NOT_DELEGATED ( 0x00004000 )
30 #define ACB_USE_DES_KEY_ONLY ( 0x00008000 )
31 #define ACB_DONT_REQUIRE_PREAUTH ( 0x00010000 )
32 #define ACB_PW_EXPIRED ( 0x00020000 )
33 #define ACB_NO_AUTH_DATA_REQD ( 0x00080000 )
34
35 ;
36
37 /* bitmap samr_ConnectAccessMask */
38 #define SAMR_ACCESS_CONNECT_TO_SERVER ( 0x00000001 )
39 #define SAMR_ACCESS_SHUTDOWN_SERVER ( 0x00000002 )
40 #define SAMR_ACCESS_INITIALIZE_SERVER ( 0x00000004 )
41 #define SAMR_ACCESS_CREATE_DOMAIN ( 0x00000008 )
42 #define SAMR_ACCESS_ENUM_DOMAINS ( 0x00000010 )
43 #define SAMR_ACCESS_OPEN_DOMAIN ( 0x00000020 )
44
45 ;
46
47 /* bitmap samr_UserAccessMask */
48 #define USER_ACCESS_GET_NAME_ETC ( 0x00000001 )
49 #define USER_ACCESS_GET_LOCALE ( 0x00000002 )
50 #define USER_ACCESS_SET_LOC_COM ( 0x00000004 )
51 #define USER_ACCESS_GET_LOGONINFO ( 0x00000008 )
52 #define USER_ACCESS_GET_ATTRIBUTES ( 0x00000010 )
53 #define USER_ACCESS_SET_ATTRIBUTES ( 0x00000020 )
54 #define USER_ACCESS_CHANGE_PASSWORD ( 0x00000040 )
55 #define USER_ACCESS_SET_PASSWORD ( 0x00000080 )
56 #define USER_ACCESS_GET_GROUPS ( 0x00000100 )
57 #define USER_ACCESS_GET_GROUP_MEMBERSHIP ( 0x00000200 )
58 #define USER_ACCESS_CHANGE_GROUP_MEMBERSHIP ( 0x00000400 )
59
60 ;
61
62 /* bitmap samr_DomainAccessMask */
63 #define DOMAIN_ACCESS_LOOKUP_INFO_1 ( 0x00000001 )
64 #define DOMAIN_ACCESS_SET_INFO_1 ( 0x00000002 )
65 #define DOMAIN_ACCESS_LOOKUP_INFO_2 ( 0x00000004 )
66 #define DOMAIN_ACCESS_SET_INFO_2 ( 0x00000008 )
67 #define DOMAIN_ACCESS_CREATE_USER ( 0x00000010 )
68 #define DOMAIN_ACCESS_CREATE_GROUP ( 0x00000020 )
69 #define DOMAIN_ACCESS_CREATE_ALIAS ( 0x00000040 )
70 #define DOMAIN_ACCESS_LOOKUP_ALIAS ( 0x00000080 )
71 #define DOMAIN_ACCESS_ENUM_ACCOUNTS ( 0x00000100 )
72 #define DOMAIN_ACCESS_OPEN_ACCOUNT ( 0x00000200 )
73 #define DOMAIN_ACCESS_SET_INFO_3 ( 0x00000400 )
74
75 ;
76
77 /* bitmap samr_GroupAccessMask */
78 #define GROUP_ACCESS_LOOKUP_INFO ( 0x00000001 )
79 #define GROUP_ACCESS_SET_INFO ( 0x00000002 )
80 #define GROUP_ACCESS_ADD_MEMBER ( 0x00000004 )
81 #define GROUP_ACCESS_REMOVE_MEMBER ( 0x00000008 )
82 #define GROUP_ACCESS_GET_MEMBERS ( 0x00000010 )
83
84 ;
85
86 /* bitmap samr_AliasAccessMask */
87 #define ALIAS_ACCESS_ADD_MEMBER ( 0x00000001 )
88 #define ALIAS_ACCESS_REMOVE_MEMBER ( 0x00000002 )
89 #define ALIAS_ACCESS_GET_MEMBERS ( 0x00000004 )
90 #define ALIAS_ACCESS_LOOKUP_INFO ( 0x00000008 )
91 #define ALIAS_ACCESS_SET_INFO ( 0x00000010 )
92
93 ;
94
95 struct samr_SamEntry {
96         uint32_t idx;
97         struct lsa_String name;
98 };
99
100 struct samr_SamArray {
101         uint32_t count;
102         struct samr_SamEntry *entries;/* [unique,size_is(count)] */
103 };
104
105 enum samr_Role
106 #ifndef USE_UINT_ENUMS
107  {
108         SAMR_ROLE_STANDALONE=0,
109         SAMR_ROLE_DOMAIN_MEMBER=1,
110         SAMR_ROLE_DOMAIN_BDC=2,
111         SAMR_ROLE_DOMAIN_PDC=3
112 }
113 #else
114  { __donnot_use_enum_samr_Role=0x7FFFFFFF}
115 #define SAMR_ROLE_STANDALONE ( 0 )
116 #define SAMR_ROLE_DOMAIN_MEMBER ( 1 )
117 #define SAMR_ROLE_DOMAIN_BDC ( 2 )
118 #define SAMR_ROLE_DOMAIN_PDC ( 3 )
119 #endif
120 ;
121
122 /* bitmap samr_PasswordProperties */
123 #define DOMAIN_PASSWORD_COMPLEX ( 0x00000001 )
124 #define DOMAIN_PASSWORD_NO_ANON_CHANGE ( 0x00000002 )
125 #define DOMAIN_PASSWORD_NO_CLEAR_CHANGE ( 0x00000004 )
126 #define DOMAIN_PASSWORD_LOCKOUT_ADMINS ( 0x00000008 )
127 #define DOMAIN_PASSWORD_STORE_CLEARTEXT ( 0x00000010 )
128 #define DOMAIN_REFUSE_PASSWORD_CHANGE ( 0x00000020 )
129
130 ;
131
132 struct samr_DomInfo1 {
133         uint16_t min_password_length;
134         uint16_t password_history_length;
135         uint32_t password_properties;
136         int64_t max_password_age;
137         int64_t min_password_age;
138 };
139
140 struct samr_DomInfo2 {
141         NTTIME force_logoff_time;
142         struct lsa_String comment;
143         struct lsa_String domain_name;
144         struct lsa_String primary;
145         uint64_t sequence_num;
146         uint32_t unknown2;
147         enum samr_Role role;
148         uint32_t unknown3;
149         uint32_t num_users;
150         uint32_t num_groups;
151         uint32_t num_aliases;
152 };
153
154 struct samr_DomInfo3 {
155         NTTIME force_logoff_time;
156 };
157
158 struct samr_DomInfo4 {
159         struct lsa_String comment;
160 };
161
162 struct samr_DomInfo5 {
163         struct lsa_String domain_name;
164 };
165
166 struct samr_DomInfo6 {
167         struct lsa_String primary;
168 };
169
170 struct samr_DomInfo7 {
171         enum samr_Role role;
172 };
173
174 struct samr_DomInfo8 {
175         uint64_t sequence_num;
176         NTTIME domain_create_time;
177 };
178
179 struct samr_DomInfo9 {
180         uint32_t unknown;
181 };
182
183 struct samr_DomInfo11 {
184         struct samr_DomInfo2 info2;
185         uint64_t lockout_duration;
186         uint64_t lockout_window;
187         uint16_t lockout_threshold;
188 };
189
190 struct samr_DomInfo12 {
191         uint64_t lockout_duration;
192         uint64_t lockout_window;
193         uint16_t lockout_threshold;
194 };
195
196 struct samr_DomInfo13 {
197         uint64_t sequence_num;
198         NTTIME domain_create_time;
199         uint32_t unknown1;
200         uint32_t unknown2;
201 };
202
203 union samr_DomainInfo {
204         struct samr_DomInfo1 info1;/* [case] */
205         struct samr_DomInfo2 info2;/* [case(2)] */
206         struct samr_DomInfo3 info3;/* [case(3)] */
207         struct samr_DomInfo4 info4;/* [case(4)] */
208         struct samr_DomInfo5 info5;/* [case(5)] */
209         struct samr_DomInfo6 info6;/* [case(6)] */
210         struct samr_DomInfo7 info7;/* [case(7)] */
211         struct samr_DomInfo8 info8;/* [case(8)] */
212         struct samr_DomInfo9 info9;/* [case(9)] */
213         struct samr_DomInfo11 info11;/* [case(11)] */
214         struct samr_DomInfo12 info12;/* [case(12)] */
215         struct samr_DomInfo13 info13;/* [case(13)] */
216 }/* [switch_type(uint16)] */;
217
218 struct samr_Ids {
219         uint32_t count;/* [range(0 1024)] */
220         uint32_t *ids;/* [unique,size_is(count)] */
221 };
222
223 /* bitmap samr_GroupAttrs */
224 #define SE_GROUP_MANDATORY ( 0x00000001 )
225 #define SE_GROUP_ENABLED_BY_DEFAULT ( 0x00000002 )
226 #define SE_GROUP_ENABLED ( 0x00000004 )
227 #define SE_GROUP_OWNER ( 0x00000008 )
228 #define SE_GROUP_USE_FOR_DENY_ONLY ( 0x00000010 )
229 #define SE_GROUP_RESOURCE ( 0x20000000 )
230 #define SE_GROUP_LOGON_ID ( 0xC0000000 )
231
232 ;
233
234 struct samr_GroupInfoAll {
235         struct lsa_String name;
236         uint32_t attributes;
237         uint32_t num_members;
238         struct lsa_String description;
239 };
240
241 struct samr_GroupInfoAttributes {
242         uint32_t attributes;
243 };
244
245 struct samr_GroupInfoDescription {
246         struct lsa_String description;
247 };
248
249 enum samr_GroupInfoEnum
250 #ifndef USE_UINT_ENUMS
251  {
252         GROUPINFOALL=1,
253         GROUPINFONAME=2,
254         GROUPINFOATTRIBUTES=3,
255         GROUPINFODESCRIPTION=4,
256         GROUPINFOALL2=5
257 }
258 #else
259  { __donnot_use_enum_samr_GroupInfoEnum=0x7FFFFFFF}
260 #define GROUPINFOALL ( 1 )
261 #define GROUPINFONAME ( 2 )
262 #define GROUPINFOATTRIBUTES ( 3 )
263 #define GROUPINFODESCRIPTION ( 4 )
264 #define GROUPINFOALL2 ( 5 )
265 #endif
266 ;
267
268 union samr_GroupInfo {
269         struct samr_GroupInfoAll all;/* [case(GROUPINFOALL)] */
270         struct lsa_String name;/* [case(GROUPINFONAME)] */
271         struct samr_GroupInfoAttributes attributes;/* [case(GROUPINFOATTRIBUTES)] */
272         struct lsa_String description;/* [case(GROUPINFODESCRIPTION)] */
273         struct samr_GroupInfoAll all2;/* [case(GROUPINFOALL2)] */
274 }/* [switch_type(samr_GroupInfoEnum)] */;
275
276 struct samr_RidTypeArray {
277         uint32_t count;
278         uint32_t *rids;/* [unique,size_is(count)] */
279         uint32_t *types;/* [unique,size_is(count)] */
280 };
281
282 struct samr_AliasInfoAll {
283         struct lsa_String name;
284         uint32_t num_members;
285         struct lsa_String description;
286 };
287
288 enum samr_AliasInfoEnum
289 #ifndef USE_UINT_ENUMS
290  {
291         ALIASINFOALL=1,
292         ALIASINFONAME=2,
293         ALIASINFODESCRIPTION=3
294 }
295 #else
296  { __donnot_use_enum_samr_AliasInfoEnum=0x7FFFFFFF}
297 #define ALIASINFOALL ( 1 )
298 #define ALIASINFONAME ( 2 )
299 #define ALIASINFODESCRIPTION ( 3 )
300 #endif
301 ;
302
303 union samr_AliasInfo {
304         struct samr_AliasInfoAll all;/* [case(ALIASINFOALL)] */
305         struct lsa_String name;/* [case(ALIASINFONAME)] */
306         struct lsa_String description;/* [case(ALIASINFODESCRIPTION)] */
307 }/* [switch_type(samr_AliasInfoEnum)] */;
308
309 struct samr_UserInfo1 {
310         struct lsa_String account_name;
311         struct lsa_String full_name;
312         uint32_t primary_gid;
313         struct lsa_String description;
314         struct lsa_String comment;
315 };
316
317 struct samr_UserInfo2 {
318         struct lsa_String comment;
319         struct lsa_String unknown;
320         uint16_t country_code;
321         uint16_t code_page;
322 };
323
324 struct samr_LogonHours {
325         uint16_t units_per_week;
326         uint8_t *bits;/* [unique,length_is(units_per_week/8),size_is(1260)] */
327 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
328
329 struct samr_UserInfo3 {
330         struct lsa_String account_name;
331         struct lsa_String full_name;
332         uint32_t rid;
333         uint32_t primary_gid;
334         struct lsa_String home_directory;
335         struct lsa_String home_drive;
336         struct lsa_String logon_script;
337         struct lsa_String profile_path;
338         struct lsa_String workstations;
339         NTTIME last_logon;
340         NTTIME last_logoff;
341         NTTIME last_password_change;
342         NTTIME allow_password_change;
343         NTTIME force_password_change;
344         struct samr_LogonHours logon_hours;
345         uint16_t bad_password_count;
346         uint16_t logon_count;
347         uint32_t acct_flags;
348 };
349
350 struct samr_UserInfo4 {
351         struct samr_LogonHours logon_hours;
352 };
353
354 struct samr_UserInfo5 {
355         struct lsa_String account_name;
356         struct lsa_String full_name;
357         uint32_t rid;
358         uint32_t primary_gid;
359         struct lsa_String home_directory;
360         struct lsa_String home_drive;
361         struct lsa_String logon_script;
362         struct lsa_String profile_path;
363         struct lsa_String description;
364         struct lsa_String workstations;
365         NTTIME last_logon;
366         NTTIME last_logoff;
367         struct samr_LogonHours logon_hours;
368         uint16_t bad_password_count;
369         uint16_t logon_count;
370         NTTIME last_password_change;
371         NTTIME acct_expiry;
372         uint32_t acct_flags;
373 };
374
375 struct samr_UserInfo6 {
376         struct lsa_String account_name;
377         struct lsa_String full_name;
378 };
379
380 struct samr_UserInfo7 {
381         struct lsa_String account_name;
382 };
383
384 struct samr_UserInfo8 {
385         struct lsa_String full_name;
386 };
387
388 struct samr_UserInfo9 {
389         uint32_t primary_gid;
390 };
391
392 struct samr_UserInfo10 {
393         struct lsa_String home_directory;
394         struct lsa_String home_drive;
395 };
396
397 struct samr_UserInfo11 {
398         struct lsa_String logon_script;
399 };
400
401 struct samr_UserInfo12 {
402         struct lsa_String profile_path;
403 };
404
405 struct samr_UserInfo13 {
406         struct lsa_String description;
407 };
408
409 struct samr_UserInfo14 {
410         struct lsa_String workstations;
411 };
412
413 struct samr_UserInfo16 {
414         uint32_t acct_flags;
415 };
416
417 struct samr_UserInfo17 {
418         NTTIME acct_expiry;
419 };
420
421 struct samr_UserInfo20 {
422         struct lsa_String parameters;
423 };
424
425 /* bitmap samr_FieldsPresent */
426 #define SAMR_FIELD_ACCOUNT_NAME ( 0x00000001 )
427 #define SAMR_FIELD_FULL_NAME ( 0x00000002 )
428 #define SAMR_FIELD_RID ( 0x00000004 )
429 #define SAMR_FIELD_PRIMARY_GID ( 0x00000008 )
430 #define SAMR_FIELD_DESCRIPTION ( 0x00000010 )
431 #define SAMR_FIELD_COMMENT ( 0x00000020 )
432 #define SAMR_FIELD_HOME_DIRECTORY ( 0x00000040 )
433 #define SAMR_FIELD_HOME_DRIVE ( 0x00000080 )
434 #define SAMR_FIELD_LOGON_SCRIPT ( 0x00000100 )
435 #define SAMR_FIELD_PROFILE_PATH ( 0x00000200 )
436 #define SAMR_FIELD_WORKSTATIONS ( 0x00000400 )
437 #define SAMR_FIELD_LAST_LOGON ( 0x00000800 )
438 #define SAMR_FIELD_LAST_LOGOFF ( 0x00001000 )
439 #define SAMR_FIELD_LOGON_HOURS ( 0x00002000 )
440 #define SAMR_FIELD_BAD_PWD_COUNT ( 0x00004000 )
441 #define SAMR_FIELD_NUM_LOGONS ( 0x00008000 )
442 #define SAMR_FIELD_ALLOW_PWD_CHANGE ( 0x00010000 )
443 #define SAMR_FIELD_FORCE_PWD_CHANGE ( 0x00020000 )
444 #define SAMR_FIELD_LAST_PWD_CHANGE ( 0x00040000 )
445 #define SAMR_FIELD_ACCT_EXPIRY ( 0x00080000 )
446 #define SAMR_FIELD_ACCT_FLAGS ( 0x00100000 )
447 #define SAMR_FIELD_PARAMETERS ( 0x00200000 )
448 #define SAMR_FIELD_COUNTRY_CODE ( 0x00400000 )
449 #define SAMR_FIELD_CODE_PAGE ( 0x00800000 )
450 #define SAMR_FIELD_PASSWORD ( 0x01000000 )
451 #define SAMR_FIELD_PASSWORD2 ( 0x02000000 )
452 #define SAMR_FIELD_PRIVATE_DATA ( 0x04000000 )
453 #define SAMR_FIELD_EXPIRED_FLAG ( 0x08000000 )
454 #define SAMR_FIELD_SEC_DESC ( 0x10000000 )
455 #define SAMR_FIELD_OWF_PWD ( 0x20000000 )
456
457 ;
458
459 struct samr_UserInfo21 {
460         NTTIME last_logon;
461         NTTIME last_logoff;
462         NTTIME last_password_change;
463         NTTIME acct_expiry;
464         NTTIME allow_password_change;
465         NTTIME force_password_change;
466         struct lsa_String account_name;
467         struct lsa_String full_name;
468         struct lsa_String home_directory;
469         struct lsa_String home_drive;
470         struct lsa_String logon_script;
471         struct lsa_String profile_path;
472         struct lsa_String description;
473         struct lsa_String workstations;
474         struct lsa_String comment;
475         struct lsa_String parameters;
476         struct lsa_String unknown1;
477         struct lsa_String unknown2;
478         struct lsa_String unknown3;
479         uint32_t buf_count;
480         uint8_t *buffer;/* [unique,size_is(buf_count)] */
481         uint32_t rid;
482         uint32_t primary_gid;
483         uint32_t acct_flags;
484         uint32_t fields_present;
485         struct samr_LogonHours logon_hours;
486         uint16_t bad_password_count;
487         uint16_t logon_count;
488         uint16_t country_code;
489         uint16_t code_page;
490         uint8_t nt_password_set;
491         uint8_t lm_password_set;
492         uint8_t password_expired;
493         uint8_t unknown4;
494 };
495
496 struct samr_CryptPassword {
497         uint8_t data[516];
498 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
499
500 struct samr_UserInfo23 {
501         struct samr_UserInfo21 info;
502         struct samr_CryptPassword password;
503 };
504
505 struct samr_UserInfo24 {
506         struct samr_CryptPassword password;
507         uint8_t pw_len;
508 };
509
510 struct samr_CryptPasswordEx {
511         uint8_t data[532];
512 }/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
513
514 struct samr_UserInfo25 {
515         struct samr_UserInfo21 info;
516         struct samr_CryptPasswordEx password;
517 };
518
519 struct samr_UserInfo26 {
520         struct samr_CryptPasswordEx password;
521         uint8_t pw_len;
522 };
523
524 union samr_UserInfo {
525         struct samr_UserInfo1 info1;/* [case] */
526         struct samr_UserInfo2 info2;/* [case(2)] */
527         struct samr_UserInfo3 info3;/* [case(3)] */
528         struct samr_UserInfo4 info4;/* [case(4)] */
529         struct samr_UserInfo5 info5;/* [case(5)] */
530         struct samr_UserInfo6 info6;/* [case(6)] */
531         struct samr_UserInfo7 info7;/* [case(7)] */
532         struct samr_UserInfo8 info8;/* [case(8)] */
533         struct samr_UserInfo9 info9;/* [case(9)] */
534         struct samr_UserInfo10 info10;/* [case(10)] */
535         struct samr_UserInfo11 info11;/* [case(11)] */
536         struct samr_UserInfo12 info12;/* [case(12)] */
537         struct samr_UserInfo13 info13;/* [case(13)] */
538         struct samr_UserInfo14 info14;/* [case(14)] */
539         struct samr_UserInfo16 info16;/* [case(16)] */
540         struct samr_UserInfo17 info17;/* [case(17)] */
541         struct samr_UserInfo20 info20;/* [case(20)] */
542         struct samr_UserInfo21 info21;/* [case(21)] */
543         struct samr_UserInfo23 info23;/* [case(23)] */
544         struct samr_UserInfo24 info24;/* [case(24)] */
545         struct samr_UserInfo25 info25;/* [case(25)] */
546         struct samr_UserInfo26 info26;/* [case(26)] */
547 }/* [switch_type(uint16)] */;
548
549 struct samr_Password {
550         uint8_t hash[16];
551 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
552
553 struct samr_RidWithAttribute {
554         uint32_t rid;
555         uint32_t attributes;
556 }/* [public] */;
557
558 struct samr_RidWithAttributeArray {
559         uint32_t count;
560         struct samr_RidWithAttribute *rids;/* [unique,size_is(count)] */
561 }/* [public] */;
562
563 struct samr_DispEntryGeneral {
564         uint32_t idx;
565         uint32_t rid;
566         uint32_t acct_flags;
567         struct lsa_String account_name;
568         struct lsa_String description;
569         struct lsa_String full_name;
570 };
571
572 struct samr_DispInfoGeneral {
573         uint32_t count;
574         struct samr_DispEntryGeneral *entries;/* [unique,size_is(count)] */
575 };
576
577 struct samr_DispEntryFull {
578         uint32_t idx;
579         uint32_t rid;
580         uint32_t acct_flags;
581         struct lsa_String account_name;
582         struct lsa_String description;
583 };
584
585 struct samr_DispInfoFull {
586         uint32_t count;
587         struct samr_DispEntryFull *entries;/* [unique,size_is(count)] */
588 };
589
590 struct samr_DispEntryFullGroup {
591         uint32_t idx;
592         uint32_t rid;
593         uint32_t acct_flags;
594         struct lsa_String account_name;
595         struct lsa_String description;
596 };
597
598 struct samr_DispInfoFullGroups {
599         uint32_t count;
600         struct samr_DispEntryFullGroup *entries;/* [unique,size_is(count)] */
601 };
602
603 struct samr_DispEntryAscii {
604         uint32_t idx;
605         struct lsa_AsciiString account_name;
606 };
607
608 struct samr_DispInfoAscii {
609         uint32_t count;
610         struct samr_DispEntryAscii *entries;/* [unique,size_is(count)] */
611 };
612
613 union samr_DispInfo {
614         struct samr_DispInfoGeneral info1;/* [case] */
615         struct samr_DispInfoFull info2;/* [case(2)] */
616         struct samr_DispInfoFullGroups info3;/* [case(3)] */
617         struct samr_DispInfoAscii info4;/* [case(4)] */
618         struct samr_DispInfoAscii info5;/* [case(5)] */
619 }/* [switch_type(uint16)] */;
620
621 struct samr_PwInfo {
622         uint16_t min_password_length;
623         uint32_t password_properties;
624 };
625
626 enum samr_RejectReason;
627
628 struct samr_ChangeReject {
629         enum samr_RejectReason reason;
630         uint32_t unknown1;
631         uint32_t unknown2;
632 };
633
634 struct samr_ConnectInfo1 {
635         uint32_t unknown1;
636         uint32_t unknown2;
637 };
638
639 union samr_ConnectInfo {
640         struct samr_ConnectInfo1 info1;/* [case] */
641 };
642
643 /* bitmap samr_ValidateFieldsPresent */
644 #define SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET ( 0x00000001 )
645 #define SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME ( 0x00000002 )
646 #define SAMR_VALIDATE_FIELD_LOCKOUT_TIME ( 0x00000004 )
647 #define SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT ( 0x00000008 )
648 #define SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH ( 0x00000010 )
649 #define SAMR_VALIDATE_FIELD_PASSWORD_HISTORY ( 0x00000020 )
650
651 ;
652
653 enum samr_ValidatePasswordLevel
654 #ifndef USE_UINT_ENUMS
655  {
656         NetValidateAuthentication=1,
657         NetValidatePasswordChange=2,
658         NetValidatePasswordReset=3
659 }
660 #else
661  { __donnot_use_enum_samr_ValidatePasswordLevel=0x7FFFFFFF}
662 #define NetValidateAuthentication ( 1 )
663 #define NetValidatePasswordChange ( 2 )
664 #define NetValidatePasswordReset ( 3 )
665 #endif
666 ;
667
668 enum samr_ValidationStatus
669 #ifndef USE_UINT_ENUMS
670  {
671         SAMR_VALIDATION_STATUS_SUCCESS=0,
672         SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE=1,
673         SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT=2,
674         SAMR_VALIDATION_STATUS_BAD_PASSWORD=4,
675         SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT=5,
676         SAMR_VALIDATION_STATUS_PWD_TOO_SHORT=6,
677         SAMR_VALIDATION_STATUS_PWD_TOO_LONG=7,
678         SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH=8,
679         SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT=9
680 }
681 #else
682  { __donnot_use_enum_samr_ValidationStatus=0x7FFFFFFF}
683 #define SAMR_VALIDATION_STATUS_SUCCESS ( 0 )
684 #define SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE ( 1 )
685 #define SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT ( 2 )
686 #define SAMR_VALIDATION_STATUS_BAD_PASSWORD ( 4 )
687 #define SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT ( 5 )
688 #define SAMR_VALIDATION_STATUS_PWD_TOO_SHORT ( 6 )
689 #define SAMR_VALIDATION_STATUS_PWD_TOO_LONG ( 7 )
690 #define SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH ( 8 )
691 #define SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT ( 9 )
692 #endif
693 ;
694
695 struct samr_ValidationBlob {
696         uint32_t length;
697         uint8_t *data;/* [unique,size_is(length)] */
698 };
699
700 struct samr_ValidatePasswordInfo {
701         uint32_t fields_present;
702         NTTIME last_password_change;
703         NTTIME bad_password_time;
704         NTTIME lockout_time;
705         uint32_t bad_pwd_count;
706         uint32_t pwd_history_len;
707         struct samr_ValidationBlob *pwd_history;/* [unique,size_is(pwd_history_len)] */
708 };
709
710 struct samr_ValidatePasswordRepCtr {
711         struct samr_ValidatePasswordInfo info;
712         enum samr_ValidationStatus status;
713 };
714
715 union samr_ValidatePasswordRep {
716         struct samr_ValidatePasswordRepCtr ctr1;/* [case] */
717         struct samr_ValidatePasswordRepCtr ctr2;/* [case(2)] */
718         struct samr_ValidatePasswordRepCtr ctr3;/* [case(3)] */
719 }/* [switch_type(uint16)] */;
720
721 struct samr_ValidatePasswordReq3 {
722         struct samr_ValidatePasswordInfo info;
723         struct lsa_StringLarge password;
724         struct lsa_StringLarge account;
725         struct samr_ValidationBlob hash;
726         uint8_t pwd_must_change_at_next_logon;
727         uint8_t clear_lockout;
728 };
729
730 struct samr_ValidatePasswordReq2 {
731         struct samr_ValidatePasswordInfo info;
732         struct lsa_StringLarge password;
733         struct lsa_StringLarge account;
734         struct samr_ValidationBlob hash;
735         uint8_t password_matched;
736 };
737
738 struct samr_ValidatePasswordReq1 {
739         struct samr_ValidatePasswordInfo info;
740         uint8_t password_matched;
741 };
742
743 union samr_ValidatePasswordReq {
744         struct samr_ValidatePasswordReq1 req1;/* [case] */
745         struct samr_ValidatePasswordReq2 req2;/* [case(2)] */
746         struct samr_ValidatePasswordReq3 req3;/* [case(3)] */
747 }/* [switch_type(uint16)] */;
748
749
750 struct samr_Connect {
751         struct {
752                 uint16_t *system_name;/* [unique] */
753                 uint32_t access_mask;
754         } in;
755
756         struct {
757                 struct policy_handle *connect_handle;/* [ref] */
758                 NTSTATUS result;
759         } out;
760
761 };
762
763
764 struct samr_Close {
765         struct {
766                 struct policy_handle *handle;/* [ref] */
767         } in;
768
769         struct {
770                 struct policy_handle *handle;/* [ref] */
771                 NTSTATUS result;
772         } out;
773
774 };
775
776
777 struct samr_SetSecurity {
778         struct {
779                 struct policy_handle *handle;/* [ref] */
780                 uint32_t sec_info;
781                 struct sec_desc_buf *sdbuf;/* [ref] */
782         } in;
783
784         struct {
785                 NTSTATUS result;
786         } out;
787
788 };
789
790
791 struct samr_QuerySecurity {
792         struct {
793                 struct policy_handle *handle;/* [ref] */
794                 uint32_t sec_info;
795         } in;
796
797         struct {
798                 struct sec_desc_buf *sdbuf;/* [ref] */
799                 NTSTATUS result;
800         } out;
801
802 };
803
804
805 struct samr_Shutdown {
806         struct {
807                 struct policy_handle *connect_handle;/* [ref] */
808         } in;
809
810         struct {
811                 NTSTATUS result;
812         } out;
813
814 };
815
816
817 struct samr_LookupDomain {
818         struct {
819                 struct policy_handle *connect_handle;/* [ref] */
820                 struct lsa_String *domain_name;/* [ref] */
821         } in;
822
823         struct {
824                 struct dom_sid2 *sid;/* [ref] */
825                 NTSTATUS result;
826         } out;
827
828 };
829
830
831 struct samr_EnumDomains {
832         struct {
833                 struct policy_handle *connect_handle;/* [ref] */
834                 uint32_t buf_size;
835                 uint32_t *resume_handle;/* [ref] */
836         } in;
837
838         struct {
839                 struct samr_SamArray *sam;/* [ref] */
840                 uint32_t *num_entries;/* [ref] */
841                 uint32_t *resume_handle;/* [ref] */
842                 NTSTATUS result;
843         } out;
844
845 };
846
847
848 struct samr_OpenDomain {
849         struct {
850                 struct policy_handle *connect_handle;/* [ref] */
851                 uint32_t access_mask;
852                 struct dom_sid2 *sid;/* [ref] */
853         } in;
854
855         struct {
856                 struct policy_handle *domain_handle;/* [ref] */
857                 NTSTATUS result;
858         } out;
859
860 };
861
862
863 struct samr_QueryDomainInfo {
864         struct {
865                 struct policy_handle *domain_handle;/* [ref] */
866                 uint16_t level;
867         } in;
868
869         struct {
870                 union samr_DomainInfo *info;/* [ref,switch_is(level)] */
871                 NTSTATUS result;
872         } out;
873
874 };
875
876
877 struct samr_SetDomainInfo {
878         struct {
879                 struct policy_handle *domain_handle;/* [ref] */
880                 uint16_t level;
881                 union samr_DomainInfo *info;/* [ref,switch_is(level)] */
882         } in;
883
884         struct {
885                 NTSTATUS result;
886         } out;
887
888 };
889
890
891 struct samr_CreateDomainGroup {
892         struct {
893                 struct policy_handle *domain_handle;/* [ref] */
894                 struct lsa_String *name;/* [ref] */
895                 uint32_t access_mask;
896         } in;
897
898         struct {
899                 struct policy_handle *group_handle;/* [ref] */
900                 uint32_t *rid;/* [ref] */
901                 NTSTATUS result;
902         } out;
903
904 };
905
906
907 struct samr_EnumDomainGroups {
908         struct {
909                 struct policy_handle *domain_handle;/* [ref] */
910                 uint32_t max_size;
911                 uint32_t *resume_handle;/* [ref] */
912         } in;
913
914         struct {
915                 struct samr_SamArray *sam;/* [ref] */
916                 uint32_t *num_entries;/* [ref] */
917                 uint32_t *resume_handle;/* [ref] */
918                 NTSTATUS result;
919         } out;
920
921 };
922
923
924 struct samr_CreateUser {
925         struct {
926                 struct policy_handle *domain_handle;/* [ref] */
927                 struct lsa_String *account_name;/* [ref] */
928                 uint32_t access_mask;
929         } in;
930
931         struct {
932                 struct policy_handle *user_handle;/* [ref] */
933                 uint32_t *rid;/* [ref] */
934                 NTSTATUS result;
935         } out;
936
937 };
938
939
940 struct samr_EnumDomainUsers {
941         struct {
942                 struct policy_handle *domain_handle;/* [ref] */
943                 uint32_t acct_flags;
944                 uint32_t max_size;
945                 uint32_t *resume_handle;/* [ref] */
946         } in;
947
948         struct {
949                 struct samr_SamArray *sam;/* [unique] */
950                 uint32_t *num_entries;/* [ref] */
951                 uint32_t *resume_handle;/* [ref] */
952                 NTSTATUS result;
953         } out;
954
955 };
956
957
958 struct samr_CreateDomAlias {
959         struct {
960                 struct policy_handle *domain_handle;/* [ref] */
961                 struct lsa_String *alias_name;/* [ref] */
962                 uint32_t access_mask;
963         } in;
964
965         struct {
966                 struct policy_handle *alias_handle;/* [ref] */
967                 uint32_t *rid;/* [ref] */
968                 NTSTATUS result;
969         } out;
970
971 };
972
973
974 struct samr_EnumDomainAliases {
975         struct {
976                 struct policy_handle *domain_handle;/* [ref] */
977                 uint32_t acct_flags;
978                 uint32_t *resume_handle;/* [ref] */
979         } in;
980
981         struct {
982                 struct samr_SamArray *sam;/* [ref] */
983                 uint32_t *num_entries;/* [ref] */
984                 uint32_t *resume_handle;/* [ref] */
985                 NTSTATUS result;
986         } out;
987
988 };
989
990
991 struct samr_GetAliasMembership {
992         struct {
993                 struct policy_handle *domain_handle;/* [ref] */
994                 struct lsa_SidArray *sids;/* [ref] */
995         } in;
996
997         struct {
998                 struct samr_Ids *rids;/* [ref] */
999                 NTSTATUS result;
1000         } out;
1001
1002 };
1003
1004
1005 struct samr_LookupNames {
1006         struct {
1007                 struct policy_handle *domain_handle;/* [ref] */
1008                 uint32_t num_names;/* [range(0 1000)] */
1009                 struct lsa_String *names;/* [length_is(num_names),size_is(1000)] */
1010         } in;
1011
1012         struct {
1013                 struct samr_Ids *rids;/* [ref] */
1014                 struct samr_Ids *types;/* [ref] */
1015                 NTSTATUS result;
1016         } out;
1017
1018 };
1019
1020
1021 struct samr_LookupRids {
1022         struct {
1023                 struct policy_handle *domain_handle;/* [ref] */
1024                 uint32_t num_rids;/* [range(0 1000)] */
1025                 uint32_t *rids;/* [length_is(num_rids),size_is(1000)] */
1026         } in;
1027
1028         struct {
1029                 struct lsa_Strings *names;/* [ref] */
1030                 struct samr_Ids *types;/* [ref] */
1031                 NTSTATUS result;
1032         } out;
1033
1034 };
1035
1036
1037 struct samr_OpenGroup {
1038         struct {
1039                 struct policy_handle *domain_handle;/* [ref] */
1040                 uint32_t access_mask;
1041                 uint32_t rid;
1042         } in;
1043
1044         struct {
1045                 struct policy_handle *group_handle;/* [ref] */
1046                 NTSTATUS result;
1047         } out;
1048
1049 };
1050
1051
1052 struct samr_QueryGroupInfo {
1053         struct {
1054                 struct policy_handle *group_handle;/* [ref] */
1055                 enum samr_GroupInfoEnum level;
1056         } in;
1057
1058         struct {
1059                 union samr_GroupInfo *info;/* [ref,switch_is(level)] */
1060                 NTSTATUS result;
1061         } out;
1062
1063 };
1064
1065
1066 struct samr_SetGroupInfo {
1067         struct {
1068                 struct policy_handle *group_handle;/* [ref] */
1069                 enum samr_GroupInfoEnum level;
1070                 union samr_GroupInfo *info;/* [ref,switch_is(level)] */
1071         } in;
1072
1073         struct {
1074                 NTSTATUS result;
1075         } out;
1076
1077 };
1078
1079
1080 struct samr_AddGroupMember {
1081         struct {
1082                 struct policy_handle *group_handle;/* [ref] */
1083                 uint32_t rid;
1084                 uint32_t flags;
1085         } in;
1086
1087         struct {
1088                 NTSTATUS result;
1089         } out;
1090
1091 };
1092
1093
1094 struct samr_DeleteDomainGroup {
1095         struct {
1096                 struct policy_handle *group_handle;/* [ref] */
1097         } in;
1098
1099         struct {
1100                 struct policy_handle *group_handle;/* [ref] */
1101                 NTSTATUS result;
1102         } out;
1103
1104 };
1105
1106
1107 struct samr_DeleteGroupMember {
1108         struct {
1109                 struct policy_handle *group_handle;/* [ref] */
1110                 uint32_t rid;
1111         } in;
1112
1113         struct {
1114                 NTSTATUS result;
1115         } out;
1116
1117 };
1118
1119
1120 struct samr_QueryGroupMember {
1121         struct {
1122                 struct policy_handle *group_handle;/* [ref] */
1123         } in;
1124
1125         struct {
1126                 struct samr_RidTypeArray *rids;/* [ref] */
1127                 NTSTATUS result;
1128         } out;
1129
1130 };
1131
1132
1133 struct samr_SetMemberAttributesOfGroup {
1134         struct {
1135                 struct policy_handle *group_handle;/* [ref] */
1136                 uint32_t unknown1;
1137                 uint32_t unknown2;
1138         } in;
1139
1140         struct {
1141                 NTSTATUS result;
1142         } out;
1143
1144 };
1145
1146
1147 struct samr_OpenAlias {
1148         struct {
1149                 struct policy_handle *domain_handle;/* [ref] */
1150                 uint32_t access_mask;
1151                 uint32_t rid;
1152         } in;
1153
1154         struct {
1155                 struct policy_handle *alias_handle;/* [ref] */
1156                 NTSTATUS result;
1157         } out;
1158
1159 };
1160
1161
1162 struct samr_QueryAliasInfo {
1163         struct {
1164                 struct policy_handle *alias_handle;/* [ref] */
1165                 enum samr_AliasInfoEnum level;
1166         } in;
1167
1168         struct {
1169                 union samr_AliasInfo *info;/* [ref,switch_is(level)] */
1170                 NTSTATUS result;
1171         } out;
1172
1173 };
1174
1175
1176 struct samr_SetAliasInfo {
1177         struct {
1178                 struct policy_handle *alias_handle;/* [ref] */
1179                 enum samr_AliasInfoEnum level;
1180                 union samr_AliasInfo *info;/* [ref,switch_is(level)] */
1181         } in;
1182
1183         struct {
1184                 NTSTATUS result;
1185         } out;
1186
1187 };
1188
1189
1190 struct samr_DeleteDomAlias {
1191         struct {
1192                 struct policy_handle *alias_handle;/* [ref] */
1193         } in;
1194
1195         struct {
1196                 struct policy_handle *alias_handle;/* [ref] */
1197                 NTSTATUS result;
1198         } out;
1199
1200 };
1201
1202
1203 struct samr_AddAliasMember {
1204         struct {
1205                 struct policy_handle *alias_handle;/* [ref] */
1206                 struct dom_sid2 *sid;/* [ref] */
1207         } in;
1208
1209         struct {
1210                 NTSTATUS result;
1211         } out;
1212
1213 };
1214
1215
1216 struct samr_DeleteAliasMember {
1217         struct {
1218                 struct policy_handle *alias_handle;/* [ref] */
1219                 struct dom_sid2 *sid;/* [ref] */
1220         } in;
1221
1222         struct {
1223                 NTSTATUS result;
1224         } out;
1225
1226 };
1227
1228
1229 struct samr_GetMembersInAlias {
1230         struct {
1231                 struct policy_handle *alias_handle;/* [ref] */
1232         } in;
1233
1234         struct {
1235                 struct lsa_SidArray *sids;/* [ref] */
1236                 NTSTATUS result;
1237         } out;
1238
1239 };
1240
1241
1242 struct samr_OpenUser {
1243         struct {
1244                 struct policy_handle *domain_handle;/* [ref] */
1245                 uint32_t access_mask;
1246                 uint32_t rid;
1247         } in;
1248
1249         struct {
1250                 struct policy_handle *user_handle;/* [ref] */
1251                 NTSTATUS result;
1252         } out;
1253
1254 };
1255
1256
1257 struct samr_DeleteUser {
1258         struct {
1259                 struct policy_handle *user_handle;/* [ref] */
1260         } in;
1261
1262         struct {
1263                 struct policy_handle *user_handle;/* [ref] */
1264                 NTSTATUS result;
1265         } out;
1266
1267 };
1268
1269
1270 struct samr_QueryUserInfo {
1271         struct {
1272                 struct policy_handle *user_handle;/* [ref] */
1273                 uint16_t level;
1274         } in;
1275
1276         struct {
1277                 union samr_UserInfo *info;/* [ref,switch_is(level)] */
1278                 NTSTATUS result;
1279         } out;
1280
1281 };
1282
1283
1284 struct samr_SetUserInfo {
1285         struct {
1286                 struct policy_handle *user_handle;/* [ref] */
1287                 uint16_t level;
1288                 union samr_UserInfo *info;/* [ref,switch_is(level)] */
1289         } in;
1290
1291         struct {
1292                 NTSTATUS result;
1293         } out;
1294
1295 };
1296
1297
1298 struct samr_ChangePasswordUser {
1299         struct {
1300                 struct policy_handle *user_handle;/* [ref] */
1301                 uint8_t lm_present;
1302                 struct samr_Password *old_lm_crypted;/* [unique] */
1303                 struct samr_Password *new_lm_crypted;/* [unique] */
1304                 uint8_t nt_present;
1305                 struct samr_Password *old_nt_crypted;/* [unique] */
1306                 struct samr_Password *new_nt_crypted;/* [unique] */
1307                 uint8_t cross1_present;
1308                 struct samr_Password *nt_cross;/* [unique] */
1309                 uint8_t cross2_present;
1310                 struct samr_Password *lm_cross;/* [unique] */
1311         } in;
1312
1313         struct {
1314                 NTSTATUS result;
1315         } out;
1316
1317 };
1318
1319
1320 struct samr_GetGroupsForUser {
1321         struct {
1322                 struct policy_handle *user_handle;/* [ref] */
1323         } in;
1324
1325         struct {
1326                 struct samr_RidWithAttributeArray *rids;/* [ref] */
1327                 NTSTATUS result;
1328         } out;
1329
1330 };
1331
1332
1333 struct samr_QueryDisplayInfo {
1334         struct {
1335                 struct policy_handle *domain_handle;/* [ref] */
1336                 uint16_t level;
1337                 uint32_t start_idx;
1338                 uint32_t max_entries;
1339                 uint32_t buf_size;
1340         } in;
1341
1342         struct {
1343                 uint32_t *total_size;/* [ref] */
1344                 uint32_t *returned_size;/* [ref] */
1345                 union samr_DispInfo *info;/* [ref,switch_is(level)] */
1346                 NTSTATUS result;
1347         } out;
1348
1349 };
1350
1351
1352 struct samr_GetDisplayEnumerationIndex {
1353         struct {
1354                 struct policy_handle *domain_handle;/* [ref] */
1355                 uint16_t level;
1356                 struct lsa_String name;
1357         } in;
1358
1359         struct {
1360                 uint32_t *idx;/* [ref] */
1361                 NTSTATUS result;
1362         } out;
1363
1364 };
1365
1366
1367 struct samr_TestPrivateFunctionsDomain {
1368         struct {
1369                 struct policy_handle *domain_handle;/* [ref] */
1370         } in;
1371
1372         struct {
1373                 NTSTATUS result;
1374         } out;
1375
1376 };
1377
1378
1379 struct samr_TestPrivateFunctionsUser {
1380         struct {
1381                 struct policy_handle *user_handle;/* [ref] */
1382         } in;
1383
1384         struct {
1385                 NTSTATUS result;
1386         } out;
1387
1388 };
1389
1390
1391 struct samr_GetUserPwInfo {
1392         struct {
1393                 struct policy_handle *user_handle;/* [ref] */
1394         } in;
1395
1396         struct {
1397                 struct samr_PwInfo *info;/* [ref] */
1398                 NTSTATUS result;
1399         } out;
1400
1401 };
1402
1403
1404 struct samr_RemoveMemberFromForeignDomain {
1405         struct {
1406                 struct policy_handle *domain_handle;/* [ref] */
1407                 struct dom_sid2 *sid;/* [ref] */
1408         } in;
1409
1410         struct {
1411                 NTSTATUS result;
1412         } out;
1413
1414 };
1415
1416
1417 struct samr_QueryDomainInfo2 {
1418         struct {
1419                 struct policy_handle *domain_handle;/* [ref] */
1420                 uint16_t level;
1421         } in;
1422
1423         struct {
1424                 union samr_DomainInfo *info;/* [ref,switch_is(level)] */
1425                 NTSTATUS result;
1426         } out;
1427
1428 };
1429
1430
1431 struct samr_QueryUserInfo2 {
1432         struct {
1433                 struct policy_handle *user_handle;/* [ref] */
1434                 uint16_t level;
1435         } in;
1436
1437         struct {
1438                 union samr_UserInfo *info;/* [ref,switch_is(level)] */
1439                 NTSTATUS result;
1440         } out;
1441
1442 };
1443
1444
1445 struct samr_QueryDisplayInfo2 {
1446         struct {
1447                 struct policy_handle *domain_handle;/* [ref] */
1448                 uint16_t level;
1449                 uint32_t start_idx;
1450                 uint32_t max_entries;
1451                 uint32_t buf_size;
1452         } in;
1453
1454         struct {
1455                 uint32_t *total_size;/* [ref] */
1456                 uint32_t *returned_size;/* [ref] */
1457                 union samr_DispInfo *info;/* [ref,switch_is(level)] */
1458                 NTSTATUS result;
1459         } out;
1460
1461 };
1462
1463
1464 struct samr_GetDisplayEnumerationIndex2 {
1465         struct {
1466                 struct policy_handle *domain_handle;/* [ref] */
1467                 uint16_t level;
1468                 struct lsa_String name;
1469         } in;
1470
1471         struct {
1472                 uint32_t *idx;/* [ref] */
1473                 NTSTATUS result;
1474         } out;
1475
1476 };
1477
1478
1479 struct samr_CreateUser2 {
1480         struct {
1481                 struct policy_handle *domain_handle;/* [ref] */
1482                 struct lsa_String *account_name;/* [ref] */
1483                 uint32_t acct_flags;
1484                 uint32_t access_mask;
1485         } in;
1486
1487         struct {
1488                 struct policy_handle *user_handle;/* [ref] */
1489                 uint32_t *access_granted;/* [ref] */
1490                 uint32_t *rid;/* [ref] */
1491                 NTSTATUS result;
1492         } out;
1493
1494 };
1495
1496
1497 struct samr_QueryDisplayInfo3 {
1498         struct {
1499                 struct policy_handle *domain_handle;/* [ref] */
1500                 uint16_t level;
1501                 uint32_t start_idx;
1502                 uint32_t max_entries;
1503                 uint32_t buf_size;
1504         } in;
1505
1506         struct {
1507                 uint32_t *total_size;/* [ref] */
1508                 uint32_t *returned_size;/* [ref] */
1509                 union samr_DispInfo *info;/* [ref,switch_is(level)] */
1510                 NTSTATUS result;
1511         } out;
1512
1513 };
1514
1515
1516 struct samr_AddMultipleMembersToAlias {
1517         struct {
1518                 struct policy_handle *alias_handle;/* [ref] */
1519                 struct lsa_SidArray *sids;/* [ref] */
1520         } in;
1521
1522         struct {
1523                 NTSTATUS result;
1524         } out;
1525
1526 };
1527
1528
1529 struct samr_RemoveMultipleMembersFromAlias {
1530         struct {
1531                 struct policy_handle *alias_handle;/* [ref] */
1532                 struct lsa_SidArray *sids;/* [ref] */
1533         } in;
1534
1535         struct {
1536                 NTSTATUS result;
1537         } out;
1538
1539 };
1540
1541
1542 struct samr_OemChangePasswordUser2 {
1543         struct {
1544                 struct lsa_AsciiString *server;/* [unique] */
1545                 struct lsa_AsciiString *account;/* [ref] */
1546                 struct samr_CryptPassword *password;/* [unique] */
1547                 struct samr_Password *hash;/* [unique] */
1548         } in;
1549
1550         struct {
1551                 NTSTATUS result;
1552         } out;
1553
1554 };
1555
1556
1557 struct samr_ChangePasswordUser2 {
1558         struct {
1559                 struct lsa_String *server;/* [unique] */
1560                 struct lsa_String *account;/* [ref] */
1561                 struct samr_CryptPassword *nt_password;/* [unique] */
1562                 struct samr_Password *nt_verifier;/* [unique] */
1563                 uint8_t lm_change;
1564                 struct samr_CryptPassword *lm_password;/* [unique] */
1565                 struct samr_Password *lm_verifier;/* [unique] */
1566         } in;
1567
1568         struct {
1569                 NTSTATUS result;
1570         } out;
1571
1572 };
1573
1574
1575 struct samr_GetDomPwInfo {
1576         struct {
1577                 struct lsa_String *domain_name;/* [unique] */
1578         } in;
1579
1580         struct {
1581                 struct samr_PwInfo *info;/* [ref] */
1582                 NTSTATUS result;
1583         } out;
1584
1585 };
1586
1587
1588 struct samr_Connect2 {
1589         struct {
1590                 const char *system_name;/* [unique,charset(UTF16)] */
1591                 uint32_t access_mask;
1592         } in;
1593
1594         struct {
1595                 struct policy_handle *connect_handle;/* [ref] */
1596                 NTSTATUS result;
1597         } out;
1598
1599 };
1600
1601
1602 struct samr_SetUserInfo2 {
1603         struct {
1604                 struct policy_handle *user_handle;/* [ref] */
1605                 uint16_t level;
1606                 union samr_UserInfo *info;/* [ref,switch_is(level)] */
1607         } in;
1608
1609         struct {
1610                 NTSTATUS result;
1611         } out;
1612
1613 };
1614
1615
1616 struct samr_SetBootKeyInformation {
1617         struct {
1618                 struct policy_handle *connect_handle;/* [ref] */
1619                 uint32_t unknown1;
1620                 uint32_t unknown2;
1621                 uint32_t unknown3;
1622         } in;
1623
1624         struct {
1625                 NTSTATUS result;
1626         } out;
1627
1628 };
1629
1630
1631 struct samr_GetBootKeyInformation {
1632         struct {
1633                 struct policy_handle *domain_handle;/* [ref] */
1634         } in;
1635
1636         struct {
1637                 uint32_t *unknown;/* [ref] */
1638                 NTSTATUS result;
1639         } out;
1640
1641 };
1642
1643
1644 struct samr_Connect3 {
1645         struct {
1646                 const char *system_name;/* [unique,charset(UTF16)] */
1647                 uint32_t unknown;
1648                 uint32_t access_mask;
1649         } in;
1650
1651         struct {
1652                 struct policy_handle *connect_handle;/* [ref] */
1653                 NTSTATUS result;
1654         } out;
1655
1656 };
1657
1658
1659 struct samr_Connect4 {
1660         struct {
1661                 const char *system_name;/* [unique,charset(UTF16)] */
1662                 uint32_t unknown;
1663                 uint32_t access_mask;
1664         } in;
1665
1666         struct {
1667                 struct policy_handle *connect_handle;/* [ref] */
1668                 NTSTATUS result;
1669         } out;
1670
1671 };
1672
1673
1674 struct samr_ChangePasswordUser3 {
1675         struct {
1676                 struct lsa_String *server;/* [unique] */
1677                 struct lsa_String *account;/* [ref] */
1678                 struct samr_CryptPassword *nt_password;/* [unique] */
1679                 struct samr_Password *nt_verifier;/* [unique] */
1680                 uint8_t lm_change;
1681                 struct samr_CryptPassword *lm_password;/* [unique] */
1682                 struct samr_Password *lm_verifier;/* [unique] */
1683                 struct samr_CryptPassword *password3;/* [unique] */
1684         } in;
1685
1686         struct {
1687                 struct samr_DomInfo1 *dominfo;/* [ref] */
1688                 struct samr_ChangeReject *reject;/* [ref] */
1689                 NTSTATUS result;
1690         } out;
1691
1692 };
1693
1694
1695 struct samr_Connect5 {
1696         struct {
1697                 const char *system_name;/* [unique,charset(UTF16)] */
1698                 uint32_t access_mask;
1699                 uint32_t level_in;
1700                 union samr_ConnectInfo *info_in;/* [ref,switch_is(level_in)] */
1701         } in;
1702
1703         struct {
1704                 uint32_t *level_out;/* [ref] */
1705                 union samr_ConnectInfo *info_out;/* [ref,switch_is(*level_out)] */
1706                 struct policy_handle *connect_handle;/* [ref] */
1707                 NTSTATUS result;
1708         } out;
1709
1710 };
1711
1712
1713 struct samr_RidToSid {
1714         struct {
1715                 struct policy_handle *domain_handle;/* [ref] */
1716                 uint32_t rid;
1717         } in;
1718
1719         struct {
1720                 struct dom_sid2 *sid;/* [ref] */
1721                 NTSTATUS result;
1722         } out;
1723
1724 };
1725
1726
1727 struct samr_SetDsrmPassword {
1728         struct {
1729                 struct lsa_String *name;/* [unique] */
1730                 uint32_t unknown;
1731                 struct samr_Password *hash;/* [unique] */
1732         } in;
1733
1734         struct {
1735                 NTSTATUS result;
1736         } out;
1737
1738 };
1739
1740
1741 struct samr_ValidatePassword {
1742         struct {
1743                 enum samr_ValidatePasswordLevel level;
1744                 union samr_ValidatePasswordReq req;/* [switch_is(level)] */
1745         } in;
1746
1747         struct {
1748                 union samr_ValidatePasswordRep *rep;/* [ref,switch_is(level)] */
1749                 NTSTATUS result;
1750         } out;
1751
1752 };
1753
1754 #endif /* _HEADER_samr */