Fix bug #6089 - Winbind samr_OpenDomain not possible with Samba 3.2.6+
[samba.git] / source / librpc / gen_ndr / samr.h
index c6a68e8bd571664fa25c68ce2022e5efa3467511..3423a08cd6d3b72e37bfd1aae9489c979dec4bd1 100644 (file)
@@ -8,7 +8,36 @@
 #ifndef _HEADER_samr
 #define _HEADER_samr
 
+#define SAMR_ACCESS_ALL_ACCESS ( 0x0000003F )
+#define GENERIC_RIGHTS_SAM_ALL_ACCESS  ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_ACCESS_ALL_ACCESS) )
+#define GENERIC_RIGHTS_SAM_READ        ( (STANDARD_RIGHTS_READ_ACCESS|SAMR_ACCESS_ENUM_DOMAINS) )
+#define GENERIC_RIGHTS_SAM_WRITE       ( (STANDARD_RIGHTS_WRITE_ACCESS|SAMR_ACCESS_CREATE_DOMAIN|SAMR_ACCESS_INITIALIZE_SERVER|SAMR_ACCESS_SHUTDOWN_SERVER) )
+#define GENERIC_RIGHTS_SAM_EXECUTE     ( (STANDARD_RIGHTS_EXECUTE_ACCESS|SAMR_ACCESS_LOOKUP_DOMAIN|SAMR_ACCESS_CONNECT_TO_SERVER) )
+#define SAMR_USER_ACCESS_ALL_ACCESS    ( 0x000007FF )
+#define GENERIC_RIGHTS_USER_ALL_ACCESS ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_USER_ACCESS_ALL_ACCESS) )
+#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) )
+#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) )
+#define GENERIC_RIGHTS_USER_EXECUTE    ( (STANDARD_RIGHTS_EXECUTE_ACCESS|SAMR_USER_ACCESS_CHANGE_PASSWORD|SAMR_USER_ACCESS_GET_NAME_ETC) )
+#define SAMR_DOMAIN_ACCESS_ALL_ACCESS  ( 0x000007FF )
+#define GENERIC_RIGHTS_DOMAIN_ALL_ACCESS       ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_DOMAIN_ACCESS_ALL_ACCESS) )
+#define GENERIC_RIGHTS_DOMAIN_READ     ( (STANDARD_RIGHTS_READ_ACCESS|SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS|SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2) )
+#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) )
+#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) )
+#define SAMR_GROUP_ACCESS_ALL_ACCESS   ( 0x0000001F )
+#define GENERIC_RIGHTS_GROUP_ALL_ACCESS        ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_GROUP_ACCESS_ALL_ACCESS) )
+#define GENERIC_RIGHTS_GROUP_READ      ( (STANDARD_RIGHTS_READ_ACCESS|SAMR_GROUP_ACCESS_GET_MEMBERS) )
+#define GENERIC_RIGHTS_GROUP_WRITE     ( (STANDARD_RIGHTS_WRITE_ACCESS|SAMR_GROUP_ACCESS_REMOVE_MEMBER|SAMR_GROUP_ACCESS_ADD_MEMBER|SAMR_GROUP_ACCESS_SET_INFO) )
+#define GENERIC_RIGHTS_GROUP_EXECUTE   ( (STANDARD_RIGHTS_EXECUTE_ACCESS|SAMR_GROUP_ACCESS_LOOKUP_INFO) )
+#define SAMR_ALIAS_ACCESS_ALL_ACCESS   ( 0x0000001F )
+#define GENERIC_RIGHTS_ALIAS_ALL_ACCESS        ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SAMR_ALIAS_ACCESS_ALL_ACCESS) )
+#define GENERIC_RIGHTS_ALIAS_READ      ( (STANDARD_RIGHTS_READ_ACCESS|SAMR_ALIAS_ACCESS_GET_MEMBERS) )
+#define GENERIC_RIGHTS_ALIAS_WRITE     ( (STANDARD_RIGHTS_WRITE_ACCESS|SAMR_ALIAS_ACCESS_REMOVE_MEMBER|SAMR_ALIAS_ACCESS_ADD_MEMBER|SAMR_ALIAS_ACCESS_SET_INFO) )
+#define GENERIC_RIGHTS_ALIAS_EXECUTE   ( (STANDARD_RIGHTS_EXECUTE_ACCESS|SAMR_ALIAS_ACCESS_LOOKUP_INFO) )
+#define MAX_SAM_ENTRIES_W2K    ( 0x400 )
+#define MAX_SAM_ENTRIES_W95    ( 50 )
 #define SAMR_ENUM_USERS_MULTIPLIER     ( 54 )
