summaryrefslogtreecommitdiff
path: root/source4/torture
diff options
context:
space:
mode:
authorRafal Szczesniak <mimir@samba.org>2007-04-29 12:32:17 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:51:44 -0500
commitdffe18ed1a28efebbe36b4c549964fd53f8ed508 (patch)
tree1c9b160394068f6e5cb727a68f74893c8261a26a /source4/torture
parentc66fae011f595f42d48ee5c721f8a9d100f7f1c3 (diff)
downloadsamba-dffe18ed1a28efebbe36b4c549964fd53f8ed508.tar.gz
samba-dffe18ed1a28efebbe36b4c549964fd53f8ed508.tar.bz2
samba-dffe18ed1a28efebbe36b4c549964fd53f8ed508.zip
r22566: add a simple test of libnet_DomainList function.
rafal (This used to be commit a1ca08b05b804021aa829c737aeb66b4e283940c)
Diffstat (limited to 'source4/torture')
-rw-r--r--source4/torture/libnet/libnet.c1
-rw-r--r--source4/torture/libnet/libnet_domain.c60
2 files changed, 58 insertions, 3 deletions
diff --git a/source4/torture/libnet/libnet.c b/source4/torture/libnet/libnet.c
index 9a8d61e98e..58fc3d480a 100644
--- a/source4/torture/libnet/libnet.c
+++ b/source4/torture/libnet/libnet.c
@@ -52,6 +52,7 @@ NTSTATUS torture_net_init(void)
torture_suite_add_simple_test(suite, "API-DOMOPENSAMR", torture_domain_open_samr);
torture_suite_add_simple_test(suite, "API-DOMCLOSESAMR", torture_domain_close_samr);
torture_suite_add_simple_test(suite, "API-BECOME-DC", torture_net_become_dc);
+ torture_suite_add_simple_test(suite, "API-DOMLIST", torture_domain_list);
suite->description = talloc_strdup(suite, "libnet convenience interface tests");
diff --git a/source4/torture/libnet/libnet_domain.c b/source4/torture/libnet/libnet_domain.c
index 86dfe97ced..beeafa3753 100644
--- a/source4/torture/libnet/libnet_domain.c
+++ b/source4/torture/libnet/libnet_domain.c
@@ -312,7 +312,7 @@ BOOL torture_domain_close_samr(struct torture_context *torture)
{
BOOL ret = True;
NTSTATUS status;
- TALLOC_CTX *mem_ctx=NULL;
+ TALLOC_CTX *mem_ctx = NULL;
struct libnet_context *ctx;
struct lsa_String domain_name;
struct dcerpc_binding *binding;
@@ -340,7 +340,7 @@ BOOL torture_domain_close_samr(struct torture_context *torture)
mem_ctx = talloc_init("torture_domain_close_samr");
status = dcerpc_pipe_connect(mem_ctx, &p, bindstr, &dcerpc_table_samr,
- cmdline_credentials, NULL);
+ ctx->cred, NULL);
if (!NT_STATUS_IS_OK(status)) {
d_printf("failed to connect to server %s: %s\n", bindstr,
nt_errstr(status));
@@ -361,7 +361,8 @@ BOOL torture_domain_close_samr(struct torture_context *torture)
ctx->samr.access_mask = access_mask;
ctx->samr.handle = h;
/* we have to use pipe's event context, otherwise the call will
- hang indefinately */
+ hang indefinitely - this wouldn't be the case if pipe was opened
+ by means of libnet call */
ctx->event_ctx = p->conn->event_ctx;
ZERO_STRUCT(r);
@@ -379,3 +380,56 @@ done:
talloc_free(ctx);
return ret;
}
+
+
+BOOL torture_domain_list(struct torture_context *torture)
+{
+ BOOL ret = True;
+ NTSTATUS status;
+ TALLOC_CTX *mem_ctx = NULL;
+ const char *bindstr;
+ struct dcerpc_binding *binding;
+ struct libnet_context *ctx;
+ struct libnet_DomainList r;
+ int i;
+
+ bindstr = torture_setting_string(torture, "binding", NULL);
+ status = dcerpc_parse_binding(torture, bindstr, &binding);
+ if (!NT_STATUS_IS_OK(status)) {
+ d_printf("failed to parse binding string\n");
+ return False;
+ }
+
+ ctx = libnet_context_init(NULL);
+ if (ctx == NULL) {
+ d_printf("failed to create libnet context\n");
+ ret = False;
+ goto done;
+ }
+
+ ctx->cred = cmdline_credentials;
+
+ mem_ctx = talloc_init("torture_domain_close_samr");
+
+ ZERO_STRUCT(r);
+ r.in.hostname = binding->host;
+
+ status = libnet_DomainList(ctx, mem_ctx, &r);
+ if (!NT_STATUS_IS_OK(status)) {
+ ret = False;
+ goto done;
+ }
+
+ d_printf("Received list or domains:\n");
+
+ for (i = 0; i < r.out.count; i++) {
+ d_printf("Name[%d]: %s\n", i, r.out.domains[i].name);
+ }
+
+done:
+ d_printf("\nStatus: %s\n", nt_errstr(status));
+
+ talloc_free(mem_ctx);
+ talloc_free(ctx);
+ return ret;
+}