diff --git a/librpc/idl/netlogon.idl b/librpc/idl/netlogon.idl index ed75fe3797a..f9672b1bf54 100644 --- a/librpc/idl/netlogon.idl +++ b/librpc/idl/netlogon.idl @@ -1036,7 +1036,8 @@ interface netlogon NETLOGON_NEG_SUPPORTS_AES_SHA2 = 0x00400000, NETLOGON_NEG_SUPPORTS_AES = 0x01000000, NETLOGON_NEG_AUTHENTICATED_RPC_LSASS = 0x20000000, - NETLOGON_NEG_AUTHENTICATED_RPC = 0x40000000 + NETLOGON_NEG_AUTHENTICATED_RPC = 0x40000000, + NETLOGON_NEG_SUPPORTS_KERBEROS_AUTH = 0x80000000 } netr_NegotiateFlags; const uint32 NETLOGON_NEG_128BIT = NETLOGON_NEG_STRONG_KEYS; @@ -1885,4 +1886,32 @@ interface netlogon [in] uint32 dns_ttl, [in,out,ref] NL_DNS_NAME_INFO_ARRAY *dns_names ); + + [todo] void netr_Opnum49NotUsedOnWire(void); + [todo] void netr_Opnum50NotUsedOnWire(void); + [todo] void netr_Opnum51NotUsedOnWire(void); + [todo] void netr_Opnum52NotUsedOnWire(void); + [todo] void netr_Opnum53NotUsedOnWire(void); + + /**********************/ + /* Function 0x36 (54) */ + /* from wireshark: */ + /* This is documented as 49 (0x31) but it's 54) */ + [todo] NTSTATUS netr_ChainSetClientAttributes(); + + [todo] void netr_Opnum55NotUsedOnWire(void); + [todo] void netr_Opnum56NotUsedOnWire(void); + [todo] void netr_Opnum57NotUsedOnWire(void); + [todo] void netr_Opnum58NotUsedOnWire(void); + + /*****************/ + /* Function 0x3b (59) */ + [public] NTSTATUS netr_ServerAuthenticateKerberos( + [in,unique] [string,charset(UTF16)] uint16 *server_name, + [in] [string,charset(UTF16)] uint16 *account_name, + [in] netr_SchannelType account_type, + [in] [string,charset(UTF16)] uint16 *computer_name, + [in,out,ref] netr_NegotiateFlags *negotiate_flags, + [out,ref] uint32 *rid + ); } diff --git a/source3/rpc_server/netlogon/srv_netlog_nt.c b/source3/rpc_server/netlogon/srv_netlog_nt.c index 06ea1c0b756..f473af2dce1 100644 --- a/source3/rpc_server/netlogon/srv_netlog_nt.c +++ b/source3/rpc_server/netlogon/srv_netlog_nt.c @@ -2916,6 +2916,31 @@ NTSTATUS _netr_DsrUpdateReadOnlyServerDnsRecords(struct pipes_struct *p, return NT_STATUS_NOT_IMPLEMENTED; } +DCESRV_COMPAT_NOT_USED_ON_WIRE(netr_Opnum49NotUsedOnWire) +DCESRV_COMPAT_NOT_USED_ON_WIRE(netr_Opnum50NotUsedOnWire) +DCESRV_COMPAT_NOT_USED_ON_WIRE(netr_Opnum51NotUsedOnWire) +DCESRV_COMPAT_NOT_USED_ON_WIRE(netr_Opnum52NotUsedOnWire) +DCESRV_COMPAT_NOT_USED_ON_WIRE(netr_Opnum53NotUsedOnWire) + +NTSTATUS _netr_ChainSetClientAttributes(struct pipes_struct *p, + struct netr_ChainSetClientAttributes *r) +{ + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; + return NT_STATUS_NOT_IMPLEMENTED; +} + +DCESRV_COMPAT_NOT_USED_ON_WIRE(netr_Opnum55NotUsedOnWire) +DCESRV_COMPAT_NOT_USED_ON_WIRE(netr_Opnum56NotUsedOnWire) +DCESRV_COMPAT_NOT_USED_ON_WIRE(netr_Opnum57NotUsedOnWire) +DCESRV_COMPAT_NOT_USED_ON_WIRE(netr_Opnum58NotUsedOnWire) + +NTSTATUS _netr_ServerAuthenticateKerberos(struct pipes_struct *p, + struct netr_ServerAuthenticateKerberos *r) +{ + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; + return NT_STATUS_NOT_IMPLEMENTED; +} + /* * Define the bind function that will be used by ndr_netlogon_scompat.c, * included at the bottom of this file. diff --git a/source4/rpc_server/netlogon/dcerpc_netlogon.c b/source4/rpc_server/netlogon/dcerpc_netlogon.c index 61c214af7e2..2223bb7cace 100644 --- a/source4/rpc_server/netlogon/dcerpc_netlogon.c +++ b/source4/rpc_server/netlogon/dcerpc_netlogon.c @@ -4806,6 +4806,36 @@ static NTSTATUS dcesrv_netr_DsrUpdateReadOnlyServerDnsRecords(struct dcesrv_call return NT_STATUS_OK; } +DCESRV_NOT_USED_ON_WIRE(netr_Opnum49NotUsedOnWire) +DCESRV_NOT_USED_ON_WIRE(netr_Opnum50NotUsedOnWire) +DCESRV_NOT_USED_ON_WIRE(netr_Opnum51NotUsedOnWire) +DCESRV_NOT_USED_ON_WIRE(netr_Opnum52NotUsedOnWire) +DCESRV_NOT_USED_ON_WIRE(netr_Opnum53NotUsedOnWire) + +/* + netr_ChainSetClientAttributes + */ +static NTSTATUS dcesrv_netr_ChainSetClientAttributes(struct dcesrv_call_state *dce_call, + TALLOC_CTX *mem_ctx, + struct netr_ChainSetClientAttributes *r) +{ + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); +} + +DCESRV_NOT_USED_ON_WIRE(netr_Opnum55NotUsedOnWire) +DCESRV_NOT_USED_ON_WIRE(netr_Opnum56NotUsedOnWire) +DCESRV_NOT_USED_ON_WIRE(netr_Opnum57NotUsedOnWire) +DCESRV_NOT_USED_ON_WIRE(netr_Opnum58NotUsedOnWire) + +/* + netr_ServerAuthenticateKerberos + */ +static NTSTATUS dcesrv_netr_ServerAuthenticateKerberos(struct dcesrv_call_state *dce_call, + TALLOC_CTX *mem_ctx, + struct netr_ServerAuthenticateKerberos *r) +{ + DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); +} /* include the generated boilerplate */ #include "librpc/gen_ndr/ndr_netlogon_s.c"