svn commit: samba r2699 - in branches/SAMBA_4_0/source: librpc/idl torture/rpc

jelmer at samba.org jelmer at samba.org
Mon Sep 27 22:06:27 GMT 2004


Author: jelmer
Date: 2004-09-27 22:06:27 +0000 (Mon, 27 Sep 2004)
New Revision: 2699

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source&rev=2699&nolog=1

Log:
Correct handle ServerAlive() and ServerAlive2() + add torture tests

Added:
   branches/SAMBA_4_0/source/torture/rpc/oxidresolve.c
Modified:
   branches/SAMBA_4_0/source/librpc/idl/dcom.idl
   branches/SAMBA_4_0/source/librpc/idl/oxidresolver.idl


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/dcom.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/dcom.idl	2004-09-27 17:17:42 UTC (rev 2698)
+++ branches/SAMBA_4_0/source/librpc/idl/dcom.idl	2004-09-27 22:06:27 UTC (rev 2699)
@@ -275,7 +275,7 @@
 	/* Returns the interface with the specified IID 
 	   if implemented by this object */
 	HRESULT QueryInterface([in] IID *riid
-						   /*FIXME, [out] void **data*/);
+	   /*FIXME, [out] void **data*/);
 
 	/*****************/
 	/* Function 0x01 */
@@ -293,11 +293,15 @@
 	pointer_default(unique)
 ] interface IClassFactory : IUnknown
 {
-	HRESULT CreateInstance();
+	HRESULT CreateInstance(/*FIXME[in] IUnknown *pUnknown, 
+			       [in] IID *riid,
+			       [out, iid_is(riid)] void **ppv*/);
 
 	HRESULT RemoteCreateInstance();
 
-	HRESULT LockServer();
+	/* Set lock to TRUE when you want to do a lock
+	and set it to FALSE when you want to unlock */
+	HRESULT LockServer([in] uint8 lock);
 
 	HRESULT RemoteLockServer();
 }
@@ -451,17 +455,7 @@
 }
 
 
-// Service Control Manager
-
 [
-	uuid(),
-	version(2.0)
-] interface SCM
-{
-	void SCM_Dummy();
-}
-
-[
 	object,
 	uuid(00000136-0000-0000-C000-000000000046)
 ] interface ISCMActivator : IUnknown

Modified: branches/SAMBA_4_0/source/librpc/idl/oxidresolver.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/oxidresolver.idl	2004-09-27 17:17:42 UTC (rev 2698)
+++ branches/SAMBA_4_0/source/librpc/idl/oxidresolver.idl	2004-09-27 22:06:27 UTC (rev 2699)
@@ -86,10 +86,13 @@
 											  [out, ref] uint32 *pAuthnHint,
 											  [out, ref] COMVERSION *pComVersion
 											 );
+											 typedef struct {
+		COMVERSION version;
+	  	uint32 unknown1;
+	} COMINFO;
 
 	[idempotent] WERROR ServerAlive2 (
-	  [out] COMVERSION version,
-	  [out] uint8 unknown1[4],
+	  [out] COMINFO info,
 	  [out] DUALSTRINGARRAY dualstring,
-	  [out] uint8 unknown2[5]);
+	  [out] uint8 unknown2[3]);
 }

Added: branches/SAMBA_4_0/source/torture/rpc/oxidresolve.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/oxidresolve.c	2004-09-27 17:17:42 UTC (rev 2698)
+++ branches/SAMBA_4_0/source/torture/rpc/oxidresolve.c	2004-09-27 22:06:27 UTC (rev 2699)
@@ -0,0 +1,117 @@
+/* 
+   Unix SMB/CIFS implementation.
+   test suite for oxidresolve operations
+
+   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"
+
+static int test_SimplePing(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
+{
+	struct SimplePing r;
+	NTSTATUS status;
+	HYPER_T h = 10;
+
+	r.in.SetId = &h;
+
+	status = dcerpc_SimplePing(p, mem_ctx, &r);
+	if(NT_STATUS_IS_ERR(status)) {
+		fprintf(stderr, "SimplePing: %s\n", nt_errstr(status));
+		return 0;
+	}
+
+	if(!W_ERROR_IS_OK(r.out.result)) {
+		fprintf(stderr, "SimplePing: %s\n", win_errstr(r.out.result));
+		return 0;
+	}
+
+	return 1;
+}
+
+static int test_ServerAlive(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
+{
+	struct ServerAlive r;
+	NTSTATUS status;
+
+	status = dcerpc_ServerAlive(p, mem_ctx, &r);
+	if(NT_STATUS_IS_ERR(status)) {
+		fprintf(stderr, "ServerAlive: %s\n", nt_errstr(status));
+		return 0;
+	}
+
+	if(!W_ERROR_IS_OK(r.out.result)) {
+		fprintf(stderr, "ServerAlive: %s\n", win_errstr(r.out.result));
+		return 0;
+	}
+
+	return 1;
+}
+
+
+static int test_ServerAlive2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
+{
+	struct ServerAlive2 r;
+	NTSTATUS status;
+
+	status = dcerpc_ServerAlive2(p, mem_ctx, &r);
+	if(NT_STATUS_IS_ERR(status)) {
+		fprintf(stderr, "ServerAlive2: %s\n", nt_errstr(status));
+		return 0;
+	}
+
+	if(!W_ERROR_IS_OK(r.out.result)) {
+		fprintf(stderr, "ServerAlive2: %s\n", win_errstr(r.out.result));
+		return 0;
+	}
+
+	return 1;
+}
+
+BOOL torture_rpc_oxidresolve(int dummy)
+{
+        NTSTATUS status;
+       struct dcerpc_pipe *p;
+	TALLOC_CTX *mem_ctx;
+	BOOL ret = True;
+
+	mem_ctx = talloc_init("torture_rpc_oxidresolve");
+
+	status = torture_rpc_connection(&p, 
+					DCERPC_IOXIDRESOLVER_NAME, 
+					DCERPC_IOXIDRESOLVER_UUID, 
+					DCERPC_IOXIDRESOLVER_VERSION);
+
+	if (!NT_STATUS_IS_OK(status)) {
+		return False;
+	}
+
+	if(!test_SimplePing(p, mem_ctx))
+		ret = False;
+
+	if(!test_ServerAlive(p, mem_ctx))
+		ret = False;
+
+	if(!test_ServerAlive2(p, mem_ctx))
+		ret = False;
+
+	talloc_destroy(mem_ctx);
+
+        torture_rpc_close(p);
+
+	return ret;
+}



More information about the samba-cvs mailing list