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;
+}

Reply via email to