s3-netlogon: use WERRORs in NETLOGON_INFO structures.
[ira/wip.git] / librpc / gen_ndr / netlogon.h
index c0507b1e2d588e1d6406343b22540c4f8049628a..931222f27c866de7f0f3d4e63bafaa676b5e5c15 100644 (file)
@@ -2,6 +2,8 @@
 
 #include <stdint.h>
 
+#include "libcli/util/ntstatus.h"
+
 #include "librpc/gen_ndr/misc.h"
 #include "librpc/gen_ndr/lsa.h"
 #include "librpc/gen_ndr/samr.h"
@@ -12,6 +14,8 @@
 #ifndef _HEADER_netlogon
 #define _HEADER_netlogon
 
+#define NETLOGON_NEG_128BIT    ( NETLOGON_NEG_STRONG_KEYS )
+#define NETLOGON_NEG_SCHANNEL  ( NETLOGON_NEG_AUTHENTICATED_RPC )
 #define DSGETDC_VALID_FLAGS    ( (DS_FORCE_REDISCOVERY|DS_DIRECTORY_SERVICE_REQUIRED|DS_DIRECTORY_SERVICE_PREFERRED|DS_GC_SERVER_REQUIRED|DS_PDC_REQUIRED|DS_BACKGROUND_ONLY|DS_IP_REQUIRED|DS_KDC_REQUIRED|DS_TIMESERV_REQUIRED|DS_WRITABLE_REQUIRED|DS_GOOD_TIMESERV_PREFERRED|DS_AVOID_SELF|DS_ONLY_LDAP_NEEDED|DS_IS_FLAT_NAME|DS_IS_DNS_NAME|DS_RETURN_FLAT_NAME|DS_RETURN_DNS_NAME) )
 #define DS_GFTI_UPDATE_TDO     ( 0x1 )
 struct netr_UasInfo {
@@ -49,9 +53,22 @@ struct netr_AcctLockStr {
 #define MSV1_0_CLEARTEXT_PASSWORD_ALLOWED ( 0x00000002 )
 #define MSV1_0_UPDATE_LOGON_STATISTICS ( 0x00000004 )
 #define MSV1_0_RETURN_USER_PARAMETERS ( 0x00000008 )
+#define MSV1_0_DONT_TRY_GUEST_ACCOUNT ( 0x00000010 )
 #define MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT ( 0x00000020 )
+#define MSV1_0_RETURN_PASSWORD_EXPIRY ( 0x00000040 )
+#define MSV1_0_USE_CLIENT_CHALLENGE ( 0x00000080 )
+#define MSV1_0_TRY_GUEST_ACCOUNT_ONLY ( 0x00000100 )
 #define MSV1_0_RETURN_PROFILE_PATH ( 0x00000200 )
+#define MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY ( 0x00000400 )
 #define MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT ( 0x00000800 )
+#define MSV1_0_DISABLE_PERSONAL_FALLBACK ( 0x00001000 )
+#define MSV1_0_ALLOW_FORCE_GUEST ( 0x00002000 )
+#define MSV1_0_CLEARTEXT_PASSWORD_SUPPLIED ( 0x00004000 )
+#define MSV1_0_USE_DOMAIN_FOR_ROUTING_ONLY ( 0x00008000 )
+#define MSV1_0_ALLOW_MSVCHAPV2 ( 0x00010000 )
+#define MSV1_0_S4U2SELF ( 0x00020000 )
+#define MSV1_0_CHECK_LOGONHOURS_FOR_S4U ( 0x00040000 )
+#define MSV1_0_SUBAUTHENTICATION_DLL_EX ( 0x00100000 )
 
 struct netr_IdentityInfo {
        struct lsa_String domain_name;
@@ -628,20 +645,25 @@ struct netr_AccountBuffer {
 };
 
 /* bitmap netr_InfoFlags */
-#define NETLOGON_CTRL_REPL_NEEDED ( 0x0001 )
-#define NETLOGON_CTRL_REPL_IN_PROGRESS ( 0x0002 )
-#define NETLOGON_CTRL_REPL_FULL_SYNC ( 0x0004 )
+#define NETLOGON_REPLICATION_NEEDED ( 0x00000001 )
+#define NETLOGON_REPLICATION_IN_PROGRESS ( 0x00000002 )
+#define NETLOGON_FULL_SYNC_REPLICATION ( 0x00000004 )
+#define NETLOGON_REDO_NEEDED ( 0x00000008 )
+#define NETLOGON_HAS_IP ( 0x00000010 )
+#define NETLOGON_HAS_TIMESERV ( 0x00000020 )
+#define NETLOGON_DNS_UPDATE_FAILURE ( 0x00000040 )
+#define NETLOGON_VERIFY_STATUS_RETURNED ( 0x00000080 )
 
 struct netr_NETLOGON_INFO_1 {
        uint32_t flags;
-       uint32_t pdc_connection_status;
+       WERROR pdc_connection_status;
 };
 
 struct netr_NETLOGON_INFO_2 {
        uint32_t flags;
-       uint32_t pdc_connection_status;
+       WERROR pdc_connection_status;
        const char *trusted_dc_name;/* [unique,charset(UTF16)] */
-       uint32_t tc_connection_status;
+       WERROR tc_connection_status;
 };
 
 struct netr_NETLOGON_INFO_3 {
@@ -728,7 +750,7 @@ union netr_CONTROL_DATA_INFORMATION {
 #define NETLOGON_NEG_CONCURRENT_RPC ( 0x00000800 )
 #define NETLOGON_NEG_AVOID_ACCOUNT_DB_REPL ( 0x00001000 )
 #define NETLOGON_NEG_AVOID_SECURITYAUTH_DB_REPL ( 0x00002000 )
-#define NETLOGON_NEG_128BIT ( 0x00004000 )
+#define NETLOGON_NEG_STRONG_KEYS ( 0x00004000 )
 #define NETLOGON_NEG_TRANSITIVE_TRUSTS ( 0x00008000 )
 #define NETLOGON_NEG_DNS_DOMAIN_TRUSTS ( 0x00010000 )
 #define NETLOGON_NEG_PASSWORD_SET2 ( 0x00020000 )
@@ -736,8 +758,37 @@ union netr_CONTROL_DATA_INFORMATION {
 #define NETLOGON_NEG_CROSS_FOREST_TRUSTS ( 0x00080000 )
 #define NETLOGON_NEG_NEUTRALIZE_NT4_EMULATION ( 0x00100000 )
 #define NETLOGON_NEG_RODC_PASSTHROUGH ( 0x00200000 )
+#define NETLOGON_NEG_SUPPORTS_AES_SHA2 ( 0x00400000 )
+#define NETLOGON_NEG_SUPPORTS_AES ( 0x01000000 )
 #define NETLOGON_NEG_AUTHENTICATED_RPC_LSASS ( 0x20000000 )
-#define NETLOGON_NEG_SCHANNEL ( 0x40000000 )
+#define NETLOGON_NEG_AUTHENTICATED_RPC ( 0x40000000 )
+
+enum SyncStateEnum
+#ifndef USE_UINT_ENUMS
+ {
+       SYNCSTATE_NORMAL_STATE=0,
+       SYNCSTATE_DOMAIN_STATE=1,
+       SYNCSTATE_GROUP_STATE=2,
+       SYNCSTATE_UAS_BUILT_IN_GROUP_STATE=3,
+       SYNCSTATE_USER_STATE=4,
+       SYNCSTATE_GROUP_MEMBER_STATE=5,
+       SYNCSTATE_ALIAS_STATE=6,
+       SYNCSTATE_ALIAS_MEMBER_STATE=7,
+       SYNCSTATE_SAM_DONE_STATE=8
+}
+#else
+ { __donnot_use_enum_SyncStateEnum=0x7FFFFFFF}
+#define SYNCSTATE_NORMAL_STATE ( 0 )
+#define SYNCSTATE_DOMAIN_STATE ( 1 )
+#define SYNCSTATE_GROUP_STATE ( 2 )
+#define SYNCSTATE_UAS_BUILT_IN_GROUP_STATE ( 3 )
+#define SYNCSTATE_USER_STATE ( 4 )
+#define SYNCSTATE_GROUP_MEMBER_STATE ( 5 )
+#define SYNCSTATE_ALIAS_STATE ( 6 )
+#define SYNCSTATE_ALIAS_MEMBER_STATE ( 7 )
+#define SYNCSTATE_SAM_DONE_STATE ( 8 )
+#endif
+;
 
 /* bitmap netr_ChangeLogFlags */
 #define NETR_CHANGELOG_IMMEDIATE_REPL_REQUIRED ( 0x0001 )
@@ -784,6 +835,7 @@ struct netr_Blob {
 #define DS_IS_DNS_NAME ( 0x00020000 )
 #define DS_TRY_NEXTCLOSEST_SITE ( 0x00040000 )
 #define DS_DIRECTORY_SERVICE_6_REQUIRED ( 0x00080000 )
+#define DS_WEB_SERVICE_REQUIRED ( 0x00100000 )
 #define DS_RETURN_DNS_NAME ( 0x40000000 )
 #define DS_RETURN_FLAT_NAME ( 0x80000000 )
 
@@ -829,6 +881,10 @@ struct netr_DsRGetDCNameInfo {
        const char *client_site_name;/* [unique,charset(UTF16)] */
 }/* [public] */;
 
+union netr_Capabilities {
+       uint32_t server_capabilities;/* [case] */
+}/* [switch_type(uint32)] */;
+
 /* bitmap netr_TrustFlags */
 #define NETR_TRUST_FLAG_IN_FOREST ( 0x00000001 )
 #define NETR_TRUST_FLAG_OUTBOUND ( 0x00000002 )
@@ -839,23 +895,83 @@ struct netr_DsRGetDCNameInfo {
 #define NETR_TRUST_FLAG_MIT_KRB5 ( 0x00000080 )
 #define NETR_TRUST_FLAG_AES ( 0x00000100 )
 
-struct netr_DomainQuery1 {
-       struct netr_Blob blob;
-       const char *workstation_domain;/* [unique,charset(UTF16)] */
-       const char *workstation_site;/* [unique,charset(UTF16)] */
-       const char *unknown1;/* [unique,charset(UTF16)] */
-       const char *unknown2;/* [unique,charset(UTF16)] */
-       const char *unknown3;/* [unique,charset(UTF16)] */
-       const char *unknown4;/* [unique,charset(UTF16)] */
-       struct lsa_BinaryString blob2;
-       struct lsa_String product;
-       struct lsa_String unknown5;
-       struct lsa_String unknown6;
-       uint32_t unknown7[4];
+/* bitmap netr_WorkstationFlags */
+#define NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS ( 0x00000001 )
+#define NETR_WS_FLAG_HANDLES_SPN_UPDATE ( 0x00000002 )
+
+/* bitmap netr_SuiteMask */
+#define NETR_VER_SUITE_BACKOFFICE ( 0x0004 )
+#define NETR_VER_SUITE_BLADE ( 0x0400 )
+#define NETR_VER_SUITE_COMPUTE_SERVER ( 0x4000 )
+#define NETR_VER_SUITE_DATACENTER ( 0x0080 )
+#define NETR_VER_SUITE_ENTERPRISE ( 0x0002 )
+#define NETR_VER_SUITE_EMBEDDEDNT ( 0x0040 )
+#define NETR_VER_SUITE_PERSONAL ( 0x0200 )
+#define NETR_VER_SUITE_SINGLEUSERTS ( 0x0100 )
+#define NETR_VER_SUITE_SMALLBUSINESS ( 0x0001 )
+#define NETR_VER_SUITE_SMALLBUSINESS_RESTRICTED ( 0x0020 )
+#define NETR_VER_SUITE_STORAGE_SERVER ( 0x2000 )
+#define NETR_VER_SUITE_TERMINAL ( 0x0010 )
+#define NETR_VER_SUITE_WH_SERVER ( 0x8000 )
+
+/* bitmap netr_ProductType */
+#define NETR_VER_NT_DOMAIN_CONTROLLER ( 0x02 )
+#define NETR_VER_NT_SERVER ( 0x03 )
+#define NETR_VER_NT_WORKSTATION ( 0x01 )
+
+struct netr_LsaPolicyInformation {
+       uint32_t policy_size;
+       uint8_t *policy;/* [unique,size_is(policy_size)] */
+};
+
+struct netr_OsVersionInfoEx {
+       uint32_t OSVersionInfoSize;/* [value(284)] */
+       uint32_t MajorVersion;
+       uint32_t MinorVersion;
+       uint32_t BuildNumber;
+       uint32_t PlatformId;
+       const char *CSDVersion;/* [charset(UTF16)] */
+       uint16_t ServicePackMajor;
+       uint16_t ServicePackMinor;
+       uint16_t SuiteMask;
+       uint8_t ProductType;
+       uint8_t Reserved;
+};
+
+struct netr_OsVersion {
+       uint32_t length;/* [value(142)] */
+       uint32_t dummy;/* [value(0)] */
+       uint32_t size;/* [value(142)] */
+       struct netr_OsVersionInfoEx os;
+};
+
+struct netr_OsVersionContainer {
+       uint16_t length;/* [value(os==NULL?0:284)] */
+       uint16_t size;/* [value(os==NULL?0:284)] */
+       struct netr_OsVersion *os;/* [unique] */
+};
+
+struct netr_WorkstationInformation {
+       struct netr_LsaPolicyInformation lsa_policy;
+       const char *dns_hostname;/* [unique,charset(UTF16)] */
+       const char *sitename;/* [unique,charset(UTF16)] */
+       const char *dummy1;/* [unique,charset(UTF16)] */
+       const char *dummy2;/* [unique,charset(UTF16)] */
+       const char *dummy3;/* [unique,charset(UTF16)] */
+       const char *dummy4;/* [unique,charset(UTF16)] */
+       struct netr_OsVersionContainer os_version;
+       struct lsa_String os_name;
+       struct lsa_String dummy_string3;
+       struct lsa_String dummy_string4;
+       uint32_t workstation_flags;
+       uint32_t dummy_long2;
+       uint32_t dummy_long3;
+       uint32_t dummy_long4;
 };
 
-union netr_DomainQuery {
-       struct netr_DomainQuery1 *query1;/* [unique,case] */
+union netr_WorkstationInfo {
+       struct netr_WorkstationInformation *workstation_info;/* [unique,case] */
+       struct netr_WorkstationInformation *lsa_policy_info;/* [unique,case(2)] */
 };
 
 struct netr_trust_extension {
@@ -874,41 +990,40 @@ struct netr_trust_extension_container {
        struct netr_trust_extension *info;/* [unique] */
 };
 
-struct netr_DomainTrustInfo {
+struct netr_OneDomainInfo {
        struct lsa_String domainname;
-       struct lsa_String fulldomainname;
-       struct lsa_String forest;
-       struct GUID guid;
-       struct dom_sid2 *sid;/* [unique] */
+       struct lsa_String dns_domainname;
+       struct lsa_String dns_forestname;
+       struct GUID domain_guid;
+       struct dom_sid2 *domain_sid;/* [unique] */
        struct netr_trust_extension_container trust_extension;
-       struct lsa_String dummystring[3];
-       uint32_t dummy[4];
-};
-
-struct netr_LsaPolicyInfo {
-       uint32_t policy_size;
-       uint8_t *policy;/* [unique,size_is(policy_size)] */
-};
-
-/* bitmap netr_WorkstationFlags */
-#define NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS ( 0x00000001 )
-#define NETR_WS_FLAG_HANDLES_SPN_UPDATE ( 0x00000002 )
-
-struct netr_DomainInfo1 {
-       struct netr_DomainTrustInfo domaininfo;
-       uint32_t num_trusts;
-       struct netr_DomainTrustInfo *trusts;/* [unique,size_is(num_trusts)] */
-       struct netr_LsaPolicyInfo lsa_policy;
+       struct lsa_String dummy_string2;
+       struct lsa_String dummy_string3;
+       struct lsa_String dummy_string4;
+       uint32_t dummy_long1;
+       uint32_t dummy_long2;
+       uint32_t dummy_long3;
+       uint32_t dummy_long4;
+};
+
+struct netr_DomainInformation {
+       struct netr_OneDomainInfo primary_domain;
+       uint32_t trusted_domain_count;
+       struct netr_OneDomainInfo *trusted_domains;/* [unique,size_is(trusted_domain_count)] */
+       struct netr_LsaPolicyInformation lsa_policy;
        struct lsa_String dns_hostname;
-       struct lsa_String dummystring[3];
+       struct lsa_String dummy_string2;
+       struct lsa_String dummy_string3;
+       struct lsa_String dummy_string4;
        uint32_t workstation_flags;
        uint32_t supported_enc_types;
-       uint32_t dummy[2];
+       uint32_t dummy_long3;
+       uint32_t dummy_long4;
 };
 
 union netr_DomainInfo {
-       struct netr_DomainInfo1 *info1;/* [unique,case] */
-       struct netr_DomainInfo1 *info2;/* [unique,case(2)] */
+       struct netr_DomainInformation *domain_info;/* [unique,case] */
+       struct netr_LsaPolicyInformation *lsa_policy_info;/* [unique,case(2)] */
 };
 
 struct netr_CryptPassword {
@@ -990,8 +1105,8 @@ struct netr_TrustInfo {
 struct netr_LogonUasLogon {
        struct {
                const char *server_name;/* [unique,charset(UTF16)] */
-               const char *account_name;/* [charset(UTF16)] */
-               const char *workstation;/* [charset(UTF16)] */
+               const char *account_name;/* [ref,charset(UTF16)] */
+               const char *workstation;/* [ref,charset(UTF16)] */
        } in;
 
        struct {
@@ -1005,8 +1120,8 @@ struct netr_LogonUasLogon {
 struct netr_LogonUasLogoff {
        struct {
                const char *server_name;/* [unique,charset(UTF16)] */
-               const char *account_name;/* [charset(UTF16)] */
-               const char *workstation;/* [charset(UTF16)] */
+               const char *account_name;/* [ref,charset(UTF16)] */
+               const char *workstation;/* [ref,charset(UTF16)] */
        } in;
 
        struct {
@@ -1059,7 +1174,7 @@ struct netr_LogonSamLogoff {
 struct netr_ServerReqChallenge {
        struct {
                const char *server_name;/* [unique,charset(UTF16)] */
-               const char *computer_name;/* [charset(UTF16)] */
+               const char *computer_name;/* [ref,charset(UTF16)] */
                struct netr_Credential *credentials;/* [ref] */
        } in;
 
@@ -1074,9 +1189,9 @@ struct netr_ServerReqChallenge {
 struct netr_ServerAuthenticate {
        struct {
                const char *server_name;/* [unique,charset(UTF16)] */
-               const char *account_name;/* [charset(UTF16)] */
+               const char *account_name;/* [ref,charset(UTF16)] */
                enum netr_SchannelType secure_channel_type;
-               const char *computer_name;/* [charset(UTF16)] */
+               const char *computer_name;/* [ref,charset(UTF16)] */
                struct netr_Credential *credentials;/* [ref] */
        } in;
 
@@ -1091,9 +1206,9 @@ struct netr_ServerAuthenticate {
 struct netr_ServerPasswordSet {
        struct {
                const char *server_name;/* [unique,charset(UTF16)] */
-               const char *account_name;/* [charset(UTF16)] */
+               const char *account_name;/* [ref,charset(UTF16)] */
                enum netr_SchannelType secure_channel_type;
-               const char *computer_name;/* [charset(UTF16)] */
+               const char *computer_name;/* [ref,charset(UTF16)] */
                struct netr_Authenticator *credential;/* [ref] */
                struct samr_Password *new_password;/* [ref] */
        } in;
@@ -1108,8 +1223,8 @@ struct netr_ServerPasswordSet {
 
 struct netr_DatabaseDeltas {
        struct {
-               const char *logon_server;/* [charset(UTF16)] */
-               const char *computername;/* [charset(UTF16)] */
+               const char *logon_server;/* [ref,charset(UTF16)] */
+               const char *computername;/* [ref,charset(UTF16)] */
                struct netr_Authenticator *credential;/* [ref] */
                enum netr_SamDatabaseID database_id;
                uint32_t preferredmaximumlength;
@@ -1129,8 +1244,8 @@ struct netr_DatabaseDeltas {
 
 struct netr_DatabaseSync {
        struct {
-               const char *logon_server;/* [charset(UTF16)] */
-               const char *computername;/* [charset(UTF16)] */
+               const char *logon_server;/* [ref,charset(UTF16)] */
+               const char *computername;/* [ref,charset(UTF16)] */
                struct netr_Authenticator *credential;/* [ref] */
                enum netr_SamDatabaseID database_id;
                uint32_t preferredmaximumlength;
@@ -1151,7 +1266,7 @@ struct netr_DatabaseSync {
 struct netr_AccountDeltas {
        struct {
                const char *logon_server;/* [unique,charset(UTF16)] */
-               const char *computername;/* [charset(UTF16)] */
+               const char *computername;/* [ref,charset(UTF16)] */
                struct netr_Authenticator credential;
                struct netr_UAS_INFO_0 uas;
                uint32_t count;
@@ -1175,7 +1290,7 @@ struct netr_AccountDeltas {
 struct netr_AccountSync {
        struct {
                const char *logon_server;/* [unique,charset(UTF16)] */
-               const char *computername;/* [charset(UTF16)] */
+               const char *computername;/* [ref,charset(UTF16)] */
                struct netr_Authenticator credential;
                uint32_t reference;
                uint32_t level;
@@ -1199,7 +1314,7 @@ struct netr_AccountSync {
 
 struct netr_GetDcName {
        struct {
-               const char *logon_server;/* [charset(UTF16)] */
+               const char *logon_server;/* [ref,charset(UTF16)] */
                const char *domainname;/* [unique,charset(UTF16)] */
        } in;
 
@@ -1219,7 +1334,7 @@ struct netr_LogonControl {
        } in;
 
        struct {
-               union netr_CONTROL_QUERY_INFORMATION *info;/* [ref,switch_is(level)] */
+               union netr_CONTROL_QUERY_INFORMATION *query;/* [ref,switch_is(level)] */
                WERROR result;
        } out;
 
@@ -1259,9 +1374,9 @@ struct netr_LogonControl2 {
 struct netr_ServerAuthenticate2 {
        struct {
                const char *server_name;/* [unique,charset(UTF16)] */
-               const char *account_name;/* [charset(UTF16)] */
+               const char *account_name;/* [ref,charset(UTF16)] */
                enum netr_SchannelType secure_channel_type;
-               const char *computer_name;/* [charset(UTF16)] */
+               const char *computer_name;/* [ref,charset(UTF16)] */
                struct netr_Credential *credentials;/* [ref] */
                uint32_t *negotiate_flags;/* [ref] */
        } in;
@@ -1277,11 +1392,11 @@ struct netr_ServerAuthenticate2 {
 
 struct netr_DatabaseSync2 {
        struct {
-               const char *logon_server;/* [charset(UTF16)] */
-               const char *computername;/* [charset(UTF16)] */
+               const char *logon_server;/* [ref,charset(UTF16)] */
+               const char *computername;/* [ref,charset(UTF16)] */
                struct netr_Authenticator *credential;/* [ref] */
                enum netr_SamDatabaseID database_id;
-               uint16_t restart_state;
+               enum SyncStateEnum restart_state;
                uint32_t preferredmaximumlength;
                struct netr_Authenticator *return_authenticator;/* [ref] */
                uint32_t *sync_context;/* [ref] */
@@ -1299,11 +1414,11 @@ struct netr_DatabaseSync2 {
 
 struct netr_DatabaseRedo {
        struct {
-               const char *logon_server;/* [charset(UTF16)] */
-               const char *computername;/* [charset(UTF16)] */
+               const char *logon_server;/* [ref,charset(UTF16)] */
+               const char *computername;/* [ref,charset(UTF16)] */
                struct netr_Authenticator *credential;/* [ref] */
                struct netr_ChangeLogEntry change_log_entry;/* [subcontext_size(change_log_entry_size),subcontext(4)] */
-               uint32_t change_log_entry_size;/* [value(ndr_size_netr_ChangeLogEntry(&change_log_entry,ndr->flags))] */
+               uint32_t change_log_entry_size;/* [value(ndr_size_netr_ChangeLogEntry(&change_log_entry,ndr->iconv_convenience,ndr->flags))] */
                struct netr_Authenticator *return_authenticator;/* [ref] */
        } in;
 
@@ -1362,9 +1477,19 @@ struct netr_DsRGetDCName {
 };
 
 
-struct netr_NETRLOGONDUMMYROUTINE1 {
+struct netr_LogonGetCapabilities {
        struct {
-               WERROR result;
+               const char *server_name;/* [ref,charset(UTF16)] */
+               const char *computer_name;/* [unique,charset(UTF16)] */
+               struct netr_Authenticator *credential;/* [ref] */
+               uint32_t query_level;
+               struct netr_Authenticator *return_authenticator;/* [ref] */
+       } in;
+
+       struct {
+               union netr_Capabilities *capabilities;/* [ref,switch_is(query_level)] */
+               struct netr_Authenticator *return_authenticator;/* [ref] */
+               NTSTATUS result;
        } out;
 
 };
@@ -1411,9 +1536,9 @@ struct netr_NETRLOGONCOMPUTECLIENTDIGEST {
 struct netr_ServerAuthenticate3 {
        struct {
                const char *server_name;/* [unique,charset(UTF16)] */
-               const char *account_name;/* [charset(UTF16)] */
+               const char *account_name;/* [ref,charset(UTF16)] */
                enum netr_SchannelType secure_channel_type;
-               const char *computer_name;/* [charset(UTF16)] */
+               const char *computer_name;/* [ref,charset(UTF16)] */
                struct netr_Credential *credentials;/* [ref] */
                uint32_t *negotiate_flags;/* [ref] */
        } in;
@@ -1460,11 +1585,11 @@ struct netr_DsRGetSiteName {
 
 struct netr_LogonGetDomainInfo {
        struct {
-               const char *server_name;/* [charset(UTF16)] */
+               const char *server_name;/* [ref,charset(UTF16)] */
                const char *computer_name;/* [unique,charset(UTF16)] */
                struct netr_Authenticator *credential;/* [ref] */
                uint32_t level;
-               union netr_DomainQuery query;/* [switch_is(level)] */
+               union netr_WorkstationInfo *query;/* [ref,switch_is(level)] */
                struct netr_Authenticator *return_authenticator;/* [ref] */
        } in;
 
@@ -1480,9 +1605,9 @@ struct netr_LogonGetDomainInfo {
 struct netr_ServerPasswordSet2 {
        struct {
                const char *server_name;/* [unique,charset(UTF16)] */
-               const char *account_name;/* [charset(UTF16)] */
+               const char *account_name;/* [ref,charset(UTF16)] */
                enum netr_SchannelType secure_channel_type;
-               const char *computer_name;/* [charset(UTF16)] */
+               const char *computer_name;/* [ref,charset(UTF16)] */
                struct netr_Authenticator *credential;/* [ref] */
                struct netr_CryptPassword *new_password;/* [ref] */
        } in;
@@ -1498,9 +1623,9 @@ struct netr_ServerPasswordSet2 {
 struct netr_ServerPasswordGet {
        struct {
                const char *server_name;/* [unique,charset(UTF16)] */
-               const char *account_name;/* [charset(UTF16)] */
+               const char *account_name;/* [ref,charset(UTF16)] */
                enum netr_SchannelType secure_channel_type;
-               const char *computer_name;/* [charset(UTF16)] */
+               const char *computer_name;/* [ref,charset(UTF16)] */
                struct netr_Authenticator *credential;/* [ref] */
        } in;
 
@@ -1657,9 +1782,9 @@ struct netr_DsrDeregisterDNSHostRecords {
 struct netr_ServerTrustPasswordsGet {
        struct {
                const char *server_name;/* [unique,charset(UTF16)] */
-               const char *account_name;/* [charset(UTF16)] */
+               const char *account_name;/* [ref,charset(UTF16)] */
                enum netr_SchannelType secure_channel_type;
-               const char *computer_name;/* [charset(UTF16)] */
+               const char *computer_name;/* [ref,charset(UTF16)] */
                struct netr_Authenticator *credential;/* [ref] */
        } in;