torture: add a test program rpc_open_tcp() to test the rpc_pipe_open_tcp() func.
authorMichael Adam <obnox@samba.org>
Thu, 22 May 2008 09:08:47 +0000 (11:08 +0200)
committerMichael Adam <obnox@samba.org>
Thu, 22 May 2008 09:30:03 +0000 (11:30 +0200)
This is still very raw and has yet to be integrated into the test suite.

Michael
(This used to be commit 3ec3ab4e5309c63bbf2fa5efa5d2c47856560a0f)

source3/Makefile.in
source3/torture/rpc_open_tcp.c [new file with mode: 0644]

index faf4ccf4f613a200ad08c9b6d9fb2fafb1eb563d..1a970bf98866f84b5bfa1465086708039ca2d047 100644 (file)
@@ -1153,6 +1153,20 @@ VLP_OBJ = $(VLP_OBJ1) $(PARAM_OBJ) $(LIBSMB_OBJ) \
          $(PASSDB_OBJ) @LIBWBCLIENT_STATIC@ $(SMBLDAP_OBJ) $(GROUPDB_OBJ) $(LDB_OBJ) \
          $(DISPLAY_SEC_OBJ)
 
+RPC_OPEN_TCP_OBJ = torture/rpc_open_tcp.o \
+                  $(LIBSMB_OBJ) \
+                  $(PARAM_OBJ) \
+                  $(PASSDB_OBJ) \
+                  @LIBWBCLIENT_STATIC@ $(SMBLDAP_OBJ) $(LDB_OBJ) $(GROUPDB_OBJ) \
+                  $(LIB_NONSMBD_OBJ) \
+                  $(KRBCLIENT_OBJ) \
+                  $(RPC_PARSE_OBJ2) \
+                  $(RPC_CLIENT_OBJ1) \
+                  rpc_client/cli_pipe.o \
+                  librpc/rpc/binding.o \
+                  $(LIBMSRPC_GEN_OBJ)
+
+
 ######################################################################
 # now the rules...
 ######################################################################
@@ -2073,6 +2087,12 @@ bin/timelimit@EXEEXT@: script/tests/timelimit.o
        @echo Linking $@
        @$(CC) $(FLAGS) -o $@ $(DYNEXP) script/tests/timelimit.o
 
+bin/rpc_open_tcp@EXEEXT@: $(BINARY_PREREQS) $(RPC_OPEN_TCP_OBJ) @LIBTALLOC_SHARED@ @LIBTDB_SHARED@ @LIBWBCLIENT_SHARED@
+       @echo "Linking $@"
+       @$(CC) $(FLAGS) -o $@ $(RPC_OPEN_TCP_OBJ) $(LDFLAGS) $(DYNEXP) \
+               $(LIBS) @LIBTALLOC_LIBS@ @LIBTDB_SHARED@ @WINBIND_LIBS@ \
+               $(LDAP_LIBS) $(KRB5LIBS) $(NSCD_LIBS)
+
 install:: installservers installbin @INSTALL_CIFSMOUNT@ @INSTALL_CIFSSPNEGO@ installman \
                installscripts installdat installmodules @SWAT_INSTALL_TARGETS@ \
                installlibtalloc \
diff --git a/source3/torture/rpc_open_tcp.c b/source3/torture/rpc_open_tcp.c
new file mode 100644 (file)
index 0000000..c28c722
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * test program for rpc_pipe_open_tcp().
+ *
+ * Copyright (C) Michael Adam 2008
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "includes.h"
+
+#include "librpc/gen_ndr/ndr_dfs.h"
+#if 0
+#include "librpc/gen_ndr/ndr_drsuapi.h"
+#endif
+#include "librpc/gen_ndr/ndr_dssetup.h"
+#include "librpc/gen_ndr/ndr_echo.h"
+#include "librpc/gen_ndr/ndr_epmapper.h"
+#include "librpc/gen_ndr/ndr_eventlog.h"
+#include "librpc/gen_ndr/ndr_initshutdown.h"
+#include "librpc/gen_ndr/ndr_lsa.h"
+#include "librpc/gen_ndr/ndr_netlogon.h"
+#include "librpc/gen_ndr/ndr_ntsvcs.h"
+#include "librpc/gen_ndr/ndr_samr.h"
+#include "librpc/gen_ndr/ndr_srvsvc.h"
+#include "librpc/gen_ndr/ndr_svcctl.h"
+#include "librpc/gen_ndr/ndr_winreg.h"
+#include "librpc/gen_ndr/ndr_wkssvc.h"
+
+extern const struct ndr_interface_table ndr_table_netdfs;
+#if 0
+extern const struct ndr_interface_table ndr_table_drsuapi;
+#endif
+extern const struct ndr_interface_table ndr_table_dssetup;
+extern const struct ndr_interface_table ndr_table_rpcecho;
+extern const struct ndr_interface_table ndr_table_epmapper;
+extern const struct ndr_interface_table ndr_table_eventlog;
+extern const struct ndr_interface_table ndr_table_initshutdown;
+extern const struct ndr_interface_table ndr_table_lsarpc;
+extern const struct ndr_interface_table ndr_table_netlogon;
+extern const struct ndr_interface_table ndr_table_ntsvcs;
+extern const struct ndr_interface_table ndr_table_samr;
+extern const struct ndr_interface_table ndr_table_srvsvc;
+extern const struct ndr_interface_table ndr_table_svcctl;
+extern const struct ndr_interface_table ndr_table_winreg;
+extern const struct ndr_interface_table ndr_table_wkssvc;
+
+const struct ndr_interface_table *tables[] = {
+       &ndr_table_netdfs,
+#if 0
+       &ndr_table_drsuapi,
+#endif
+       &ndr_table_dssetup,
+       &ndr_table_rpcecho,
+       &ndr_table_epmapper,
+       &ndr_table_eventlog,
+       &ndr_table_initshutdown,
+       &ndr_table_lsarpc,
+       &ndr_table_netlogon,
+       &ndr_table_ntsvcs,
+       &ndr_table_samr,
+       &ndr_table_srvsvc,
+       &ndr_table_svcctl,
+       &ndr_table_winreg,
+       &ndr_table_wkssvc,
+       NULL
+};
+
+int main(int argc, const char **argv)
+{
+       const struct ndr_interface_table **table;
+       NTSTATUS status;
+       struct rpc_pipe_client *rpc_pipe = NULL;
+       TALLOC_CTX *mem_ctx = talloc_stackframe();
+
+       if (argc != 3) {
+               d_printf("USAGE: %s interface host\n", argv[0]);
+               return -1;
+       }
+
+       for (table = tables; *table != NULL; table++) {
+               if (strequal((*table)->name, argv[1])) {
+                       break;
+               }
+       }
+
+       if (*table == NULL) {
+               d_printf("ERROR: unknown interface '%s' given\n", argv[1]);
+               return -1;
+       }
+
+       status = rpc_pipe_open_tcp(mem_ctx, argv[2], &((*table)->syntax_id),
+                                  &rpc_pipe);
+       if (!NT_STATUS_IS_OK(status)) {
+               d_printf("ERROR calling rpc_pipe_open_tcp(): %s\n",
+                       nt_errstr(status));
+               return -1;
+       }
+
+       TALLOC_FREE(mem_ctx);
+
+       return 0;
+}
+