diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-01-30 22:04:11 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2014-02-13 11:54:16 +0100 |
commit | 98e2b3c28f05ee3c23d16c9b8eaae65959c93de1 (patch) | |
tree | c564dd745749ce4c007c5b4539472d3e1411d514 /source4/libnet | |
parent | 133c5ba0633941c235064e8d633a265e714ca3be (diff) | |
download | samba-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.c | 33 |
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, |