svn commit: samba r3630 - in branches/SAMBA_4_0/source: libcli/auth param rpc_server rpc_server/dcom

jelmer at samba.org jelmer at samba.org
Tue Nov 9 01:04:30 GMT 2004


Author: jelmer
Date: 2004-11-09 01:04:29 +0000 (Tue, 09 Nov 2004)
New Revision: 3630

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=3630

Log:
More work on DCOM server side

Modified:
   branches/SAMBA_4_0/source/libcli/auth/gensec_ntlmssp.c
   branches/SAMBA_4_0/source/param/loadparm.c
   branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c
   branches/SAMBA_4_0/source/rpc_server/dcom/remact.c
   branches/SAMBA_4_0/source/rpc_server/dcom/rot.c


Changeset:
Modified: branches/SAMBA_4_0/source/libcli/auth/gensec_ntlmssp.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/auth/gensec_ntlmssp.c	2004-11-09 00:30:44 UTC (rev 3629)
+++ branches/SAMBA_4_0/source/libcli/auth/gensec_ntlmssp.c	2004-11-09 01:04:29 UTC (rev 3630)
@@ -442,8 +442,5 @@
 		return ret;
 	}
 
-	/* ugly cludge, but we need the auth subsystem for this to work */
-	auth_init();
-
 	return ret;
 }

Modified: branches/SAMBA_4_0/source/param/loadparm.c
===================================================================
--- branches/SAMBA_4_0/source/param/loadparm.c	2004-11-09 00:30:44 UTC (rev 3629)
+++ branches/SAMBA_4_0/source/param/loadparm.c	2004-11-09 01:04:29 UTC (rev 3630)
@@ -928,7 +928,7 @@
 	do_parameter("fstype", FSTYPE_STRING);
 	do_parameter("ntvfs handler", "unixuid default");
 
-	do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg");
+	do_parameter("dcerpc endpoint servers", "epmapper srvsvc wkssvc rpcecho samr netlogon lsarpc spoolss drsuapi winreg IOXIDResolver IRemoteActivation");
 	do_parameter("server services", "smb rpc");
 	do_parameter("auth methods", "guest sam_ignoredomain");
 	do_parameter("smb passwd file", dyn_SMB_PASSWD_FILE);

Modified: branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c	2004-11-09 00:30:44 UTC (rev 3629)
+++ branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c	2004-11-09 01:04:29 UTC (rev 3630)
@@ -595,6 +595,10 @@
 		return NT_STATUS_NO_MEMORY;
 	}
 
+	if (call->pkt.pfc_flags & DCERPC_PFC_FLAG_ORPC) {
+		pull->flags |= LIBNDR_FLAG_OBJECT_PRESENT;
+	}
+
 	r = talloc(call, call->conn->iface->ndr->calls[opnum].struct_size);
 	if (!r) {
 		return NT_STATUS_NO_MEMORY;

Modified: branches/SAMBA_4_0/source/rpc_server/dcom/remact.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/dcom/remact.c	2004-11-09 00:30:44 UTC (rev 3629)
+++ branches/SAMBA_4_0/source/rpc_server/dcom/remact.c	2004-11-09 01:04:29 UTC (rev 3630)
@@ -38,6 +38,7 @@
 */
 static WERROR RemoteActivation(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct RemoteActivation *r)
 {
+	int i;
 	/* FIXME: CoGetClassObject() */
 	/* FIXME: IClassFactory::CreateInstance() */
 	/* FIXME: Register newly created object with dcerpc subsystem */
@@ -47,16 +48,35 @@
 	r->out.ServerVersion.MajorVersion = COM_MAJOR_VERSION;
 	r->out.ServerVersion.MinorVersion = COM_MINOR_VERSION;
 
+	r->out.AuthnHint = DCERPC_AUTH_LEVEL_DEFAULT;
+	r->out.pdsaOxidBindings = dcom_server_generate_dual_string(mem_ctx, dce_call);
+	
+	/* FIXME: Loop thru given interfaces and set r->out.results and 
+	 * r->out.interfaces */
+	r->out.ifaces = talloc_array_p(mem_ctx, struct pMInterfacePointer, r->in.Interfaces);
+	r->out.results = talloc_array_p(mem_ctx, WERROR, r->in.Interfaces);
+	for (i = 0; i < r->in.Interfaces; i++) {
+			ZERO_STRUCT(r->out.ifaces[i]);	
+			r->out.results[i] = WERR_NOT_SUPPORTED;
+	}
+
 	/* FIXME: */
+	r->out.pOxid = 0;
+	ZERO_STRUCT(r->out.ipidRemUnknown);
 	r->out.hr = WERR_NOT_SUPPORTED;
-	r->out.pOxid = 0;
-	r->out.AuthnHint = 0;
-	/* FIXME: Loop thru given interfaces and set r->out.results and 
-	 * r->out.interfaces */
 	
 	return WERR_NOT_SUPPORTED;
 }
 
+
+static NTSTATUS register_dcom_class(const void *_c)
+{
+	const struct dcom_class *class = _c;
+	/* FIXME */
+
+	return NT_STATUS_NOT_SUPPORTED;
+}
+
 NTSTATUS dcerpc_server_dcom_init(void)
 {
 	NTSTATUS status;
@@ -70,6 +90,11 @@
 		return status;
 	}
 
+	status = register_subsystem("dcom", register_dcom_class);
+	if (NT_STATUS_IS_ERR(status)) {
+		return status;
+	}
+
 	return NT_STATUS_OK;
 }
 

Modified: branches/SAMBA_4_0/source/rpc_server/dcom/rot.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/dcom/rot.c	2004-11-09 00:30:44 UTC (rev 3629)
+++ branches/SAMBA_4_0/source/rpc_server/dcom/rot.c	2004-11-09 01:04:29 UTC (rev 3630)
@@ -25,22 +25,27 @@
 #include "rpc_server/common/common.h"
 #include "rpc_server/dcom/dcom.h"
 
-
-static void register_dcom_class(void *_c)
+struct dcom_object *dcom_object_by_oid(struct GUID *oid)
 {
-	struct dcom_class *class = _c;
 	/* FIXME */
+	return NULL;
 }
 
-struct dcom_object *dcom_object_by_oid(struct GUID *oid)
+struct dcom_class *dcom_class_by_clsid(struct GUID *clsid)
 {
 	/* FIXME */
 	return NULL;
 }
 
-struct dcom_class *dcom_class_by_clsid(struct GUID *clsid)
+struct dcom_object *dcom_call_get_object(struct dcesrv_call_state *call)
 {
+	struct GUID *object;
+
+	if (! (call->pkt.pfc_flags & DCERPC_PFC_FLAG_ORPC) ) {
+		return NULL;
+	}
+	
+	object = &call->pkt.u.request.object.object;
 	/* FIXME */
-	return NULL;
+	return NULL; 
 }
-



More information about the samba-cvs mailing list