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