NETLOGON pipe improvements
[ira/wip.git] / librpc / idl / netlogon.idl
index c3a028c58726aab78f0143edf9a8af45c6565264..4a90c2c87c32a1bed03d2e1a072876f546588e03 100644 (file)
@@ -728,7 +728,6 @@ interface netlogon
                [size_is(num_deltas)] netr_DELTA_ENUM *delta_enum;
        } netr_DELTA_ENUM_ARRAY;
 
-
        NTSTATUS netr_DatabaseDeltas(
                [in]      [string,charset(UTF16)] uint16 logon_server[],
                [in]      [string,charset(UTF16)] uint16 computername[],
@@ -846,10 +845,16 @@ interface netlogon
                uint32 unknown5;
        } netr_NETLOGON_INFO_3;
 
+       typedef struct {
+               [string,charset(UTF16)] uint16 *trusted_dc_name;
+               [string,charset(UTF16)] uint16 *trusted_domain_name;
+       } netr_NETLOGON_INFO_4;
+
        typedef union {
                [case(1)]  netr_NETLOGON_INFO_1 *info1;
                [case(2)]  netr_NETLOGON_INFO_2 *info2;
                [case(3)]  netr_NETLOGON_INFO_3 *info3;
+               [case(4)]  netr_NETLOGON_INFO_4 *info4;
        } netr_CONTROL_QUERY_INFORMATION;
 
        /* function_code values */
@@ -876,7 +881,7 @@ interface netlogon
                [in,unique] [string,charset(UTF16)] uint16 *logon_server,
                [in]   netr_LogonControlCode function_code,
                [in]   uint32 level,
-               [out,ref,switch_is(level)]  netr_CONTROL_QUERY_INFORMATION *info
+               [out,ref,switch_is(level)]  netr_CONTROL_QUERY_INFORMATION *query
                );
 
 
@@ -897,6 +902,9 @@ interface netlogon
                [case(NETLOGON_CONTROL_REDISCOVER)]        [string,charset(UTF16)] uint16 *domain;
                [case(NETLOGON_CONTROL_TC_QUERY)]          [string,charset(UTF16)] uint16 *domain;
                [case(NETLOGON_CONTROL_TRANSPORT_NOTIFY)]  [string,charset(UTF16)] uint16 *domain;
+               [case(NETLOGON_CONTROL_CHANGE_PASSWORD)]   [string,charset(UTF16)] uint16 *domain;
+               [case(NETLOGON_CONTROL_TC_VERIFY)]         [string,charset(UTF16)] uint16 *domain;
+               [case(NETLOGON_CONTROL_FIND_USER)]         [string,charset(UTF16)] uint16 *user;
                [case(NETLOGON_CONTROL_SET_DBFLAG)]        uint32 debug_level;
        } netr_CONTROL_DATA_INFORMATION;
 
@@ -931,7 +939,7 @@ interface netlogon
                NETLOGON_NEG_CONCURRENT_RPC             = 0x00000800,
                NETLOGON_NEG_AVOID_ACCOUNT_DB_REPL      = 0x00001000,
                NETLOGON_NEG_AVOID_SECURITYAUTH_DB_REPL = 0x00002000,
-               NETLOGON_NEG_128BIT                     = 0x00004000, /* STRONG_KEYS */
+               NETLOGON_NEG_STRONG_KEYS                = 0x00004000,
                NETLOGON_NEG_TRANSITIVE_TRUSTS          = 0x00008000,
                NETLOGON_NEG_DNS_DOMAIN_TRUSTS          = 0x00010000,
                NETLOGON_NEG_PASSWORD_SET2              = 0x00020000,
@@ -939,10 +947,14 @@ interface netlogon
                NETLOGON_NEG_CROSS_FOREST_TRUSTS        = 0x00080000,
                NETLOGON_NEG_NEUTRALIZE_NT4_EMULATION   = 0x00100000,
                NETLOGON_NEG_RODC_PASSTHROUGH           = 0x00200000,
+               NETLOGON_NEG_SUPPORTS_AES_SHA2          = 0x00400000,
                NETLOGON_NEG_AUTHENTICATED_RPC_LSASS    = 0x20000000,
-               NETLOGON_NEG_SCHANNEL                   = 0x40000000 /* AUTHENTICATED_RPC */
+               NETLOGON_NEG_AUTHENTICATED_RPC          = 0x40000000
        } netr_NegotiateFlags;
 
