summaryrefslogtreecommitdiffstats
path: root/source4/libnet
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2014-01-30 22:04:11 +0100
committerGünther Deschner <gd@samba.org>2014-02-13 11:54:16 +0100
commit98e2b3c28f05ee3c23d16c9b8eaae65959c93de1 (patch)
treec564dd745749ce4c007c5b4539472d3e1411d514 /source4/libnet
parent133c5ba0633941c235064e8d633a265e714ca3be (diff)
downloadsamba-98e2b3c28f05ee3c23d16c9b8eaae65959c93de1.tar.gz
samba-98e2b3c28f05ee3c23d16c9b8eaae65959c93de1.tar.xz
samba-98e2b3c28f05ee3c23d16c9b8eaae65959c93de1.zip
s4:libnet: make use of dcerpc_binding_[g|s]et_*() in libnet_join.c
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_join.c33
1 files changed, 29 insertions, 4 deletions
diff --git a/source4/libnet/libnet_join.c b/source4/libnet/libnet_join.c
index 150bd6a1ab4..1c5253191de 100644
--- a/source4/libnet/libnet_join.c
+++ b/source4/libnet/libnet_join.c
@@ -57,6 +57,7 @@ static NTSTATUS libnet_JoinADSDomain(struct libnet_context *ctx, struct libnet_J
struct dcerpc_pipe *drsuapi_pipe;
struct dcerpc_binding *drsuapi_binding;
+ enum dcerpc_transport_t transport;
struct drsuapi_DsBind r_drsuapi_bind;
struct drsuapi_DsCrackNames r_crack_names;
struct drsuapi_DsNameString names[1];
@@ -101,13 +102,37 @@ static NTSTATUS libnet_JoinADSDomain(struct libnet_context *ctx, struct libnet_J
return NT_STATUS_NO_MEMORY;
}
+ transport = dcerpc_binding_get_transport(drsuapi_binding);
/* DRSUAPI is only available on IP_TCP, and locally on NCALRPC */
- if (drsuapi_binding->transport != NCALRPC) {
- drsuapi_binding->transport = NCACN_IP_TCP;
+ if (transport != NCALRPC) {
+ status = dcerpc_binding_set_transport(drsuapi_binding, NCACN_IP_TCP);
+ if (!NT_STATUS_IS_OK(status)) {
+ r->out.error_string = talloc_asprintf(r,
+ "dcerpc_binding_set_transport failed: %s",
+ nt_errstr(status));
+ talloc_free(tmp_ctx);
+ return status;
+ }
+ }
+
+ status = dcerpc_binding_set_string_option(drsuapi_binding, "endpoint", NULL);
+ if (!NT_STATUS_IS_OK(status)) {
+ r->out.error_string = talloc_asprintf(r,
+ "dcerpc_binding_set_string_option failed: %s",
+ nt_errstr(status));
+ talloc_free(tmp_ctx);
+ return status;
+ }
+
+ status = dcerpc_binding_set_flags(drsuapi_binding, DCERPC_SEAL, 0);
+ if (!NT_STATUS_IS_OK(status)) {
+ r->out.error_string = talloc_asprintf(r,
+ "dcerpc_binding_set_flags failed: %s",
+ nt_errstr(status));
+ talloc_free(tmp_ctx);
+ return status;
}
- drsuapi_binding->endpoint = NULL;
- drsuapi_binding->flags |= DCERPC_SEAL;
status = dcerpc_pipe_connect_b(tmp_ctx,
&drsuapi_pipe,