#include "idl_types.h"
+cpp_quote("#define netr_DeltaEnum8Bit netr_DeltaEnum")
+cpp_quote("#define netr_SamDatabaseID8Bit netr_SamDatabaseID")
+
[
uuid("12345678-1234-abcd-ef00-01234567cffb"),
version(1.0),
endpoint("ncacn_np:[\\pipe\\netlogon]","ncacn_ip_tcp:","ncalrpc:"),
+ helper("../librpc/ndr/ndr_netlogon.h"),
pointer_default(unique)
]
{
typedef bitmap samr_AcctFlags samr_AcctFlags;
typedef bitmap samr_GroupAttrs samr_GroupAttrs;
+ typedef enum netr_DeltaEnum8Bit netr_DeltaEnum8Bit;
+ typedef enum netr_SamDatabaseID8Bit netr_SamDatabaseID8Bit;
/*****************/
/* Function 0x00 */
boolean8 lm_password_present;
boolean8 password_expired;
lsa_String comment;
- lsa_String parameters;
+ lsa_BinaryString parameters;
uint16 country_code;
uint16 code_page;
netr_USER_PRIVATE_INFO user_private_info;
[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[],
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 */
typedef [v1_enum] enum {
- NETLOGON_CONTROL_SYNC = 2,
- NETLOGON_CONTROL_REDISCOVER = 5,
- NETLOGON_CONTROL_TC_QUERY = 6,
- NETLOGON_CONTROL_TRANSPORT_NOTIFY = 7,
- NETLOGON_CONTROL_SET_DBFLAG = 65534
+ NETLOGON_CONTROL_QUERY = 0x00000001,
+ NETLOGON_CONTROL_REPLICATE = 0x00000002,
+ NETLOGON_CONTROL_SYNCHRONIZE = 0x00000003,
+ NETLOGON_CONTROL_PDC_REPLICATE = 0x00000004,
+ NETLOGON_CONTROL_REDISCOVER = 0x00000005,
+ NETLOGON_CONTROL_TC_QUERY = 0x00000006,
+ NETLOGON_CONTROL_TRANSPORT_NOTIFY = 0x00000007,
+ NETLOGON_CONTROL_FIND_USER = 0x00000008,
+ NETLOGON_CONTROL_CHANGE_PASSWORD = 0x00000009,
+ NETLOGON_CONTROL_TC_VERIFY = 0x0000000A,
+ NETLOGON_CONTROL_FORCE_DNS_REG = 0x0000000B,
+ NETLOGON_CONTROL_QUERY_DNS_REG = 0x0000000C,
+ NETLOGON_CONTROL_BACKUP_CHANGE_LOG = 0x0000FFFC,
+ NETLOGON_CONTROL_TRUNCATE_LOG = 0x0000FFFD,
+ NETLOGON_CONTROL_SET_DBFLAG = 0x0000FFFE,
+ NETLOGON_CONTROL_BREAKPOINT = 0x0000FFFF
} netr_LogonControlCode;
WERROR netr_LogonControl(
[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
);
[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;
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,
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[],
/*****************/
/* 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
/* i'm not at all sure how this call works */
+ typedef [bitmap16bit] bitmap {
+ NETR_CHANGELOG_IMMEDIATE_REPL_REQUIRED = 0x0001,
+ NETR_CHANGELOG_CHANGED_PASSWORD = 0x0002,
+ NETR_CHANGELOG_SID_INCLUDED = 0x0004,
+ NETR_CHANGELOG_NAME_INCLUDED = 0x0008,
+ NETR_CHANGELOG_FIRST_PROMOTION_OBJ = 0x0010
+ } netr_ChangeLogFlags;
+
+ typedef [nodiscriminant] union {
+ [case(NETR_CHANGELOG_SID_INCLUDED)] dom_sid object_sid;
+ [case(NETR_CHANGELOG_NAME_INCLUDED)] nstring object_name;
+ [default];
+ } netr_ChangeLogObject;
+
+ typedef [public,gensize] struct {
+ uint32 serial_number1;
+ uint32 serial_number2;
+ uint32 object_rid;
+ netr_ChangeLogFlags flags;
+ netr_SamDatabaseID8Bit db_index;
+ netr_DeltaEnum8Bit delta_type;
+ [switch_is(flags & (NETR_CHANGELOG_SID_INCLUDED|NETR_CHANGELOG_NAME_INCLUDED))] netr_ChangeLogObject object;
+ } netr_ChangeLogEntry;
+
NTSTATUS netr_DatabaseRedo(
[in] [string,charset(UTF16)] uint16 logon_server[],
[in] [string,charset(UTF16)] uint16 computername[],
- [in] netr_Authenticator credential,
+ [in] netr_Authenticator *credential,
[in,out,ref] netr_Authenticator *return_authenticator,
- [in,unique][size_is(change_log_entry_size)] uint8 *change_log_entry,
- [in] uint32 change_log_entry_size,
- [out,ref] netr_DELTA_ENUM_ARRAY *delta_enum_array
+ [in] [subcontext(4),subcontext_size(change_log_entry_size)] netr_ChangeLogEntry change_log_entry,
+ [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
);
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
);
/*****************/
/* 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 */
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;
[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;
/****************/
/* Function 0x2e */
- [todo] WERROR netr_NETRSERVERGETTRUSTINFO();
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] uint32 *data;
+ uint32 entry_count;
+ [size_is(count)] lsa_String *entries;
+ } netr_TrustInfo;
+
+ NTSTATUS netr_ServerGetTrustInfo(
+ [in,unique] [string,charset(UTF16)] uint16 *server_name,
+ [in,ref] [string,charset(UTF16)] uint16 *account_name,
+ [in] netr_SchannelType secure_channel_type,
+ [in,ref] [string,charset(UTF16)] uint16 *computer_name,
+ [in,ref] netr_Authenticator *credential,
+ [out,ref] netr_Authenticator *return_authenticator,
+ [out,ref] samr_Password *new_owf_password,
+ [out,ref] samr_Password *old_owf_password,
+ [out,ref] netr_TrustInfo **trust_info
+ );
}