r8081: Add simple test for RpcConnect function.
authorRafal Szczesniak <mimir@samba.org>
Sat, 2 Jul 2005 14:38:05 +0000 (14:38 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:19:06 +0000 (13:19 -0500)
rafal
(This used to be commit 0209fc67adae9d2003f06c826557306c2141a6a8)

source4/torture/config.mk
source4/torture/libnet/libnet_rpc.c [new file with mode: 0644]
source4/torture/torture.c

index fa15f692b6f3cac186e0a97c848296d4cd39badd..8144dcfe80c82e009dcc540b65e65e8a6f69dc9a 100644 (file)
@@ -197,7 +197,8 @@ ADD_OBJ_FILES = \
                torture/libnet/userman.o \
                torture/libnet/domain.o \
                torture/libnet/libnet_lookup.o \
-               torture/libnet/libnet_user.o
+               torture/libnet/libnet_user.o \
+               torture/libnet/libnet_rpc.o
 REQUIRED_SUBSYSTEMS = \
                NDR_ALL RPC_NDR_SAMR LIBNET
 # End SUBSYSTEM TORTURE_NET
diff --git a/source4/torture/libnet/libnet_rpc.c b/source4/torture/libnet/libnet_rpc.c
new file mode 100644 (file)
index 0000000..ee51ac1
--- /dev/null
@@ -0,0 +1,95 @@
+/* 
+   Unix SMB/CIFS implementation.
+   Test suite for libnet calls.
+
+   Copyright (C) Rafal Szczesniak 2005
+   
+   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"
+#include "lib/cmdline/popt_common.h"
+#include "libnet/libnet.h"
+#include "libnet/composite.h"
+#include "libcli/composite/monitor.h"
+
+
+BOOL test_lsa_connect(struct libnet_context *ctx)
+{
+       NTSTATUS status;
+       struct libnet_RpcConnect connect;
+       connect.level                     = LIBNET_RPC_CONNECT_PDC;
+       connect.in.domain_name            = lp_workgroup();
+       connect.in.dcerpc_iface_name      = DCERPC_LSARPC_NAME;
+       connect.in.dcerpc_iface_uuid      = DCERPC_LSARPC_UUID;
+       connect.in.dcerpc_iface_version   = DCERPC_LSARPC_VERSION;
+
+       status = libnet_RpcConnect(ctx, ctx, &connect);
+
+       if (!NT_STATUS_IS_OK(status)) {
+               printf("Couldn't connect to rpc service %s on %s: %s\n",
+                      connect.in.dcerpc_iface_name, connect.in.domain_name,
+                      nt_errstr(status));
+
+               return False;
+       }
+
+       return True;
+}
+
+
+BOOL test_samr_connect(struct libnet_context *ctx)
+{
+       NTSTATUS status;
+       struct libnet_RpcConnect connect;
+       connect.level                     = LIBNET_RPC_CONNECT_PDC;
+       connect.in.domain_name            = lp_workgroup();
+       connect.in.dcerpc_iface_name      = DCERPC_SAMR_NAME;
+       connect.in.dcerpc_iface_uuid      = DCERPC_SAMR_UUID;
+       connect.in.dcerpc_iface_version   = DCERPC_SAMR_VERSION;
+
+       status = libnet_RpcConnect(ctx, ctx, &connect);
+
+       if (!NT_STATUS_IS_OK(status)) {
+               printf("Couldn't connect to rpc service %s on %s: %s\n",
+                      connect.in.dcerpc_iface_name, connect.in.domain_name,
+                      nt_errstr(status));
+
+               return False;
+       }
+
+       return True;
+}
+
+
+BOOL torture_rpc_connect(void)
+{
+       struct libnet_context *ctx;
+       
+       ctx = libnet_context_init(NULL);
+       ctx->cred = cmdline_credentials;
+
+       if (!test_lsa_connect(ctx)) {
+               printf("failed to connect lsarpc interface\n");
+               return False;
+       }
+
+       if (!test_samr_connect(ctx)) {
+               printf("failed to connect samr interface\n");
+               return False;
+       }
+
+       return True;
+}
index 5fe8a9865d8039f4bbd5b743e29926af2f8ff2c0..d50c919630191344a9c2be55fdc3111ee56fe6fe 100644 (file)
@@ -2347,6 +2347,7 @@ static struct {
        {"NET-API-LOOKUPHOST", torture_lookup_host, 0},
        {"NET-API-LOOKUPPDC", torture_lookup_pdc, 0},
        {"NET-API-CREATEUSER", torture_createuser, 0},
+       {"NET-API-RPCCONNECT", torture_rpc_connect, 0},
 
        {NULL, NULL, 0}};