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