From cc368fa69e6a205516c64712aee701fe0cf6d20b Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 21 Nov 2004 17:47:09 +0000 Subject: r3898: Work towards local/server DCOM support, start working on Simple example server side implementation (This used to be commit 98afb504d95ccca4d6ec48273e10b52ccfa26ad0) --- source4/rpc_server/config.mk | 1 + source4/rpc_server/dcom/rodb.c | 39 +++++++++++++++++++++++++++++++++++++++ source4/rpc_server/dcom/rot.c | 15 ++++++++++++++- 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 source4/rpc_server/dcom/rodb.c (limited to 'source4/rpc_server') diff --git a/source4/rpc_server/config.mk b/source4/rpc_server/config.mk index 58f842add0..466d86a0c4 100644 --- a/source4/rpc_server/config.mk +++ b/source4/rpc_server/config.mk @@ -19,6 +19,7 @@ SUBSYSTEM = DCERPC INIT_OBJ_FILES = \ rpc_server/dcom/oxidresolver.o \ rpc_server/dcom/rot.o \ + rpc_server/dcom/rodb.o \ rpc_server/dcom/remact.o \ librpc/gen_ndr/ndr_dcom_d.o REQUIRED_SUBSYSTEMS = \ diff --git a/source4/rpc_server/dcom/rodb.c b/source4/rpc_server/dcom/rodb.c new file mode 100644 index 0000000000..56d51c7934 --- /dev/null +++ b/source4/rpc_server/dcom/rodb.c @@ -0,0 +1,39 @@ +/* + Unix SMB/CIFS implementation. + + Running objects database + + 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" +#include "rpc_server/dcerpc_server.h" +#include "librpc/gen_ndr/ndr_rot.h" +#include "rpc_server/common/common.h" + +struct tdb_wrap *openrodb(TALLOC_CTX *mem_ctx) +{ + struct tdb_wrap *wrap; + char *rodb_name = NULL; + + asprintf(&rodb_name, "%s/rot.tdb", lp_lockdir()); + wrap = tdb_wrap_open(mem_ctx, rodb_name, 0, 0, O_RDWR|O_CREAT, 0600); + SAFE_FREE(rodb_name); + + return wrap; +} + diff --git a/source4/rpc_server/dcom/rot.c b/source4/rpc_server/dcom/rot.c index 1a58833204..04fb7c73a5 100644 --- a/source4/rpc_server/dcom/rot.c +++ b/source4/rpc_server/dcom/rot.c @@ -25,14 +25,15 @@ #include "librpc/gen_ndr/ndr_rot.h" #include "rpc_server/common/common.h" - /* rot_add */ static WERROR rot_add(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct rot_add *r) { + struct tdb_wrap *db = openrodb(mem_ctx); DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); + talloc_destroy(db); } @@ -42,7 +43,9 @@ static WERROR rot_add(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, static WERROR rot_remove(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct rot_remove *r) { + struct tdb_wrap *db = openrodb(mem_ctx); DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); + talloc_destroy(db); } @@ -52,7 +55,9 @@ static WERROR rot_remove(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx static WERROR rot_is_listed(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct rot_is_listed *r) { + struct tdb_wrap *db = openrodb(mem_ctx); DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); + talloc_destroy(db); } @@ -62,7 +67,9 @@ static WERROR rot_is_listed(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ static WERROR rot_get_interface_pointer(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct rot_get_interface_pointer *r) { + struct tdb_wrap *db = openrodb(mem_ctx); DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); + talloc_destroy(db); } @@ -72,7 +79,9 @@ static WERROR rot_get_interface_pointer(struct dcesrv_call_state *dce_call, TALL static WERROR rot_set_modification_time(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct rot_set_modification_time *r) { + struct tdb_wrap *db = openrodb(mem_ctx); DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); + talloc_destroy(db); } @@ -82,7 +91,9 @@ static WERROR rot_set_modification_time(struct dcesrv_call_state *dce_call, TALL static WERROR rot_get_modification_time(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct rot_get_modification_time *r) { + struct tdb_wrap *db = openrodb(mem_ctx); DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); + talloc_destroy(db); } @@ -92,7 +103,9 @@ static WERROR rot_get_modification_time(struct dcesrv_call_state *dce_call, TALL static WERROR rot_enum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct rot_enum *r) { + struct tdb_wrap *db = openrodb(mem_ctx); DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); + talloc_destroy(db); } -- cgit