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:
committed by
Gerald (Jerry) Carter
parent
f631069582
commit
c052f2e1ed
51
source/rpc_server/dcom/dcom.h
Normal file
51
source/rpc_server/dcom/dcom.h
Normal 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 */
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user