Fix bug #6089 - Winbind samr_OpenDomain not possible with Samba 3.2.6+
[Samba.git] / librpc / gen_ndr / samr.h
blob16c6605789ea32b9859e76766e2921f80d6e1993
1 /* header auto-generated by pidl */
3 #include <stdint.h>
5 #include "libcli/util/ntstatus.h"
7 #include "librpc/gen_ndr/misc.h"
8 #include "librpc/gen_ndr/lsa.h"
9 #include "librpc/gen_ndr/security.h"
10 #ifndef _HEADER_samr
11 #define _HEADER_samr
13 #define SAMR_ACCESS_ALL_ACCESS ( 0x0000003F )
14 #define GENERIC_RIGHTS_SAM_ALL_ACCESS ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_ACCESS_ALL_ACCESS) )
15 #define GENERIC_RIGHTS_SAM_READ ( (STANDARD_RIGHTS_READ_ACCESS|SAMR_ACCESS_ENUM_DOMAINS) )
16 #define GENERIC_RIGHTS_SAM_WRITE ( (STANDARD_RIGHTS_WRITE_ACCESS|SAMR_ACCESS_CREATE_DOMAIN|SAMR_ACCESS_INITIALIZE_SERVER|SAMR_ACCESS_SHUTDOWN_SERVER) )
17 #define GENERIC_RIGHTS_SAM_EXECUTE ( (STANDARD_RIGHTS_EXECUTE_ACCESS|SAMR_ACCESS_LOOKUP_DOMAIN|SAMR_ACCESS_CONNECT_TO_SERVER) )
18 #define SAMR_USER_ACCESS_ALL_ACCESS ( 0x000007FF )
19 #define GENERIC_RIGHTS_USER_ALL_ACCESS ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_USER_ACCESS_ALL_ACCESS) )
20 #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) )
21 #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) )
22 #define GENERIC_RIGHTS_USER_EXECUTE ( (STANDARD_RIGHTS_EXECUTE_ACCESS|SAMR_USER_ACCESS_CHANGE_PASSWORD|SAMR_USER_ACCESS_GET_NAME_ETC) )
23 #define SAMR_DOMAIN_ACCESS_ALL_ACCESS ( 0x000007FF )
24 #define GENERIC_RIGHTS_DOMAIN_ALL_ACCESS ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_DOMAIN_ACCESS_ALL_ACCESS) )
25 #define GENERIC_RIGHTS_DOMAIN_READ ( (STANDARD_RIGHTS_READ_ACCESS|SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS|SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2) )
26 #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) )
27 #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) )
28 #define SAMR_GROUP_ACCESS_ALL_ACCESS ( 0x0000001F )
29 #define GENERIC_RIGHTS_GROUP_ALL_ACCESS ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_GROUP_ACCESS_ALL_ACCESS) )
30 #define GENERIC_RIGHTS_GROUP_READ ( (STANDARD_RIGHTS_READ_ACCESS|SAMR_GROUP_ACCESS_GET_MEMBERS) )
31 #define GENERIC_RIGHTS_GROUP_WRITE ( (STANDARD_RIGHTS_WRITE_ACCESS|SAMR_GROUP_ACCESS_REMOVE_MEMBER|SAMR_GROUP_ACCESS_ADD_MEMBER|SAMR_GROUP_ACCESS_SET_INFO) )
32 #define GENERIC_RIGHTS_GROUP_EXECUTE ( (STANDARD_RIGHTS_EXECUTE_ACCESS|SAMR_GROUP_ACCESS_LOOKUP_INFO) )
33 #define SAMR_ALIAS_ACCESS_ALL_ACCESS ( 0x0000001F )
34 #define GENERIC_RIGHTS_ALIAS_ALL_ACCESS ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_ALIAS_ACCESS_ALL_ACCESS) )
35 #define GENERIC_RIGHTS_ALIAS_READ ( (STANDARD_RIGHTS_READ_ACCESS|SAMR_ALIAS_ACCESS_GET_MEMBERS) )
36 #define GENERIC_RIGHTS_ALIAS_WRITE ( (STANDARD_RIGHTS_WRITE_ACCESS|SAMR_ALIAS_ACCESS_REMOVE_MEMBER|SAMR_ALIAS_ACCESS_ADD_MEMBER|SAMR_ALIAS_ACCESS_SET_INFO) )
37 #define GENERIC_RIGHTS_ALIAS_EXECUTE ( (STANDARD_RIGHTS_EXECUTE_ACCESS|SAMR_ALIAS_ACCESS_LOOKUP_INFO) )
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 enum netr_SamDatabaseID
42 #ifndef USE_UINT_ENUMS
44 SAM_DATABASE_DOMAIN=0,
45 SAM_DATABASE_BUILTIN=1,
46 SAM_DATABASE_PRIVS=2
48 #else
49 { __donnot_use_enum_netr_SamDatabaseID=0x7FFFFFFF}
50 #define SAM_DATABASE_DOMAIN ( 0 )
51 #define SAM_DATABASE_BUILTIN ( 1 )
52 #define SAM_DATABASE_PRIVS ( 2 )
53 #endif
56 enum samr_RejectReason
57 #ifndef USE_UINT_ENUMS
59 SAMR_REJECT_OTHER=0,
60 SAMR_REJECT_TOO_SHORT=1,
61 SAMR_REJECT_IN_HISTORY=2,
62 SAMR_REJECT_COMPLEXITY=5
64 #else
65 { __donnot_use_enum_samr_RejectReason=0x7FFFFFFF}
66 #define SAMR_REJECT_OTHER ( 0 )
67 #define SAMR_REJECT_TOO_SHORT ( 1 )
68 #define SAMR_REJECT_IN_HISTORY ( 2 )
69 #define SAMR_REJECT_COMPLEXITY ( 5 )
70 #endif
73 /* bitmap samr_AcctFlags */
74 #define ACB_DISABLED ( 0x00000001 )
75 #define ACB_HOMDIRREQ ( 0x00000002 )
76 #define ACB_PWNOTREQ ( 0x00000004 )
77 #define ACB_TEMPDUP ( 0x00000008 )
78 #define ACB_NORMAL ( 0x00000010 )
79 #define ACB_MNS ( 0x00000020 )
80 #define ACB_DOMTRUST ( 0x00000040 )
81 #define ACB_WSTRUST ( 0x00000080 )
82 #define ACB_SVRTRUST ( 0x00000100 )
83 #define ACB_PWNOEXP ( 0x00000200 )
84 #define ACB_AUTOLOCK ( 0x00000400 )
85 #define ACB_ENC_TXT_PWD_ALLOWED ( 0x00000800 )
86 #define ACB_SMARTCARD_REQUIRED ( 0x00001000 )
87 #define ACB_TRUSTED_FOR_DELEGATION ( 0x00002000 )
88 #define ACB_NOT_DELEGATED ( 0x00004000 )
89 #define ACB_USE_DES_KEY_ONLY ( 0x00008000 )
90 #define ACB_DONT_REQUIRE_PREAUTH ( 0x00010000 )
91 #define ACB_PW_EXPIRED ( 0x00020000 )
92 #define ACB_NO_AUTH_DATA_REQD ( 0x00080000 )
94 /* bitmap samr_ConnectAccessMask */
95 #define SAMR_ACCESS_CONNECT_TO_SERVER ( 0x00000001 )
96 #define SAMR_ACCESS_SHUTDOWN_SERVER ( 0x00000002 )
97 #define SAMR_ACCESS_INITIALIZE_SERVER ( 0x00000004 )
98 #define SAMR_ACCESS_CREATE_DOMAIN ( 0x00000008 )
99 #define SAMR_ACCESS_ENUM_DOMAINS ( 0x00000010 )
100 #define SAMR_ACCESS_LOOKUP_DOMAIN ( 0x00000020 )
102 /* bitmap samr_UserAccessMask */
103 #define SAMR_USER_ACCESS_GET_NAME_ETC ( 0x00000001 )
104 #define SAMR_USER_ACCESS_GET_LOCALE ( 0x00000002 )
105 #define SAMR_USER_ACCESS_SET_LOC_COM ( 0x00000004 )
106 #define SAMR_USER_ACCESS_GET_LOGONINFO ( 0x00000008 )
107 #define SAMR_USER_ACCESS_GET_ATTRIBUTES ( 0x00000010 )
108 #define SAMR_USER_ACCESS_SET_ATTRIBUTES ( 0x00000020 )
109 #define SAMR_USER_ACCESS_CHANGE_PASSWORD ( 0x00000040 )
110 #define SAMR_USER_ACCESS_SET_PASSWORD ( 0x00000080 )
111 #define SAMR_USER_ACCESS_GET_GROUPS ( 0x00000100 )
112 #define SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP ( 0x00000200 )
113 #define SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP ( 0x00000400 )
115 /* bitmap samr_DomainAccessMask */
116 #define SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 ( 0x00000001 )
117 #define SAMR_DOMAIN_ACCESS_SET_INFO_1 ( 0x00000002 )
118 #define SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 ( 0x00000004 )
119 #define SAMR_DOMAIN_ACCESS_SET_INFO_2 ( 0x00000008 )
120 #define SAMR_DOMAIN_ACCESS_CREATE_USER ( 0x00000010 )
121 #define SAMR_DOMAIN_ACCESS_CREATE_GROUP ( 0x00000020 )
122 #define SAMR_DOMAIN_ACCESS_CREATE_ALIAS ( 0x00000040 )
123 #define SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS ( 0x00000080 )
124 #define SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS ( 0x00000100 )
125 #define SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT ( 0x00000200 )
126 #define SAMR_DOMAIN_ACCESS_SET_INFO_3 ( 0x00000400 )
128 /* bitmap samr_GroupAccessMask */
129 #define SAMR_GROUP_ACCESS_LOOKUP_INFO ( 0x00000001 )
130 #define SAMR_GROUP_ACCESS_SET_INFO ( 0x00000002 )
131 #define SAMR_GROUP_ACCESS_ADD_MEMBER ( 0x00000004 )
132 #define SAMR_GROUP_ACCESS_REMOVE_MEMBER ( 0x00000008 )
133 #define SAMR_GROUP_ACCESS_GET_MEMBERS ( 0x00000010 )
135 /* bitmap samr_AliasAccessMask */
136 #define SAMR_ALIAS_ACCESS_ADD_MEMBER ( 0x00000001 )
137 #define SAMR_ALIAS_ACCESS_REMOVE_MEMBER ( 0x00000002 )
138 #define SAMR_ALIAS_ACCESS_GET_MEMBERS ( 0x00000004 )
139 #define SAMR_ALIAS_ACCESS_LOOKUP_INFO ( 0x00000008 )
140 #define SAMR_ALIAS_ACCESS_SET_INFO ( 0x00000010 )
142 struct samr_SamEntry {
143 uint32_t idx;
144 struct lsa_String name;
147 struct samr_SamArray {
148 uint32_t count;
149 struct samr_SamEntry *entries;/* [unique,size_is(count)] */
152 enum samr_Role
153 #ifndef USE_UINT_ENUMS
155 SAMR_ROLE_STANDALONE=0,
156 SAMR_ROLE_DOMAIN_MEMBER=1,
157 SAMR_ROLE_DOMAIN_BDC=2,
158 SAMR_ROLE_DOMAIN_PDC=3
160 #else
161 { __donnot_use_enum_samr_Role=0x7FFFFFFF}
162 #define SAMR_ROLE_STANDALONE ( 0 )
163 #define SAMR_ROLE_DOMAIN_MEMBER ( 1 )
164 #define SAMR_ROLE_DOMAIN_BDC ( 2 )
165 #define SAMR_ROLE_DOMAIN_PDC ( 3 )
166 #endif
169 /* bitmap samr_PasswordProperties */
170 #define DOMAIN_PASSWORD_COMPLEX ( 0x00000001 )
171 #define DOMAIN_PASSWORD_NO_ANON_CHANGE ( 0x00000002 )
172 #define DOMAIN_PASSWORD_NO_CLEAR_CHANGE ( 0x00000004 )
173 #define DOMAIN_PASSWORD_LOCKOUT_ADMINS ( 0x00000008 )
174 #define DOMAIN_PASSWORD_STORE_CLEARTEXT ( 0x00000010 )
175 #define DOMAIN_REFUSE_PASSWORD_CHANGE ( 0x00000020 )
177 enum samr_DomainServerState
178 #ifndef USE_UINT_ENUMS
180 DOMAIN_SERVER_ENABLED=1,
181 DOMAIN_SERVER_DISABLED=2
183 #else
184 { __donnot_use_enum_samr_DomainServerState=0x7FFFFFFF}
185 #define DOMAIN_SERVER_ENABLED ( 1 )
186 #define DOMAIN_SERVER_DISABLED ( 2 )
187 #endif
190 struct samr_DomInfo1 {
191 uint16_t min_password_length;
192 uint16_t password_history_length;
193 uint32_t password_properties;
194 int64_t max_password_age;
195 int64_t min_password_age;
198 struct samr_DomGeneralInformation {
199 NTTIME force_logoff_time;
200 struct lsa_String oem_information;
201 struct lsa_String domain_name;
202 struct lsa_String primary;
203 uint64_t sequence_num;
204 enum samr_DomainServerState domain_server_state;
205 enum samr_Role role;
206 uint32_t unknown3;
207 uint32_t num_users;
208 uint32_t num_groups;
209 uint32_t num_aliases;
212 struct samr_DomInfo3 {
213 NTTIME force_logoff_time;
216 struct samr_DomOEMInformation {
217 struct lsa_String oem_information;
220 struct samr_DomInfo5 {
221 struct lsa_String domain_name;
224 struct samr_DomInfo6 {
225 struct lsa_String primary;
228 struct samr_DomInfo7 {
229 enum samr_Role role;
232 struct samr_DomInfo8 {
233 uint64_t sequence_num;
234 NTTIME domain_create_time;
237 struct samr_DomInfo9 {
238 enum samr_DomainServerState domain_server_state;
241 struct samr_DomGeneralInformation2 {
242 struct samr_DomGeneralInformation general;
243 uint64_t lockout_duration;
244 uint64_t lockout_window;
245 uint16_t lockout_threshold;
248 struct samr_DomInfo12 {
249 uint64_t lockout_duration;
250 uint64_t lockout_window;
251 uint16_t lockout_threshold;
254 struct samr_DomInfo13 {
255 uint64_t sequence_num;
256 NTTIME domain_create_time;
257 uint64_t modified_count_at_last_promotion;
260 union samr_DomainInfo {
261 struct samr_DomInfo1 info1;/* [case] */
262 struct samr_DomGeneralInformation general;/* [case(2)] */
263 struct samr_DomInfo3 info3;/* [case(3)] */
264 struct samr_DomOEMInformation oem;/* [case(4)] */
265 struct samr_DomInfo5 info5;/* [case(5)] */
266 struct samr_DomInfo6 info6;/* [case(6)] */
267 struct samr_DomInfo7 info7;/* [case(7)] */
268 struct samr_DomInfo8 info8;/* [case(8)] */
269 struct samr_DomInfo9 info9;/* [case(9)] */
270 struct samr_DomGeneralInformation2 general2;/* [case(11)] */
271 struct samr_DomInfo12 info12;/* [case(12)] */
272 struct samr_DomInfo13 info13;/* [case(13)] */
273 }/* [switch_type(uint16)] */;
275 struct samr_Ids {
276 uint32_t count;/* [range(0,1024)] */
277 uint32_t *ids;/* [unique,size_is(count)] */
280 /* bitmap samr_GroupAttrs */
281 #define SE_GROUP_MANDATORY ( 0x00000001 )
282 #define SE_GROUP_ENABLED_BY_DEFAULT ( 0x00000002 )
283 #define SE_GROUP_ENABLED ( 0x00000004 )
284 #define SE_GROUP_OWNER ( 0x00000008 )
285 #define SE_GROUP_USE_FOR_DENY_ONLY ( 0x00000010 )
286 #define SE_GROUP_RESOURCE ( 0x20000000 )
287 #define SE_GROUP_LOGON_ID ( 0xC0000000 )
289 struct samr_GroupInfoAll {
290 struct lsa_String name;
291 uint32_t attributes;
292 uint32_t num_members;
293 struct lsa_String description;
296 struct samr_GroupInfoAttributes {
297 uint32_t attributes;
300 struct samr_GroupInfoDescription {
301 struct lsa_String description;
304 enum samr_GroupInfoEnum
305 #ifndef USE_UINT_ENUMS
307 GROUPINFOALL=1,
308 GROUPINFONAME=2,
309 GROUPINFOATTRIBUTES=3,
310 GROUPINFODESCRIPTION=4,
311 GROUPINFOALL2=5
313 #else
314 { __donnot_use_enum_samr_GroupInfoEnum=0x7FFFFFFF}
315 #define GROUPINFOALL ( 1 )
316 #define GROUPINFONAME ( 2 )
317 #define GROUPINFOATTRIBUTES ( 3 )
318 #define GROUPINFODESCRIPTION ( 4 )
319 #define GROUPINFOALL2 ( 5 )
320 #endif
323 union samr_GroupInfo {
324 struct samr_GroupInfoAll all;/* [case(GROUPINFOALL)] */
325 struct lsa_String name;/* [case(GROUPINFONAME)] */
326 struct samr_GroupInfoAttributes attributes;/* [case(GROUPINFOATTRIBUTES)] */
327 struct lsa_String description;/* [case(GROUPINFODESCRIPTION)] */
328 struct samr_GroupInfoAll all2;/* [case(GROUPINFOALL2)] */
329 }/* [switch_type(samr_GroupInfoEnum)] */;
331 struct samr_RidTypeArray {
332 uint32_t count;
333 uint32_t *rids;/* [unique,size_is(count)] */
334 uint32_t *types;/* [unique,size_is(count)] */
337 struct samr_AliasInfoAll {
338 struct lsa_String name;
339 uint32_t num_members;
340 struct lsa_String description;
343 enum samr_AliasInfoEnum
344 #ifndef USE_UINT_ENUMS
346 ALIASINFOALL=1,
347 ALIASINFONAME=2,
348 ALIASINFODESCRIPTION=3
350 #else
351 { __donnot_use_enum_samr_AliasInfoEnum=0x7FFFFFFF}
352 #define ALIASINFOALL ( 1 )
353 #define ALIASINFONAME ( 2 )
354 #define ALIASINFODESCRIPTION ( 3 )
355 #endif
358 union samr_AliasInfo {
359 struct samr_AliasInfoAll all;/* [case(ALIASINFOALL)] */
360 struct lsa_String name;/* [case(ALIASINFONAME)] */
361 struct lsa_String description;/* [case(ALIASINFODESCRIPTION)] */
362 }/* [switch_type(samr_AliasInfoEnum)] */;
364 struct samr_UserInfo1 {
365 struct lsa_String account_name;
366 struct lsa_String full_name;
367 uint32_t primary_gid;
368 struct lsa_String description;
369 struct lsa_String comment;
372 struct samr_UserInfo2 {
373 struct lsa_String comment;
374 struct lsa_String unknown;
375 uint16_t country_code;
376 uint16_t code_page;
379 struct samr_LogonHours {
380 uint16_t units_per_week;
381 uint8_t *bits;/* [unique,length_is(units_per_week/8),size_is(1260)] */
382 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
384 struct samr_UserInfo3 {
385 struct lsa_String account_name;
386 struct lsa_String full_name;
387 uint32_t rid;
388 uint32_t primary_gid;
389 struct lsa_String home_directory;
390 struct lsa_String home_drive;
391 struct lsa_String logon_script;
392 struct lsa_String profile_path;
393 struct lsa_String workstations;
394 NTTIME last_logon;
395 NTTIME last_logoff;
396 NTTIME last_password_change;
397 NTTIME allow_password_change;
398 NTTIME force_password_change;
399 struct samr_LogonHours logon_hours;
400 uint16_t bad_password_count;
401 uint16_t logon_count;
402 uint32_t acct_flags;
405 struct samr_UserInfo4 {
406 struct samr_LogonHours logon_hours;
409 struct samr_UserInfo5 {
410 struct lsa_String account_name;
411 struct lsa_String full_name;
412 uint32_t rid;
413 uint32_t primary_gid;
414 struct lsa_String home_directory;
415 struct lsa_String home_drive;
416 struct lsa_String logon_script;
417 struct lsa_String profile_path;
418 struct lsa_String description;
419 struct lsa_String workstations;
420 NTTIME last_logon;
421 NTTIME last_logoff;
422 struct samr_LogonHours logon_hours;
423 uint16_t bad_password_count;
424 uint16_t logon_count;
425 NTTIME last_password_change;
426 NTTIME acct_expiry;
427 uint32_t acct_flags;
430 struct samr_UserInfo6 {
431 struct lsa_String account_name;
432 struct lsa_String full_name;
435 struct samr_UserInfo7 {
436 struct lsa_String account_name;
439 struct samr_UserInfo8 {
440 struct lsa_String full_name;
443 struct samr_UserInfo9 {
444 uint32_t primary_gid;
447 struct samr_UserInfo10 {
448 struct lsa_String home_directory;
449 struct lsa_String home_drive;
452 struct samr_UserInfo11 {
453 struct lsa_String logon_script;
456 struct samr_UserInfo12 {
457 struct lsa_String profile_path;
460 struct samr_UserInfo13 {
461 struct lsa_String description;
464 struct samr_UserInfo14 {
465 struct lsa_String workstations;
468 struct samr_UserInfo16 {
469 uint32_t acct_flags;
472 struct samr_UserInfo17 {
473 NTTIME acct_expiry;
476 struct samr_Password {
477 uint8_t hash[16];
478 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
480 struct samr_UserInfo18 {
481 struct samr_Password nt_pwd;
482 struct samr_Password lm_pwd;
483 uint8_t nt_pwd_active;
484 uint8_t lm_pwd_active;
485 uint8_t password_expired;
488 struct samr_UserInfo20 {
489 struct lsa_BinaryString parameters;
492 /* bitmap samr_FieldsPresent */
493 #define SAMR_FIELD_ACCOUNT_NAME ( 0x00000001 )
494 #define SAMR_FIELD_FULL_NAME ( 0x00000002 )
495 #define SAMR_FIELD_RID ( 0x00000004 )
496 #define SAMR_FIELD_PRIMARY_GID ( 0x00000008 )
497 #define SAMR_FIELD_DESCRIPTION ( 0x00000010 )
498 #define SAMR_FIELD_COMMENT ( 0x00000020 )
499 #define SAMR_FIELD_HOME_DIRECTORY ( 0x00000040 )
500 #define SAMR_FIELD_HOME_DRIVE ( 0x00000080 )
501 #define SAMR_FIELD_LOGON_SCRIPT ( 0x00000100 )
502 #define SAMR_FIELD_PROFILE_PATH ( 0x00000200 )
503 #define SAMR_FIELD_WORKSTATIONS ( 0x00000400 )
504 #define SAMR_FIELD_LAST_LOGON ( 0x00000800 )
505 #define SAMR_FIELD_LAST_LOGOFF ( 0x00001000 )
506 #define SAMR_FIELD_LOGON_HOURS ( 0x00002000 )
507 #define SAMR_FIELD_BAD_PWD_COUNT ( 0x00004000 )
508 #define SAMR_FIELD_NUM_LOGONS ( 0x00008000 )
509 #define SAMR_FIELD_ALLOW_PWD_CHANGE ( 0x00010000 )
510 #define SAMR_FIELD_FORCE_PWD_CHANGE ( 0x00020000 )
511 #define SAMR_FIELD_LAST_PWD_CHANGE ( 0x00040000 )
512 #define SAMR_FIELD_ACCT_EXPIRY ( 0x00080000 )
513 #define SAMR_FIELD_ACCT_FLAGS ( 0x00100000 )
514 #define SAMR_FIELD_PARAMETERS ( 0x00200000 )
515 #define SAMR_FIELD_COUNTRY_CODE ( 0x00400000 )
516 #define SAMR_FIELD_CODE_PAGE ( 0x00800000 )
517 #define SAMR_FIELD_NT_PASSWORD_PRESENT ( 0x01000000 )
518 #define SAMR_FIELD_LM_PASSWORD_PRESENT ( 0x02000000 )
519 #define SAMR_FIELD_PRIVATE_DATA ( 0x04000000 )
520 #define SAMR_FIELD_EXPIRED_FLAG ( 0x08000000 )
521 #define SAMR_FIELD_SEC_DESC ( 0x10000000 )
522 #define SAMR_FIELD_OWF_PWD ( 0x20000000 )
524 struct samr_UserInfo21 {
525 NTTIME last_logon;
526 NTTIME last_logoff;
527 NTTIME last_password_change;
528 NTTIME acct_expiry;
529 NTTIME allow_password_change;
530 NTTIME force_password_change;
531 struct lsa_String account_name;
532 struct lsa_String full_name;
533 struct lsa_String home_directory;
534 struct lsa_String home_drive;
535 struct lsa_String logon_script;
536 struct lsa_String profile_path;
537 struct lsa_String description;
538 struct lsa_String workstations;
539 struct lsa_String comment;
540 struct lsa_BinaryString parameters;
541 struct lsa_BinaryString lm_owf_password;
542 struct lsa_BinaryString nt_owf_password;
543 struct lsa_String unknown3;
544 uint32_t buf_count;
545 uint8_t *buffer;/* [unique,size_is(buf_count)] */
546 uint32_t rid;
547 uint32_t primary_gid;
548 uint32_t acct_flags;
549 uint32_t fields_present;
550 struct samr_LogonHours logon_hours;
551 uint16_t bad_password_count;
552 uint16_t logon_count;
553 uint16_t country_code;
554 uint16_t code_page;
555 uint8_t lm_password_set;
556 uint8_t nt_password_set;
557 uint8_t password_expired;
558 uint8_t unknown4;
561 struct samr_CryptPassword {
562 uint8_t data[516];
563 }/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
565 struct samr_UserInfo23 {
566 struct samr_UserInfo21 info;
567 struct samr_CryptPassword password;
570 struct samr_UserInfo24 {
571 struct samr_CryptPassword password;
572 uint8_t password_expired;
575 struct samr_CryptPasswordEx {
576 uint8_t data[532];
577 }/* [flag(LIBNDR_PRINT_ARRAY_HEX)] */;
579 struct samr_UserInfo25 {
580 struct samr_UserInfo21 info;
581 struct samr_CryptPasswordEx password;
584 struct samr_UserInfo26 {
585 struct samr_CryptPasswordEx password;
586 uint8_t password_expired;
589 union samr_UserInfo {
590 struct samr_UserInfo1 info1;/* [case] */
591 struct samr_UserInfo2 info2;/* [case(2)] */
592 struct samr_UserInfo3 info3;/* [case(3)] */
593 struct samr_UserInfo4 info4;/* [case(4)] */
594 struct samr_UserInfo5 info5;/* [case(5)] */
595 struct samr_UserInfo6 info6;/* [case(6)] */
596 struct samr_UserInfo7 info7;/* [case(7)] */
597 struct samr_UserInfo8 info8;/* [case(8)] */
598 struct samr_UserInfo9 info9;/* [case(9)] */
599 struct samr_UserInfo10 info10;/* [case(10)] */
600 struct samr_UserInfo11 info11;/* [case(11)] */
601 struct samr_UserInfo12 info12;/* [case(12)] */
602 struct samr_UserInfo13 info13;/* [case(13)] */
603 struct samr_UserInfo14 info14;/* [case(14)] */
604 struct samr_UserInfo16 info16;/* [case(16)] */
605 struct samr_UserInfo17 info17;/* [case(17)] */
606 struct samr_UserInfo18 info18;/* [case(18)] */
607 struct samr_UserInfo20 info20;/* [case(20)] */
608 struct samr_UserInfo21 info21;/* [case(21)] */
609 struct samr_UserInfo23 info23;/* [case(23)] */
610 struct samr_UserInfo24 info24;/* [case(24)] */
611 struct samr_UserInfo25 info25;/* [case(25)] */
612 struct samr_UserInfo26 info26;/* [case(26)] */
613 }/* [switch_type(uint16)] */;
615 struct samr_RidWithAttribute {
616 uint32_t rid;
617 uint32_t attributes;
618 }/* [public] */;
620 struct samr_RidWithAttributeArray {
621 uint32_t count;
622 struct samr_RidWithAttribute *rids;/* [unique,size_is(count)] */
623 }/* [public] */;
625 struct samr_DispEntryGeneral {
626 uint32_t idx;
627 uint32_t rid;
628 uint32_t acct_flags;
629 struct lsa_String account_name;
630 struct lsa_String description;
631 struct lsa_String full_name;
634 struct samr_DispInfoGeneral {
635 uint32_t count;
636 struct samr_DispEntryGeneral *entries;/* [unique,size_is(count)] */
639 struct samr_DispEntryFull {
640 uint32_t idx;
641 uint32_t rid;
642 uint32_t acct_flags;
643 struct lsa_String account_name;
644 struct lsa_String description;
647 struct samr_DispInfoFull {
648 uint32_t count;
649 struct samr_DispEntryFull *entries;/* [unique,size_is(count)] */
652 struct samr_DispEntryFullGroup {
653 uint32_t idx;
654 uint32_t rid;
655 uint32_t acct_flags;
656 struct lsa_String account_name;
657 struct lsa_String description;
660 struct samr_DispInfoFullGroups {
661 uint32_t count;
662 struct samr_DispEntryFullGroup *entries;/* [unique,size_is(count)] */
665 struct samr_DispEntryAscii {
666 uint32_t idx;
667 struct lsa_AsciiStringLarge account_name;
670 struct samr_DispInfoAscii {
671 uint32_t count;
672 struct samr_DispEntryAscii *entries;/* [unique,size_is(count)] */
675 union samr_DispInfo {
676 struct samr_DispInfoGeneral info1;/* [case] */
677 struct samr_DispInfoFull info2;/* [case(2)] */
678 struct samr_DispInfoFullGroups info3;/* [case(3)] */
679 struct samr_DispInfoAscii info4;/* [case(4)] */
680 struct samr_DispInfoAscii info5;/* [case(5)] */
681 }/* [switch_type(uint16)] */;
683 struct samr_PwInfo {
684 uint16_t min_password_length;
685 uint32_t password_properties;
688 enum samr_ConnectVersion
689 #ifndef USE_UINT_ENUMS
691 SAMR_CONNECT_PRE_W2K=1,
692 SAMR_CONNECT_W2K=2,
693 SAMR_CONNECT_AFTER_W2K=3
695 #else
696 { __donnot_use_enum_samr_ConnectVersion=0x7FFFFFFF}
697 #define SAMR_CONNECT_PRE_W2K ( 1 )
698 #define SAMR_CONNECT_W2K ( 2 )
699 #define SAMR_CONNECT_AFTER_W2K ( 3 )
700 #endif
703 struct samr_ChangeReject {
704 enum samr_RejectReason reason;
705 uint32_t unknown1;
706 uint32_t unknown2;
709 struct samr_ConnectInfo1 {
710 enum samr_ConnectVersion client_version;
711 uint32_t unknown2;
714 union samr_ConnectInfo {
715 struct samr_ConnectInfo1 info1;/* [case] */
718 /* bitmap samr_ValidateFieldsPresent */
719 #define SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET ( 0x00000001 )
720 #define SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME ( 0x00000002 )
721 #define SAMR_VALIDATE_FIELD_LOCKOUT_TIME ( 0x00000004 )
722 #define SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT ( 0x00000008 )
723 #define SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH ( 0x00000010 )
724 #define SAMR_VALIDATE_FIELD_PASSWORD_HISTORY ( 0x00000020 )
726 enum samr_ValidatePasswordLevel
727 #ifndef USE_UINT_ENUMS
729 NetValidateAuthentication=1,
730 NetValidatePasswordChange=2,
731 NetValidatePasswordReset=3
733 #else
734 { __donnot_use_enum_samr_ValidatePasswordLevel=0x7FFFFFFF}
735 #define NetValidateAuthentication ( 1 )
736 #define NetValidatePasswordChange ( 2 )
737 #define NetValidatePasswordReset ( 3 )
738 #endif
741 enum samr_ValidationStatus
742 #ifndef USE_UINT_ENUMS
744 SAMR_VALIDATION_STATUS_SUCCESS=0,
745 SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE=1,
746 SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT=2,
747 SAMR_VALIDATION_STATUS_BAD_PASSWORD=4,
748 SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT=5,
749 SAMR_VALIDATION_STATUS_PWD_TOO_SHORT=6,
750 SAMR_VALIDATION_STATUS_PWD_TOO_LONG=7,
751 SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH=8,
752 SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT=9
754 #else
755 { __donnot_use_enum_samr_ValidationStatus=0x7FFFFFFF}
756 #define SAMR_VALIDATION_STATUS_SUCCESS ( 0 )
757 #define SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE ( 1 )
758 #define SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT ( 2 )
759 #define SAMR_VALIDATION_STATUS_BAD_PASSWORD ( 4 )
760 #define SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT ( 5 )
761 #define SAMR_VALIDATION_STATUS_PWD_TOO_SHORT ( 6 )
762 #define SAMR_VALIDATION_STATUS_PWD_TOO_LONG ( 7 )
763 #define SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH ( 8 )
764 #define SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT ( 9 )
765 #endif
768 struct samr_ValidationBlob {
769 uint32_t length;
770 uint8_t *data;/* [unique,size_is(length)] */
773 struct samr_ValidatePasswordInfo {
774 uint32_t fields_present;
775 NTTIME last_password_change;
776 NTTIME bad_password_time;
777 NTTIME lockout_time;
778 uint32_t bad_pwd_count;
779 uint32_t pwd_history_len;
780 struct samr_ValidationBlob *pwd_history;/* [unique,size_is(pwd_history_len)] */
783 struct samr_ValidatePasswordRepCtr {
784 struct samr_ValidatePasswordInfo info;
785 enum samr_ValidationStatus status;
788 union samr_ValidatePasswordRep {
789 struct samr_ValidatePasswordRepCtr ctr1;/* [case] */
790 struct samr_ValidatePasswordRepCtr ctr2;/* [case(2)] */
791 struct samr_ValidatePasswordRepCtr ctr3;/* [case(3)] */
792 }/* [switch_type(uint16)] */;
794 struct samr_ValidatePasswordReq3 {
795 struct samr_ValidatePasswordInfo info;
796 struct lsa_StringLarge password;
797 struct lsa_StringLarge account;
798 struct samr_ValidationBlob hash;
799 uint8_t pwd_must_change_at_next_logon;
800 uint8_t clear_lockout;
803 struct samr_ValidatePasswordReq2 {
804 struct samr_ValidatePasswordInfo info;
805 struct lsa_StringLarge password;
806 struct lsa_StringLarge account;
807 struct samr_ValidationBlob hash;
808 uint8_t password_matched;
811 struct samr_ValidatePasswordReq1 {
812 struct samr_ValidatePasswordInfo info;
813 uint8_t password_matched;
816 union samr_ValidatePasswordReq {
817 struct samr_ValidatePasswordReq1 req1;/* [case] */
818 struct samr_ValidatePasswordReq2 req2;/* [case(2)] */
819 struct samr_ValidatePasswordReq3 req3;/* [case(3)] */
820 }/* [switch_type(uint16)] */;
823 struct samr_Connect {
824 struct {
825 uint16_t *system_name;/* [unique] */
826 uint32_t access_mask;
827 } in;
829 struct {
830 struct policy_handle *connect_handle;/* [ref] */
831 NTSTATUS result;
832 } out;
837 struct samr_Close {
838 struct {
839 struct policy_handle *handle;/* [ref] */
840 } in;
842 struct {
843 struct policy_handle *handle;/* [ref] */
844 NTSTATUS result;
845 } out;
850 struct samr_SetSecurity {
851 struct {
852 struct policy_handle *handle;/* [ref] */
853 uint32_t sec_info;
854 struct sec_desc_buf *sdbuf;/* [ref] */
855 } in;
857 struct {
858 NTSTATUS result;
859 } out;
864 struct samr_QuerySecurity {
865 struct {
866 struct policy_handle *handle;/* [ref] */
867 uint32_t sec_info;
868 } in;
870 struct {
871 struct sec_desc_buf **sdbuf;/* [ref] */
872 NTSTATUS result;
873 } out;
878 struct samr_Shutdown {
879 struct {
880 struct policy_handle *connect_handle;/* [ref] */
881 } in;
883 struct {
884 NTSTATUS result;
885 } out;
890 struct samr_LookupDomain {
891 struct {
892 struct policy_handle *connect_handle;/* [ref] */
893 struct lsa_String *domain_name;/* [ref] */
894 } in;
896 struct {
897 struct dom_sid2 **sid;/* [ref] */
898 NTSTATUS result;
899 } out;
904 struct samr_EnumDomains {
905 struct {
906 struct policy_handle *connect_handle;/* [ref] */
907 uint32_t buf_size;
908 uint32_t *resume_handle;/* [ref] */
909 } in;
911 struct {
912 struct samr_SamArray **sam;/* [ref] */
913 uint32_t *num_entries;/* [ref] */
914 uint32_t *resume_handle;/* [ref] */
915 NTSTATUS result;
916 } out;
921 struct samr_OpenDomain {
922 struct {
923 struct policy_handle *connect_handle;/* [ref] */
924 uint32_t access_mask;
925 struct dom_sid2 *sid;/* [ref] */
926 } in;
928 struct {
929 struct policy_handle *domain_handle;/* [ref] */
930 NTSTATUS result;
931 } out;
936 struct samr_QueryDomainInfo {
937 struct {
938 struct policy_handle *domain_handle;/* [ref] */
939 uint16_t level;
940 } in;
942 struct {
943 union samr_DomainInfo **info;/* [ref,switch_is(level)] */
944 NTSTATUS result;
945 } out;
950 struct samr_SetDomainInfo {
951 struct {
952 struct policy_handle *domain_handle;/* [ref] */
953 uint16_t level;
954 union samr_DomainInfo *info;/* [ref,switch_is(level)] */
955 } in;
957 struct {
958 NTSTATUS result;
959 } out;
964 struct samr_CreateDomainGroup {
965 struct {
966 struct policy_handle *domain_handle;/* [ref] */
967 struct lsa_String *name;/* [ref] */
968 uint32_t access_mask;
969 } in;
971 struct {
972 struct policy_handle *group_handle;/* [ref] */
973 uint32_t *rid;/* [ref] */
974 NTSTATUS result;
975 } out;
980 struct samr_EnumDomainGroups {
981 struct {
982 struct policy_handle *domain_handle;/* [ref] */
983 uint32_t max_size;
984 uint32_t *resume_handle;/* [ref] */
985 } in;
987 struct {
988 struct samr_SamArray **sam;/* [ref] */
989 uint32_t *num_entries;/* [ref] */
990 uint32_t *resume_handle;/* [ref] */
991 NTSTATUS result;
992 } out;
997 struct samr_CreateUser {
998 struct {
999 struct policy_handle *domain_handle;/* [ref] */
1000 struct lsa_String *account_name;/* [ref] */
1001 uint32_t access_mask;
1002 } in;
1004 struct {
1005 struct policy_handle *user_handle;/* [ref] */
1006 uint32_t *rid;/* [ref] */
1007 NTSTATUS result;
1008 } out;
1013 struct samr_EnumDomainUsers {
1014 struct {
1015 struct policy_handle *domain_handle;/* [ref] */
1016 uint32_t acct_flags;
1017 uint32_t max_size;
1018 uint32_t *resume_handle;/* [ref] */
1019 } in;
1021 struct {
1022 struct samr_SamArray **sam;/* [ref] */
1023 uint32_t *num_entries;/* [ref] */
1024 uint32_t *resume_handle;/* [ref] */
1025 NTSTATUS result;
1026 } out;
1031 struct samr_CreateDomAlias {
1032 struct {
1033 struct policy_handle *domain_handle;/* [ref] */
1034 struct lsa_String *alias_name;/* [ref] */
1035 uint32_t access_mask;
1036 } in;
1038 struct {
1039 struct policy_handle *alias_handle;/* [ref] */
1040 uint32_t *rid;/* [ref] */
1041 NTSTATUS result;
1042 } out;
1047 struct samr_EnumDomainAliases {
1048 struct {
1049 struct policy_handle *domain_handle;/* [ref] */
1050 uint32_t max_size;
1051 uint32_t *resume_handle;/* [ref] */
1052 } in;
1054 struct {
1055 struct samr_SamArray **sam;/* [ref] */
1056 uint32_t *num_entries;/* [ref] */
1057 uint32_t *resume_handle;/* [ref] */
1058 NTSTATUS result;
1059 } out;
1064 struct samr_GetAliasMembership {
1065 struct {
1066 struct policy_handle *domain_handle;/* [ref] */
1067 struct lsa_SidArray *sids;/* [ref] */
1068 } in;
1070 struct {
1071 struct samr_Ids *rids;/* [ref] */
1072 NTSTATUS result;
1073 } out;
1078 struct samr_LookupNames {
1079 struct {
1080 struct policy_handle *domain_handle;/* [ref] */
1081 uint32_t num_names;/* [range(0,1000)] */
1082 struct lsa_String *names;/* [length_is(num_names),size_is(1000)] */
1083 } in;
1085 struct {
1086 struct samr_Ids *rids;/* [ref] */
1087 struct samr_Ids *types;/* [ref] */
1088 NTSTATUS result;
1089 } out;
1094 struct samr_LookupRids {
1095 struct {
1096 struct policy_handle *domain_handle;/* [ref] */
1097 uint32_t num_rids;/* [range(0,1000)] */
1098 uint32_t *rids;/* [length_is(num_rids),size_is(1000)] */
1099 } in;
1101 struct {
1102 struct lsa_Strings *names;/* [ref] */
1103 struct samr_Ids *types;/* [ref] */
1104 NTSTATUS result;
1105 } out;
1110 struct samr_OpenGroup {
1111 struct {
1112 struct policy_handle *domain_handle;/* [ref] */
1113 uint32_t access_mask;
1114 uint32_t rid;
1115 } in;
1117 struct {
1118 struct policy_handle *group_handle;/* [ref] */
1119 NTSTATUS result;
1120 } out;
1125 struct samr_QueryGroupInfo {
1126 struct {
1127 struct policy_handle *group_handle;/* [ref] */
1128 enum samr_GroupInfoEnum level;
1129 } in;
1131 struct {
1132 union samr_GroupInfo **info;/* [ref,switch_is(level)] */
1133 NTSTATUS result;
1134 } out;
1139 struct samr_SetGroupInfo {
1140 struct {
1141 struct policy_handle *group_handle;/* [ref] */
1142 enum samr_GroupInfoEnum level;
1143 union samr_GroupInfo *info;/* [ref,switch_is(level)] */
1144 } in;
1146 struct {
1147 NTSTATUS result;
1148 } out;
1153 struct samr_AddGroupMember {
1154 struct {
1155 struct policy_handle *group_handle;/* [ref] */
1156 uint32_t rid;
1157 uint32_t flags;
1158 } in;
1160 struct {
1161 NTSTATUS result;
1162 } out;
1167 struct samr_DeleteDomainGroup {
1168 struct {
1169 struct policy_handle *group_handle;/* [ref] */
1170 } in;
1172 struct {
1173 struct policy_handle *group_handle;/* [ref] */
1174 NTSTATUS result;
1175 } out;
1180 struct samr_DeleteGroupMember {
1181 struct {
1182 struct policy_handle *group_handle;/* [ref] */
1183 uint32_t rid;
1184 } in;
1186 struct {
1187 NTSTATUS result;
1188 } out;
1193 struct samr_QueryGroupMember {
1194 struct {
1195 struct policy_handle *group_handle;/* [ref] */
1196 } in;
1198 struct {
1199 struct samr_RidTypeArray **rids;/* [ref] */
1200 NTSTATUS result;
1201 } out;
1206 struct samr_SetMemberAttributesOfGroup {
1207 struct {
1208 struct policy_handle *group_handle;/* [ref] */
1209 uint32_t unknown1;
1210 uint32_t unknown2;
1211 } in;
1213 struct {
1214 NTSTATUS result;
1215 } out;
1220 struct samr_OpenAlias {
1221 struct {
1222 struct policy_handle *domain_handle;/* [ref] */
1223 uint32_t access_mask;
1224 uint32_t rid;
1225 } in;
1227 struct {
1228 struct policy_handle *alias_handle;/* [ref] */
1229 NTSTATUS result;
1230 } out;
1235 struct samr_QueryAliasInfo {
1236 struct {
1237 struct policy_handle *alias_handle;/* [ref] */
1238 enum samr_AliasInfoEnum level;
1239 } in;
1241 struct {
1242 union samr_AliasInfo **info;/* [ref,switch_is(level)] */
1243 NTSTATUS result;
1244 } out;
1249 struct samr_SetAliasInfo {
1250 struct {
1251 struct policy_handle *alias_handle;/* [ref] */
1252 enum samr_AliasInfoEnum level;
1253 union samr_AliasInfo *info;/* [ref,switch_is(level)] */
1254 } in;
1256 struct {
1257 NTSTATUS result;
1258 } out;
1263 struct samr_DeleteDomAlias {
1264 struct {
1265 struct policy_handle *alias_handle;/* [ref] */
1266 } in;
1268 struct {
1269 struct policy_handle *alias_handle;/* [ref] */
1270 NTSTATUS result;
1271 } out;
1276 struct samr_AddAliasMember {
1277 struct {
1278 struct policy_handle *alias_handle;/* [ref] */
1279 struct dom_sid2 *sid;/* [ref] */
1280 } in;
1282 struct {
1283 NTSTATUS result;
1284 } out;
1289 struct samr_DeleteAliasMember {
1290 struct {
1291 struct policy_handle *alias_handle;/* [ref] */
1292 struct dom_sid2 *sid;/* [ref] */
1293 } in;
1295 struct {
1296 NTSTATUS result;
1297 } out;
1302 struct samr_GetMembersInAlias {
1303 struct {
1304 struct policy_handle *alias_handle;/* [ref] */
1305 } in;
1307 struct {
1308 struct lsa_SidArray *sids;/* [ref] */
1309 NTSTATUS result;
1310 } out;
1315 struct samr_OpenUser {
1316 struct {
1317 struct policy_handle *domain_handle;/* [ref] */
1318 uint32_t access_mask;
1319 uint32_t rid;
1320 } in;
1322 struct {
1323 struct policy_handle *user_handle;/* [ref] */
1324 NTSTATUS result;
1325 } out;
1330 struct samr_DeleteUser {
1331 struct {
1332 struct policy_handle *user_handle;/* [ref] */
1333 } in;
1335 struct {
1336 struct policy_handle *user_handle;/* [ref] */
1337 NTSTATUS result;
1338 } out;
1343 struct samr_QueryUserInfo {
1344 struct {
1345 struct policy_handle *user_handle;/* [ref] */
1346 uint16_t level;
1347 } in;
1349 struct {
1350 union samr_UserInfo **info;/* [ref,switch_is(level)] */
1351 NTSTATUS result;
1352 } out;
1357 struct samr_SetUserInfo {
1358 struct {
1359 struct policy_handle *user_handle;/* [ref] */
1360 uint16_t level;
1361 union samr_UserInfo *info;/* [ref,switch_is(level)] */
1362 } in;
1364 struct {
1365 NTSTATUS result;
1366 } out;
1371 struct samr_ChangePasswordUser {
1372 struct {
1373 struct policy_handle *user_handle;/* [ref] */
1374 uint8_t lm_present;
1375 struct samr_Password *old_lm_crypted;/* [unique] */
1376 struct samr_Password *new_lm_crypted;/* [unique] */
1377 uint8_t nt_present;
1378 struct samr_Password *old_nt_crypted;/* [unique] */
1379 struct samr_Password *new_nt_crypted;/* [unique] */
1380 uint8_t cross1_present;
1381 struct samr_Password *nt_cross;/* [unique] */
1382 uint8_t cross2_present;
1383 struct samr_Password *lm_cross;/* [unique] */
1384 } in;
1386 struct {
1387 NTSTATUS result;
1388 } out;
1393 struct samr_GetGroupsForUser {
1394 struct {
1395 struct policy_handle *user_handle;/* [ref] */
1396 } in;
1398 struct {
1399 struct samr_RidWithAttributeArray **rids;/* [ref] */
1400 NTSTATUS result;
1401 } out;
1406 struct samr_QueryDisplayInfo {
1407 struct {
1408 struct policy_handle *domain_handle;/* [ref] */
1409 uint16_t level;
1410 uint32_t start_idx;
1411 uint32_t max_entries;
1412 uint32_t buf_size;
1413 } in;
1415 struct {
1416 uint32_t *total_size;/* [ref] */
1417 uint32_t *returned_size;/* [ref] */
1418 union samr_DispInfo *info;/* [ref,switch_is(level)] */
1419 NTSTATUS result;
1420 } out;
1425 struct samr_GetDisplayEnumerationIndex {
1426 struct {
1427 struct policy_handle *domain_handle;/* [ref] */
1428 uint16_t level;
1429 struct lsa_String *name;/* [ref] */
1430 } in;
1432 struct {
1433 uint32_t *idx;/* [ref] */
1434 NTSTATUS result;
1435 } out;
1440 struct samr_TestPrivateFunctionsDomain {
1441 struct {
1442 struct policy_handle *domain_handle;/* [ref] */
1443 } in;
1445 struct {
1446 NTSTATUS result;
1447 } out;
1452 struct samr_TestPrivateFunctionsUser {
1453 struct {
1454 struct policy_handle *user_handle;/* [ref] */
1455 } in;
1457 struct {
1458 NTSTATUS result;
1459 } out;
1464 struct samr_GetUserPwInfo {
1465 struct {
1466 struct policy_handle *user_handle;/* [ref] */
1467 } in;
1469 struct {
1470 struct samr_PwInfo *info;/* [ref] */
1471 NTSTATUS result;
1472 } out;
1477 struct samr_RemoveMemberFromForeignDomain {
1478 struct {
1479 struct policy_handle *domain_handle;/* [ref] */
1480 struct dom_sid2 *sid;/* [ref] */
1481 } in;
1483 struct {
1484 NTSTATUS result;
1485 } out;
1490 struct samr_QueryDomainInfo2 {
1491 struct {
1492 struct policy_handle *domain_handle;/* [ref] */
1493 uint16_t level;
1494 } in;
1496 struct {
1497 union samr_DomainInfo **info;/* [ref,switch_is(level)] */
1498 NTSTATUS result;
1499 } out;
1504 struct samr_QueryUserInfo2 {
1505 struct {
1506 struct policy_handle *user_handle;/* [ref] */
1507 uint16_t level;
1508 } in;
1510 struct {
1511 union samr_UserInfo **info;/* [ref,switch_is(level)] */
1512 NTSTATUS result;
1513 } out;
1518 struct samr_QueryDisplayInfo2 {
1519 struct {
1520 struct policy_handle *domain_handle;/* [ref] */
1521 uint16_t level;
1522 uint32_t start_idx;
1523 uint32_t max_entries;
1524 uint32_t buf_size;
1525 } in;
1527 struct {
1528 uint32_t *total_size;/* [ref] */
1529 uint32_t *returned_size;/* [ref] */
1530 union samr_DispInfo *info;/* [ref,switch_is(level)] */
1531 NTSTATUS result;
1532 } out;
1537 struct samr_GetDisplayEnumerationIndex2 {
1538 struct {
1539 struct policy_handle *domain_handle;/* [ref] */
1540 uint16_t level;
1541 struct lsa_String *name;/* [ref] */
1542 } in;
1544 struct {
1545 uint32_t *idx;/* [ref] */
1546 NTSTATUS result;
1547 } out;
1552 struct samr_CreateUser2 {
1553 struct {
1554 struct policy_handle *domain_handle;/* [ref] */
1555 struct lsa_String *account_name;/* [ref] */
1556 uint32_t acct_flags;
1557 uint32_t access_mask;
1558 } in;
1560 struct {
1561 struct policy_handle *user_handle;/* [ref] */
1562 uint32_t *access_granted;/* [ref] */
1563 uint32_t *rid;/* [ref] */
1564 NTSTATUS result;
1565 } out;
1570 struct samr_QueryDisplayInfo3 {
1571 struct {
1572 struct policy_handle *domain_handle;/* [ref] */
1573 uint16_t level;
1574 uint32_t start_idx;
1575 uint32_t max_entries;
1576 uint32_t buf_size;
1577 } in;
1579 struct {
1580 uint32_t *total_size;/* [ref] */
1581 uint32_t *returned_size;/* [ref] */
1582 union samr_DispInfo *info;/* [ref,switch_is(level)] */
1583 NTSTATUS result;
1584 } out;
1589 struct samr_AddMultipleMembersToAlias {
1590 struct {
1591 struct policy_handle *alias_handle;/* [ref] */
1592 struct lsa_SidArray *sids;/* [ref] */
1593 } in;
1595 struct {
1596 NTSTATUS result;
1597 } out;
1602 struct samr_RemoveMultipleMembersFromAlias {
1603 struct {
1604 struct policy_handle *alias_handle;/* [ref] */
1605 struct lsa_SidArray *sids;/* [ref] */
1606 } in;
1608 struct {
1609 NTSTATUS result;
1610 } out;
1615 struct samr_OemChangePasswordUser2 {
1616 struct {
1617 struct lsa_AsciiString *server;/* [unique] */
1618 struct lsa_AsciiString *account;/* [ref] */
1619 struct samr_CryptPassword *password;/* [unique] */
1620 struct samr_Password *hash;/* [unique] */
1621 } in;
1623 struct {
1624 NTSTATUS result;
1625 } out;
1630 struct samr_ChangePasswordUser2 {
1631 struct {
1632 struct lsa_String *server;/* [unique] */
1633 struct lsa_String *account;/* [ref] */
1634 struct samr_CryptPassword *nt_password;/* [unique] */
1635 struct samr_Password *nt_verifier;/* [unique] */
1636 uint8_t lm_change;
1637 struct samr_CryptPassword *lm_password;/* [unique] */
1638 struct samr_Password *lm_verifier;/* [unique] */
1639 } in;
1641 struct {
1642 NTSTATUS result;
1643 } out;
1648 struct samr_GetDomPwInfo {
1649 struct {
1650 struct lsa_String *domain_name;/* [unique] */
1651 } in;
1653 struct {
1654 struct samr_PwInfo *info;/* [ref] */
1655 NTSTATUS result;
1656 } out;
1661 struct samr_Connect2 {
1662 struct {
1663 const char *system_name;/* [unique,charset(UTF16)] */
1664 uint32_t access_mask;
1665 } in;
1667 struct {
1668 struct policy_handle *connect_handle;/* [ref] */
1669 NTSTATUS result;
1670 } out;
1675 struct samr_SetUserInfo2 {
1676 struct {
1677 struct policy_handle *user_handle;/* [ref] */
1678 uint16_t level;
1679 union samr_UserInfo *info;/* [ref,switch_is(level)] */
1680 } in;
1682 struct {
1683 NTSTATUS result;
1684 } out;
1689 struct samr_SetBootKeyInformation {
1690 struct {
1691 struct policy_handle *connect_handle;/* [ref] */
1692 uint32_t unknown1;
1693 uint32_t unknown2;
1694 uint32_t unknown3;
1695 } in;
1697 struct {
1698 NTSTATUS result;
1699 } out;
1704 struct samr_GetBootKeyInformation {
1705 struct {
1706 struct policy_handle *domain_handle;/* [ref] */
1707 } in;
1709 struct {
1710 uint32_t *unknown;/* [ref] */
1711 NTSTATUS result;
1712 } out;
1717 struct samr_Connect3 {
1718 struct {
1719 const char *system_name;/* [unique,charset(UTF16)] */
1720 uint32_t unknown;
1721 uint32_t access_mask;
1722 } in;
1724 struct {
1725 struct policy_handle *connect_handle;/* [ref] */
1726 NTSTATUS result;
1727 } out;
1732 struct samr_Connect4 {
1733 struct {
1734 const char *system_name;/* [unique,charset(UTF16)] */
1735 enum samr_ConnectVersion client_version;
1736 uint32_t access_mask;
1737 } in;
1739 struct {
1740 struct policy_handle *connect_handle;/* [ref] */
1741 NTSTATUS result;
1742 } out;
1747 struct samr_ChangePasswordUser3 {
1748 struct {
1749 struct lsa_String *server;/* [unique] */
1750 struct lsa_String *account;/* [ref] */
1751 struct samr_CryptPassword *nt_password;/* [unique] */
1752 struct samr_Password *nt_verifier;/* [unique] */
1753 uint8_t lm_change;
1754 struct samr_CryptPassword *lm_password;/* [unique] */
1755 struct samr_Password *lm_verifier;/* [unique] */
1756 struct samr_CryptPassword *password3;/* [unique] */
1757 } in;
1759 struct {
1760 struct samr_DomInfo1 **dominfo;/* [ref] */
1761 struct samr_ChangeReject **reject;/* [ref] */
1762 NTSTATUS result;
1763 } out;
1768 struct samr_Connect5 {
1769 struct {
1770 const char *system_name;/* [unique,charset(UTF16)] */
1771 uint32_t access_mask;
1772 uint32_t level_in;
1773 union samr_ConnectInfo *info_in;/* [ref,switch_is(level_in)] */
1774 } in;
1776 struct {
1777 uint32_t *level_out;/* [ref] */
1778 union samr_ConnectInfo *info_out;/* [ref,switch_is(*level_out)] */
1779 struct policy_handle *connect_handle;/* [ref] */
1780 NTSTATUS result;
1781 } out;
1786 struct samr_RidToSid {
1787 struct {
1788 struct policy_handle *domain_handle;/* [ref] */
1789 uint32_t rid;
1790 } in;
1792 struct {
1793 struct dom_sid2 **sid;/* [ref] */
1794 NTSTATUS result;
1795 } out;
1800 struct samr_SetDsrmPassword {
1801 struct {
1802 struct lsa_String *name;/* [unique] */
1803 uint32_t unknown;
1804 struct samr_Password *hash;/* [unique] */
1805 } in;
1807 struct {
1808 NTSTATUS result;
1809 } out;
1814 struct samr_ValidatePassword {
1815 struct {
1816 enum samr_ValidatePasswordLevel level;
1817 union samr_ValidatePasswordReq *req;/* [ref,switch_is(level)] */
1818 } in;
1820 struct {
1821 union samr_ValidatePasswordRep **rep;/* [ref,switch_is(level)] */
1822 NTSTATUS result;
1823 } out;
1827 #endif /* _HEADER_samr */