+       const uint32 NETLOGON_NEG_128BIT = NETLOGON_NEG_STRONG_KEYS;
+       const uint32 NETLOGON_NEG_SCHANNEL = NETLOGON_NEG_AUTHENTICATED_RPC;
+
        NTSTATUS netr_ServerAuthenticate2(
                [in,unique]  [string,charset(UTF16)] uint16 *server_name,
                [in]         [string,charset(UTF16)] uint16 account_name[],
@@ -957,13 +969,25 @@ interface netlogon
        /*****************/
        /* Function 0x10 */
 
+       typedef enum {
+               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
+       } SyncStateEnum;
+
        NTSTATUS netr_DatabaseSync2(
                [in]     [string,charset(UTF16)] uint16 logon_server[],
                [in]     [string,charset(UTF16)] uint16 computername[],
                [in,ref] netr_Authenticator *credential,
                [in,out,ref] netr_Authenticator *return_authenticator,
                [in]     netr_SamDatabaseID database_id,
-               [in]     uint16 restart_state,
+               [in]     SyncStateEnum restart_state,
                [in,out,ref] uint32 *sync_context,
                [out,ref]    netr_DELTA_ENUM_ARRAY **delta_enum_array,
                [in]     uint32 preferredmaximumlength
@@ -1005,7 +1029,7 @@ interface netlogon
                [in]     netr_Authenticator *credential,
                [in,out,ref] netr_Authenticator *return_authenticator,
                [in]     [subcontext(4),subcontext_size(change_log_entry_size)] netr_ChangeLogEntry change_log_entry,
-               [in]     [value(ndr_size_netr_ChangeLogEntry(&change_log_entry, ndr->flags))] uint32 change_log_entry_size,
+               [in]     [value(ndr_size_netr_ChangeLogEntry(&change_log_entry, ndr->iconv_convenience, ndr->flags))] uint32 change_log_entry_size,
                [out,ref]    netr_DELTA_ENUM_ARRAY **delta_enum_array
                );
 
@@ -1015,9 +1039,9 @@ interface netlogon
 
        WERROR netr_LogonControl2Ex(
                [in,unique] [string,charset(UTF16)] uint16 *logon_server,
-               [in]   uint32 function_code,
+               [in]   netr_LogonControlCode function_code,
                [in]   uint32 level,
-               [in][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION  data,
+               [in,ref][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION  *data,
                [out,ref][switch_is(level)]     netr_CONTROL_QUERY_INFORMATION *query
                );
 
@@ -1124,7 +1148,18 @@ interface netlogon
 
        /*****************/
        /* Function 0x15 */
-       [todo] WERROR netr_NETRLOGONDUMMYROUTINE1();
+       typedef [switch_type(uint32)] union {
+               [case(1)] netr_NegotiateFlags server_capabilities;
+       } netr_Capabilities;
+
+       NTSTATUS netr_LogonGetCapabilities(
+               [in]         [string,charset(UTF16)] uint16 server_name[],
+               [in,unique]  [string,charset(UTF16)] uint16 *computer_name,
+               [in,ref]     netr_Authenticator *credential,
+               [in,out,ref] netr_Authenticator *return_authenticator,
+               [in]         uint32 query_level,
+               [out,ref,switch_is(query_level)] netr_Capabilities *capabilities
+               );
 
        /****************/
        /* Function 0x16 */
@@ -1192,12 +1227,6 @@ interface netlogon
                NETR_TRUST_FLAG_AES       = 0x00000100
        } netr_TrustFlags;
 
-       typedef [flag(NDR_PAHEX)] struct {
-               uint16 length;
-               uint16 size;
-               [size_is(size/2),length_is(length/2)] uint16 *data;
-       } netr_BinaryString;
-
        typedef struct {
                netr_Blob blob;
                [string,charset(UTF16)] uint16 *workstation_domain;
@@ -1206,7 +1235,7 @@ interface netlogon
                [string,charset(UTF16)] uint16 *unknown2;
                [string,charset(UTF16)] uint16 *unknown3;
                [string,charset(UTF16)] uint16 *unknown4;
-               netr_BinaryString blob2;
+               lsa_BinaryString blob2;
                lsa_String product;
                lsa_String unknown5;
                lsa_String unknown6;