summaryrefslogtreecommitdiffstats
path: root/source4/libnet
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2014-02-04 09:59:54 +0100
committerGünther Deschner <gd@samba.org>2014-02-13 11:54:16 +0100
commit776f5c65bf6123d4f6909724436c48fe900866f0 (patch)
tree048bdde6960364489b56f544c84d5638136db117 /source4/libnet
parentab5f89bc72e4d42fd12572e267f8c236705646fb (diff)
downloadsamba-776f5c65bf6123d4f6909724436c48fe900866f0.tar.gz
samba-776f5c65bf6123d4f6909724436c48fe900866f0.tar.xz
samba-776f5c65bf6123d4f6909724436c48fe900866f0.zip
s4:libnet: use helper functions to access dcerpc_binding->target_hostname
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>
Diffstat (limited to 'source4/libnet')
-rw-r--r--source4/libnet/libnet_become_dc.c7
-rw-r--r--source4/libnet/libnet_join.c2
-rw-r--r--source4/libnet/libnet_rpc.c10
-rw-r--r--source4/libnet/libnet_unbecome_dc.c4
4 files changed, 10 insertions, 13 deletions
diff --git a/source4/libnet/libnet_become_dc.c b/source4/libnet/libnet_become_dc.c
index 9422172f693..6d00fcc37b1 100644
--- a/source4/libnet/libnet_become_dc.c
+++ b/source4/libnet/libnet_become_dc.c
@@ -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);
diff --git a/source4/libnet/libnet_join.c b/source4/libnet/libnet_join.c
index 1c5253191de..f9578407de3 100644
--- a/source4/libnet/libnet_join.c
+++ b/source4/libnet/libnet_join.c
@@ -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);
diff --git a/source4/libnet/libnet_rpc.c b/source4/libnet/libnet_rpc.c
index db48ea3f7db..19838d4fe31 100644
--- a/source4/libnet/libnet_rpc.c
+++ b/source4/libnet/libnet_rpc.c
@@ -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,
diff --git a/source4/libnet/libnet_unbecome_dc.c b/source4/libnet/libnet_unbecome_dc.c
index b0fe07b0d74..f575eb1fe67 100644
--- a/source4/libnet/libnet_unbecome_dc.c
+++ b/source4/libnet/libnet_unbecome_dc.c
@@ -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);