1
0
mirror of https://github.com/samba-team/samba.git synced 2025-12-07 20:23:50 +03:00

r3513: Add (the infrastructure for) DCOM support. Contents:

- Support for sending over the object UUID in DCERPC calls
 - Simple torture test for the DCOM "Simple" object
 - Generate extra argument for "object" interfaces in pidl
 - Some stubs for common DCOM functions
This commit is contained in:
Jelmer Vernooij
2004-11-03 20:32:28 +00:00
committed by Gerald (Jerry) Carter
parent f631069582
commit c052f2e1ed
24 changed files with 309 additions and 69 deletions

View File

@@ -0,0 +1,51 @@
/*
Unix SMB/CIFS implementation.
DCOM standard objects
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.
*/
#ifndef _DCOM_H /* _DCOM_H */
#define _DCOM_H
struct dcom_class
{
const char *name;
struct GUID CLSID;
/* List of IID's implemented */
uint32 cIIDs;
struct GUID *IID;
/* Pointers to functions this class implements */
};
struct dcom_object
{
struct dcom_class *class;
struct GUID oid;
HYPER_T OXID;
struct dcom_interface_pointer *interfaces;
void *private_data;
};
struct dcom_interface_pointer
{
struct dcom_object *object;
struct GUID ipid;
};
#endif /* _DCOM_H */

View File

@@ -46,8 +46,7 @@ struct PingSet
/*
ResolveOxid
*/
static WERROR ResolveOxid(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct ResolveOxid *r)
static WERROR ResolveOxid(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct ResolveOxid *r)
{
return WERR_NOT_SUPPORTED;
}
@@ -56,8 +55,7 @@ static WERROR ResolveOxid(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ct
/*
SimplePing
*/
static WERROR SimplePing(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct SimplePing *r)
static WERROR SimplePing(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct SimplePing *r)
{
return WERR_NOT_SUPPORTED;
}
@@ -65,8 +63,7 @@ static WERROR SimplePing(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx
/*
ComplexPing
*/
static WERROR ComplexPing(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct ComplexPing *r)
static WERROR ComplexPing(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct ComplexPing *r)
{
/* struct PingSet *ps; */
@@ -81,8 +78,7 @@ static WERROR ComplexPing(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ct
/*
ServerAlive
*/
static WERROR ServerAlive(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct ServerAlive *r)
static WERROR ServerAlive(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct ServerAlive *r)
{
return WERR_OK;
}
@@ -91,8 +87,7 @@ static WERROR ServerAlive(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ct
/*
ResolveOxid2
*/
static WERROR ResolveOxid2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct ResolveOxid2 *r)
static WERROR ResolveOxid2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct ResolveOxid2 *r)
{
return WERR_NOT_SUPPORTED;
}
@@ -101,8 +96,7 @@ static WERROR ResolveOxid2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_c
/*
ServerAlive2
*/
static WERROR ServerAlive2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct ServerAlive2 *r)
static WERROR ServerAlive2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct ServerAlive2 *r)
{
return WERR_NOT_SUPPORTED;
}

View File

@@ -24,16 +24,40 @@
#include "rpc_server/dcerpc_server.h"
#include "rpc_server/common/common.h"
#include "librpc/gen_ndr/ndr_remact.h"
#include "rpc_server/dcom/dcom.h"
static void register_dcom_class(void *_c)
{
struct dcom_class *class = _c;
/* FIXME */
}
struct dcom_object *dcom_object_by_oid(struct GUID *oid)
{
/* FIXME */
return NULL;
}
struct dcom_class *dcom_class_by_clsid(struct GUID *clsid)
{
/* FIXME */
return NULL;
}
struct dcom_interface_pointer *dcom_interface_pointer_by_ipid(struct GUID *ipid)
{
/* FIXME */
return NULL;
}
/*
RemoteActivation
*/
static WERROR RemoteActivation(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct RemoteActivation *r)
static WERROR RemoteActivation(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct RemoteActivation *r)
{
/* FIXME: CoGetClassObject() */
/* FIXME: IClassFactory::CreateInstance() */
/* FIXME: IClassFactory::ReleaseInstance() */
/* FIXME: IClassFactory::Release() */
return WERR_NOT_SUPPORTED;
}