]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s4:libnet: use helper functions to access dcerpc_binding->target_hostname
authorStefan Metzmacher <metze@samba.org>
Tue, 4 Feb 2014 08:59:54 +0000 (09:59 +0100)
committerGünther Deschner <gd@samba.org>
Thu, 13 Feb 2014 10:54:16 +0000 (11:54 +0100)
If possible also specify the already known address as dcerpc_binding->host.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
source4/libnet/libnet_become_dc.c
source4/libnet/libnet_join.c
source4/libnet/libnet_rpc.c
source4/libnet/libnet_unbecome_dc.c

index 9422172f6932ba402d36a970d58fa4401df15996..6d00fcc37b1245408c826b0a8fcfcd383062b39b 100644 (file)
@@ -1573,9 +1573,10 @@ static void becomeDC_drsuapi_connect_send(struct libnet_BecomeDC_state *s,
                {
                        print_str = "print,";
                }
-               binding_str = talloc_asprintf(s, "ncacn_ip_tcp:%s[%s%sseal]",
-                                             s->source_dsa.dns_name,
-                                             krb5_str, print_str);
+               binding_str = talloc_asprintf(s, "ncacn_ip_tcp:%s[%s%sseal,target_hostname=%s]",
+                                             s->source_dsa.address,
+                                             krb5_str, print_str,
+                                             s->source_dsa.dns_name);
                if (composite_nomem(binding_str, c)) return;
                c->status = dcerpc_parse_binding(s, binding_str, &drsuapi->binding);
                talloc_free(binding_str);
index 1c5253191de5f41ba768bcbc4615f4083ad1a46c..f9578407de30a486acd045fa72559fee6972ce5a 100644 (file)
@@ -243,7 +243,7 @@ static NTSTATUS libnet_JoinADSDomain(struct libnet_context *ctx, struct libnet_J
        /* Now we know the user's DN, open with LDAP, read and modify a few things */
 
        remote_ldb_url = talloc_asprintf(tmp_ctx, "ldap://%s", 
-                                        drsuapi_binding->target_hostname);
+               dcerpc_binding_get_string_option(drsuapi_binding, "target_hostname"));
        if (!remote_ldb_url) {
                r->out.error_string = NULL;
                talloc_free(tmp_ctx);
index db48ea3f7dbdd9c8c4103dd37fb0c9489bd7e94e..19838d4fe3151617f1fadca819452a951bd561a5 100644 (file)
@@ -79,7 +79,8 @@ static struct composite_context* libnet_RpcConnectSrv_send(struct libnet_context
                s->binding = talloc_asprintf(s, "ncacn_np:%s", r->in.name);
                break;
        case LIBNET_RPC_CONNECT_SERVER_ADDRESS:
-               s->binding = talloc_asprintf(s, "ncacn_np:%s", r->in.address);
+               s->binding = talloc_asprintf(s, "ncacn_np:%s[target_hostname=%s]",
+                                            r->in.address, r->in.name);
                break;
 
        case LIBNET_RPC_CONNECT_BINDING:
@@ -121,13 +122,6 @@ static struct composite_context* libnet_RpcConnectSrv_send(struct libnet_context
                if (!composite_is_ok(c)) return c;
        }
 
-       if (r->level == LIBNET_RPC_CONNECT_SERVER_ADDRESS) {
-               b->target_hostname = talloc_strdup(b, r->in.name);
-               if (composite_nomem(b->target_hostname, c)) {
-                       return c;
-               }
-       }
-
        /* connect to remote dcerpc pipe */
        pipe_connect_req = dcerpc_pipe_connect_b_send(c, b, r->in.dcerpc_iface,
                                                      ctx->cred, c->event_ctx,
index b0fe07b0d746536a785c38d3955a0e8d56bd2b94..f575eb1fe6714e87b3d9911c4ca9b25ab526cc4c 100644 (file)
@@ -543,7 +543,9 @@ static void unbecomeDC_drsuapi_connect_send(struct libnet_UnbecomeDC_state *s)
        struct composite_context *creq;
        char *binding_str;
 
-       binding_str = talloc_asprintf(s, "ncacn_ip_tcp:%s[seal]", s->source_dsa.dns_name);
+       binding_str = talloc_asprintf(s, "ncacn_ip_tcp:%s[seal,target_hostname=%s]",
+                                     s->source_dsa.address,
+                                     s->source_dsa.dns_name);
        if (composite_nomem(binding_str, c)) return;
 
        c->status = dcerpc_parse_binding(s, binding_str, &s->drsuapi.binding);