NET-API-BECOME-DC: resolve the host name to an address before calling
authorStefan Metzmacher <metze@samba.org>
Tue, 10 Nov 2009 11:49:48 +0000 (12:49 +0100)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 12 Nov 2009 05:34:12 +0000 (16:34 +1100)
libnet_BecomeDC and libnet_UnbecomeDC()

We're supposed to pass in source_dsa_address...

metze

source4/torture/libnet/libnet_BecomeDC.c

index d990e803be5381bed925f59e2b28d7738b96da9d..4b58eed587fbcc5e6f1ac7129c6d46f0852464e3 100644 (file)
@@ -32,6 +32,7 @@
 #include "auth/auth.h"
 #include "param/param.h"
 #include "param/provision.h"
+#include "libcli/resolve/resolve.h"
 
 struct test_become_dc_state {
        struct libnet_context *ctx;
@@ -581,6 +582,8 @@ bool torture_net_become_dc(struct torture_context *torture)
        int ldb_ret;
        uint32_t i;
        char *sam_ldb_path;
+       const char *address;
+       struct nbt_name name;
 
        char *location = NULL;
        torture_assert_ntstatus_ok(torture, torture_temp_dir(torture, "libnet_BecomeDC", &location), 
@@ -592,6 +595,17 @@ bool torture_net_become_dc(struct torture_context *torture)
        s->tctx = torture;
        s->lp_ctx = torture->lp_ctx;
 
+       make_nbt_name_server(&name, torture_setting_string(torture, "host", NULL));
+
+       /* do an initial name resolution to find its IP */
+       status = resolve_name(lp_resolve_context(torture->lp_ctx),
+                             &name, torture, &address, torture->ev);
+       if (!NT_STATUS_IS_OK(status)) {
+               printf("Failed to resolve %s - %s\n",
+                      name.name, nt_errstr(status));
+               return false;
+       }
+
        s->netbios_name = lp_parm_string(torture->lp_ctx, NULL, "become dc", "smbtorture dc");
        if (!s->netbios_name || !s->netbios_name[0]) {
                s->netbios_name = "smbtorturedc";
@@ -618,7 +632,7 @@ bool torture_net_become_dc(struct torture_context *torture)
        b.in.domain_dns_name            = torture_join_dom_dns_name(s->tj);
        b.in.domain_netbios_name        = torture_join_dom_netbios_name(s->tj);
        b.in.domain_sid                 = torture_join_sid(s->tj);
-       b.in.source_dsa_address         = torture_setting_string(torture, "host", NULL);
+       b.in.source_dsa_address         = address;
        b.in.dest_dsa_netbios_name      = s->netbios_name;
 
        b.in.callbacks.private_data     = s;
@@ -700,7 +714,7 @@ cleanup:
        ZERO_STRUCT(u);
        u.in.domain_dns_name            = torture_join_dom_dns_name(s->tj);
        u.in.domain_netbios_name        = torture_join_dom_netbios_name(s->tj);
-       u.in.source_dsa_address         = torture_setting_string(torture, "host", NULL);
+       u.in.source_dsa_address         = address;
        u.in.dest_dsa_netbios_name      = s->netbios_name;
 
        status = libnet_UnbecomeDC(s->ctx, s, &u);