From fc3c05e63f4fedb1532e86d9421490fda6435c79 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 27 Sep 2004 16:37:41 +0000 Subject: r2696: DCOM updates: - Start working on OXIDResolver interface - Add torture test for SimplePing() (This used to be commit b54d14a01a71082251ff926ab57974c6eb3c0a41) --- source4/rpc_server/config.m4 | 1 + source4/rpc_server/config.mk | 12 +++++ source4/rpc_server/dcerpc_tcp.c | 2 +- source4/rpc_server/dcom/oxidresolver.c | 87 ++++++++++++++++++++++++++++++++++ source4/rpc_server/winreg/rpc_winreg.c | 25 ++++++---- 5 files changed, 116 insertions(+), 11 deletions(-) create mode 100644 source4/rpc_server/dcom/oxidresolver.c (limited to 'source4/rpc_server') diff --git a/source4/rpc_server/config.m4 b/source4/rpc_server/config.m4 index 73cae66456..d4e45177aa 100644 --- a/source4/rpc_server/config.m4 +++ b/source4/rpc_server/config.m4 @@ -15,5 +15,6 @@ SMB_MODULE_MK(dcerpc_winreg,DCERPC,STATIC,rpc_server/config.mk) SMB_MODULE_MK(dcerpc_netlogon,DCERPC,STATIC,rpc_server/config.mk) SMB_MODULE_MK(dcerpc_lsarpc,DCERPC,STATIC,rpc_server/config.mk) SMB_MODULE_MK(dcerpc_spoolss,DCERPC,STATIC,rpc_server/config.mk) +SMB_MODULE_MK(dcerpc_IOXIDResolver,DCERPC,STATIC,rpc_server/config.mk) SMB_SUBSYSTEM_MK(DCERPC,rpc_server/config.mk) diff --git a/source4/rpc_server/config.mk b/source4/rpc_server/config.mk index dbe8b8344e..779bf997ed 100644 --- a/source4/rpc_server/config.mk +++ b/source4/rpc_server/config.mk @@ -11,6 +11,18 @@ ADD_OBJ_FILES = \ # End SUBSYSTEM DCERPC_COMMON ################################################ +################################################ +# Start MODULE dcerpc_IOXIDResolver +[MODULE::dcerpc_IOXIDResolver] +INIT_OBJ_FILES = \ + rpc_server/dcom/oxidresolver.o +REQUIRED_SUBSYSTEMS = \ + DCERPC_COMMON +# End MODULE dcerpc_IOXIDResolver +################################################ + + + ################################################ # Start SUBSYSTEM SAMDB [SUBSYSTEM::SAMDB] diff --git a/source4/rpc_server/dcerpc_tcp.c b/source4/rpc_server/dcerpc_tcp.c index 9a22c5eb5e..9cbcea5a36 100644 --- a/source4/rpc_server/dcerpc_tcp.c +++ b/source4/rpc_server/dcerpc_tcp.c @@ -78,7 +78,7 @@ static void add_socket_rpc(struct server_service *service, continue; } - /* remeber the enpoint of this socket */ + /* remember the endpoint of this socket */ dcesrv_sock->endpoint = e; dcesrv_sock->dcesrv_ctx = dce_ctx; diff --git a/source4/rpc_server/dcom/oxidresolver.c b/source4/rpc_server/dcom/oxidresolver.c new file mode 100644 index 0000000000..23de6a5d66 --- /dev/null +++ b/source4/rpc_server/dcom/oxidresolver.c @@ -0,0 +1,87 @@ +/* + Unix SMB/CIFS implementation. + + endpoint server for the IOXIDResolver pipe + + Copyright (C) Jelmer Vernooij 2004 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "includes.h" + + +/* + ResolveOxid +*/ +static WERROR ResolveOxid(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct ResolveOxid *r) +{ + return WERR_NOT_SUPPORTED; +} + + +/* + SimplePing +*/ +static WERROR SimplePing(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct SimplePing *r) +{ + return WERR_NOT_SUPPORTED; +} + + +/* + ComplexPing +*/ +static WERROR ComplexPing(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct ComplexPing *r) +{ + return WERR_NOT_SUPPORTED; +} + + +/* + ServerAlive +*/ +static WERROR ServerAlive(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct ServerAlive *r) +{ + return WERR_NOT_SUPPORTED; +} + + +/* + ResolveOxid2 +*/ +static WERROR ResolveOxid2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct ResolveOxid2 *r) +{ + return WERR_NOT_SUPPORTED; +} + + +/* + ServerAlive2 +*/ +static WERROR ServerAlive2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct ServerAlive2 *r) +{ + return WERR_NOT_SUPPORTED; +} + + +/* include the generated boilerplate */ +#include "librpc/gen_ndr/ndr_oxidresolver_s.c" diff --git a/source4/rpc_server/winreg/rpc_winreg.c b/source4/rpc_server/winreg/rpc_winreg.c index 081df230b8..8e7635c894 100644 --- a/source4/rpc_server/winreg/rpc_winreg.c +++ b/source4/rpc_server/winreg/rpc_winreg.c @@ -52,7 +52,12 @@ static NTSTATUS winreg_bind(struct dcesrv_call_state *dc, const struct dcesrv_in struct _privatedata *data; WERROR error; data = talloc_p(dc->conn, struct _privatedata); - error = reg_open(&data->registry, "dir", "/tmp/reg", ""); + error = reg_create(&data->registry); + + /* FIXME: This should happen somewhere after configuration... */ + reg_import_hive(data->registry, "nt4", "NTUSER.DAT", "", "HKEY_CURRENT_USER"); + reg_import_hive(data->registry, "ldb", "ldb:///", "", "HKEY_LOCAL_MACHINE"); + if(!W_ERROR_IS_OK(error)) return werror_to_ntstatus(error); dc->conn->private = data; return NT_STATUS_OK; @@ -76,15 +81,15 @@ static NTSTATUS winreg_bind(struct dcesrv_call_state *dc, const struct dcesrv_in return WERR_OK; \ } -func_winreg_OpenHive(HKCR,"\\HKEY_CLASSES_ROOT") -func_winreg_OpenHive(HKCU,"\\HKEY_CURRENT_USER") -func_winreg_OpenHive(HKLM,"\\HKEY_LOCAL_MACHINE") -func_winreg_OpenHive(HKPD,"\\HKEY_PERFORMANCE_DATA") -func_winreg_OpenHive(HKU,"\\HKEY_USERS") -func_winreg_OpenHive(HKCC,"\\HKEY_CC") -func_winreg_OpenHive(HKDD,"\\HKEY_DD") -func_winreg_OpenHive(HKPT,"\\HKEY_PT") -func_winreg_OpenHive(HKPN,"\\HKEY_PN") +func_winreg_OpenHive(HKCR,"HKEY_CLASSES_ROOT") +func_winreg_OpenHive(HKCU,"HKEY_CURRENT_USER") +func_winreg_OpenHive(HKLM,"HKEY_LOCAL_MACHINE") +func_winreg_OpenHive(HKPD,"HKEY_PERFORMANCE_DATA") +func_winreg_OpenHive(HKU,"HKEY_USERS") +func_winreg_OpenHive(HKCC,"HKEY_CC") +func_winreg_OpenHive(HKDD,"HKEY_DD") +func_winreg_OpenHive(HKPT,"HKEY_PT") +func_winreg_OpenHive(HKPN,"HKEY_PN") /* winreg_CloseKey -- cgit