+#define PASS_MUST_CHANGE_AT_NEXT_LOGON ( 0x01 )
+#define PASS_DONT_CHANGE_AT_NEXT_LOGON ( 0x00 )
 /* bitmap samr_AcctFlags */
 #define ACB_DISABLED ( 0x00000001 )
 #define ACB_HOMDIRREQ ( 0x00000002 )
@@ -36,7 +65,7 @@
 #define SAMR_ACCESS_INITIALIZE_SERVER ( 0x00000004 )
 #define SAMR_ACCESS_CREATE_DOMAIN ( 0x00000008 )
 #define SAMR_ACCESS_ENUM_DOMAINS ( 0x00000010 )
-#define SAMR_ACCESS_OPEN_DOMAIN ( 0x00000020 )
+#define SAMR_ACCESS_LOOKUP_DOMAIN ( 0x00000020 )
 
 /* bitmap samr_UserAccessMask */
 #define SAMR_USER_ACCESS_GET_NAME_ETC ( 0x00000001 )
@@ -180,8 +209,7 @@ struct samr_DomInfo12 {
 struct samr_DomInfo13 {
        uint64_t sequence_num;
        NTTIME domain_create_time;
-       uint32_t unknown1;
-       uint32_t unknown2;
+       uint64_t modified_count_at_last_promotion;
 };
 
 union samr_DomainInfo {
@@ -200,7 +228,7 @@ union samr_DomainInfo {
 }/* [switch_type(uint16)] */;
 
 struct samr_Ids {
-       uint32_t count;/* [range(0 1024)] */
+       uint32_t count;/* [range(0,1024)] */
        uint32_t *ids;/* [unique,size_is(count)] */
 };
 
@@ -400,8 +428,20 @@ struct samr_UserInfo17 {
        NTTIME acct_expiry;
 };
 
+struct samr_Password {
+       uint8_t hash[16];
+}/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
+
+struct samr_UserInfo18 {
+       struct samr_Password nt_pwd;
+       struct samr_Password lm_pwd;
+       uint8_t nt_pwd_active;
+       uint8_t lm_pwd_active;
+       uint8_t password_expired;
+};
+
 struct samr_UserInfo20 {
-       struct lsa_String parameters;
+       struct lsa_BinaryString parameters;
 };
 
 /* bitmap samr_FieldsPresent */
@@ -429,8 +469,8 @@ struct samr_UserInfo20 {
 #define SAMR_FIELD_PARAMETERS ( 0x00200000 )
 #define SAMR_FIELD_COUNTRY_CODE ( 0x00400000 )
 #define SAMR_FIELD_CODE_PAGE ( 0x00800000 )
-#define SAMR_FIELD_PASSWORD ( 0x01000000 )
-#define SAMR_FIELD_PASSWORD2 ( 0x02000000 )
+#define SAMR_FIELD_NT_PASSWORD_PRESENT ( 0x01000000 )
+#define SAMR_FIELD_LM_PASSWORD_PRESENT ( 0x02000000 )
 #define SAMR_FIELD_PRIVATE_DATA ( 0x04000000 )
 #define SAMR_FIELD_EXPIRED_FLAG ( 0x08000000 )
 #define SAMR_FIELD_SEC_DESC ( 0x10000000 )
@@ -452,9 +492,9 @@ struct samr_UserInfo21 {
        struct lsa_String description;
        struct lsa_String workstations;
        struct lsa_String comment;
-       struct lsa_String parameters;
-       struct lsa_String unknown1;
-       struct lsa_String unknown2;
+       struct lsa_BinaryString parameters;
+       struct lsa_BinaryString lm_owf_password;
+       struct lsa_BinaryString nt_owf_password;
        struct lsa_String unknown3;
        uint32_t buf_count;
        uint8_t *buffer;/* [unique,size_is(buf_count)] */
@@ -467,8 +507,8 @@ struct samr_UserInfo21 {
        uint16_t logon_count;
        uint16_t country_code;
        uint16_t code_page;
-       uint8_t nt_password_set;
        uint8_t lm_password_set;
+       uint8_t nt_password_set;
        uint8_t password_expired;
        uint8_t unknown4;
 };
@@ -484,7 +524,7 @@ struct samr_UserInfo23 {
 
 struct samr_UserInfo24 {
        struct samr_CryptPassword password;
-       uint8_t pw_len;
+       uint8_t password_expired;
 };
 
 struct samr_CryptPasswordEx {
@@ -498,7 +538,7 @@ struct samr_UserInfo25 {
 
 struct samr_UserInfo26 {
        struct samr_CryptPasswordEx password;
-       uint8_t pw_len;
+       uint8_t password_expired;
 };
 
 union samr_UserInfo {
@@ -518,6 +558,7 @@ union samr_UserInfo {
        struct samr_UserInfo14 info14;/* [case(14)] */
        struct samr_UserInfo16 info16;/* [case(16)] */
        struct samr_UserInfo17 info17;/* [case(17)] */
+       struct samr_UserInfo18 info18;/* [case(18)] */
        struct samr_UserInfo20 info20;/* [case(20)] */
        struct samr_UserInfo21 info21;/* [case(21)] */
        struct samr_UserInfo23 info23;/* [case(23)] */
@@ -526,10 +567,6 @@ union samr_UserInfo {
        struct samr_UserInfo26 info26;/* [case(26)] */
 }/* [switch_type(uint16)] */;
 
-struct samr_Password {
-       uint8_t hash[16];
-}/* [public,flag(LIBNDR_PRINT_ARRAY_HEX)] */;
-
 struct samr_RidWithAttribute {
        uint32_t rid;
        uint32_t attributes;
@@ -582,7 +619,7 @@ struct samr_DispInfoFullGroups {
 
 struct samr_DispEntryAscii {
        uint32_t idx;
-       struct lsa_AsciiString account_name;
+       struct lsa_AsciiStringLarge account_name;
 };
 
 struct samr_DispInfoAscii {
@@ -603,6 +640,21 @@ struct samr_PwInfo {
        uint32_t password_properties;
 };
 
+enum samr_ConnectVersion
+#ifndef USE_UINT_ENUMS
+ {
+       SAMR_CONNECT_PRE_W2K=1,
+       SAMR_CONNECT_W2K=2,
+       SAMR_CONNECT_AFTER_W2K=3
+}
+#else
+ { __donnot_use_enum_samr_ConnectVersion=0x7FFFFFFF}
+#define SAMR_CONNECT_PRE_W2K ( 1 )
+#define SAMR_CONNECT_W2K ( 2 )
+#define SAMR_CONNECT_AFTER_W2K ( 3 )
+#endif
+;
+
 enum samr_RejectReason;
 
 struct samr_ChangeReject {
@@ -612,7 +664,7 @@ struct samr_ChangeReject {
 };
 
 struct samr_ConnectInfo1 {
-       uint32_t unknown1;
+       enum samr_ConnectVersion client_version;
        uint32_t unknown2;
 };
 
@@ -773,7 +825,7 @@ struct samr_QuerySecurity {
        } in;
 
        struct {
-               struct sec_desc_buf *sdbuf;/* [ref] */
+               struct sec_desc_buf **sdbuf;/* [ref] */
                NTSTATUS result;
        } out;
 
@@ -799,7 +851,7 @@ struct samr_LookupDomain {
        } in;
 
        struct {
-               struct dom_sid2 *sid;/* [ref] */
+               struct dom_sid2 **sid;/* [ref] */
                NTSTATUS result;
        } out;
 
@@ -814,7 +866,7 @@ struct samr_EnumDomains {
        } in;
 
        struct {
-               struct samr_SamArray *sam;/* [ref] */
+               struct samr_SamArray **sam;/* [ref] */
                uint32_t *num_entries;/* [ref] */
                uint32_t *resume_handle;/* [ref] */
                NTSTATUS result;
@@ -845,7 +897,7 @@ struct samr_QueryDomainInfo {
        } in;
 
        struct {
-               union samr_DomainInfo *info;/* [ref,switch_is(level)] */
+               union samr_DomainInfo **info;/* [ref,switch_is(level)] */
                NTSTATUS result;
        } out;
 
@@ -890,7 +942,7 @@ struct samr_EnumDomainGroups {
        } in;
 
        struct {
-               struct samr_SamArray *sam;/* [ref] */
+               struct samr_SamArray **sam;/* [ref] */
                uint32_t *num_entries;/* [ref] */
                uint32_t *resume_handle;/* [ref] */
                NTSTATUS result;
@@ -924,7 +976,7 @@ struct samr_EnumDomainUsers {
        } in;
 
        struct {
-               struct samr_SamArray *sam;/* [unique] */
+               struct samr_SamArray **sam;/* [ref] */
                uint32_t *num_entries;/* [ref] */
                uint32_t *resume_handle;/* [ref] */
                NTSTATUS result;
@@ -952,12 +1004,12 @@ struct samr_CreateDomAlias {
 struct samr_EnumDomainAliases {
        struct {
                struct policy_handle *domain_handle;/* [ref] */
-               uint32_t acct_flags;
+               uint32_t max_size;
                uint32_t *resume_handle;/* [ref] */
        } in;
 
        struct {
-               struct samr_SamArray *sam;/* [ref] */
+               struct samr_SamArray **sam;/* [ref] */
                uint32_t *num_entries;/* [ref] */
                uint32_t *resume_handle;/* [ref] */
                NTSTATUS result;
@@ -983,7 +1035,7 @@ struct samr_GetAliasMembership {
 struct samr_LookupNames {
        struct {
                struct policy_handle *domain_handle;/* [ref] */
-               uint32_t num_names;/* [range(0 1000)] */
+               uint32_t num_names;/* [range(0,1000)] */
                struct lsa_String *names;/* [length_is(num_names),size_is(1000)] */
        } in;
 
@@ -999,7 +1051,7 @@ struct samr_LookupNames {
 struct samr_LookupRids {
        struct {
                struct policy_handle *domain_handle;/* [ref] */
-               uint32_t num_rids;/* [range(0 1000)] */
+               uint32_t num_rids;/* [range(0,1000)] */
                uint32_t *rids;/* [length_is(num_rids),size_is(1000)] */
        } in;
 
@@ -1034,7 +1086,7 @@ struct samr_QueryGroupInfo {
        } in;
 
        struct {
-               union samr_GroupInfo *info;/* [ref,switch_is(level)] */
+               union samr_GroupInfo **info;/* [ref,switch_is(level)] */
                NTSTATUS result;
        } out;
 
@@ -1101,7 +1153,7 @@ struct samr_QueryGroupMember {
        } in;
 
        struct {
-               struct samr_RidTypeArray *rids;/* [ref] */
+               struct samr_RidTypeArray **rids;/* [ref] */
                NTSTATUS result;
        } out;
 
@@ -1144,7 +1196,7 @@ struct samr_QueryAliasInfo {
        } in;
 
        struct {
-               union samr_AliasInfo *info;/* [ref,switch_is(level)] */
+               union samr_AliasInfo **info;/* [ref,switch_is(level)] */
                NTSTATUS result;
        } out;
 
@@ -1252,7 +1304,7 @@ struct samr_QueryUserInfo {
        } in;
 
        struct {
-               union samr_UserInfo *info;/* [ref,switch_is(level)] */
+               union samr_UserInfo **info;/* [ref,switch_is(level)] */
                NTSTATUS result;
        } out;
 
@@ -1301,7 +1353,7 @@ struct samr_GetGroupsForUser {
        } in;
 
        struct {
-               struct samr_RidWithAttributeArray *rids;/* [ref] */
+               struct samr_RidWithAttributeArray **rids;/* [ref] */
                NTSTATUS result;
        } out;
 
@@ -1331,7 +1383,7 @@ struct samr_GetDisplayEnumerationIndex {
        struct {
                struct policy_handle *domain_handle;/* [ref] */
                uint16_t level;
-               struct lsa_String name;
+               struct lsa_String *name;/* [ref] */
        } in;
 
        struct {
@@ -1399,7 +1451,7 @@ struct samr_QueryDomainInfo2 {
        } in;
 
        struct {
-               union samr_DomainInfo *info;/* [ref,switch_is(level)] */
+               union samr_DomainInfo **info;/* [ref,switch_is(level)] */
                NTSTATUS result;
        } out;
 
@@ -1413,7 +1465,7 @@ struct samr_QueryUserInfo2 {
        } in;
 
        struct {
-               union samr_UserInfo *info;/* [ref,switch_is(level)] */
+               union samr_UserInfo **info;/* [ref,switch_is(level)] */
                NTSTATUS result;
        } out;
 
@@ -1443,7 +1495,7 @@ struct samr_GetDisplayEnumerationIndex2 {
        struct {
                struct policy_handle *domain_handle;/* [ref] */
                uint16_t level;
-               struct lsa_String name;
+               struct lsa_String *name;/* [ref] */
        } in;
 
        struct {
@@ -1637,7 +1689,7 @@ struct samr_Connect3 {
 struct samr_Connect4 {
        struct {
                const char *system_name;/* [unique,charset(UTF16)] */
-               uint32_t unknown;
+               enum samr_ConnectVersion client_version;
                uint32_t access_mask;
        } in;
 
@@ -1662,8 +1714,8 @@ struct samr_ChangePasswordUser3 {
        } in;
 
        struct {
-               struct samr_DomInfo1 *dominfo;/* [ref] */
-               struct samr_ChangeReject *reject;/* [ref] */
+               struct samr_DomInfo1 **dominfo;/* [ref] */
+               struct samr_ChangeReject **reject;/* [ref] */
                NTSTATUS result;
        } out;
 
@@ -1719,11 +1771,11 @@ struct samr_SetDsrmPassword {
 struct samr_ValidatePassword {
        struct {
                enum samr_ValidatePasswordLevel level;
-               union samr_ValidatePasswordReq req;/* [switch_is(level)] */
+               union samr_ValidatePasswordReq *req;/* [ref,switch_is(level)] */
        } in;
 
        struct {
-               union samr_ValidatePasswordRep *rep;/* [ref,switch_is(level)] */
+               union samr_ValidatePasswordRep **rep;/* [ref,switch_is(level)] */
                NTSTATUS result;
        } out;