diff options
author | Stefan Metzmacher <metze@samba.org> | 2010-02-25 12:47:38 +0100 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2010-02-26 13:22:12 +1100 |
commit | 3751485c8432c0f6d3955f2b03a81cf4002d7a1b (patch) | |
tree | 0531c040e0e144b4cec7de9bcf75c7a64f21f731 /source4/torture/rpc | |
parent | b6737c1a7cfe68ff45a2114b48e99176dd32d2ae (diff) | |
download | samba-3751485c8432c0f6d3955f2b03a81cf4002d7a1b.tar.gz samba-3751485c8432c0f6d3955f2b03a81cf4002d7a1b.tar.bz2 samba-3751485c8432c0f6d3955f2b03a81cf4002d7a1b.zip |
s4:torture: use a connected CLDAP socket.
This is needed because we don't (want) to specify an explicit
local address. And the socket family (ipv4 vs. ipv6) needs to
be autodetected based on the remote address before the
socket() syscall.
Otherwise we would try to connect to a ipv4 address through an
ipv6only socket.
metze
Diffstat (limited to 'source4/torture/rpc')
-rw-r--r-- | source4/torture/rpc/dssync.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/source4/torture/rpc/dssync.c b/source4/torture/rpc/dssync.c index 94a70ed7b1..1d94faaad6 100644 --- a/source4/torture/rpc/dssync.c +++ b/source4/torture/rpc/dssync.c @@ -33,7 +33,7 @@ #include "lib/ldb_wrap.h" #include "torture/rpc/rpc.h" #include "torture/drs/proto.h" - +#include "lib/tsocket/tsocket.h" struct DsSyncBindInfo { struct dcerpc_pipe *drs_pipe; @@ -294,8 +294,21 @@ static bool test_GetInfo(struct torture_context *tctx, struct DsSyncTest *ctx) bool ret = true; struct cldap_socket *cldap; struct cldap_netlogon search; + struct tsocket_address *dest_addr; + int ret2; + + ret2 = tsocket_address_inet_from_strings(tctx, "ip", + ctx->drsuapi_binding->host, + lp_cldap_port(tctx->lp_ctx), + &dest_addr); + if (ret2 != 0) { + printf("failed to create tsocket_address for '%s' port %u - %s\n", + ctx->drsuapi_binding->host, lp_cldap_port(tctx->lp_ctx), + strerror(errno)); + return false; + } - status = cldap_socket_init(ctx, NULL, NULL, NULL, &cldap); + status = cldap_socket_init(ctx, NULL, NULL, dest_addr, &cldap); if (!NT_STATUS_IS_OK(status)) { printf("failed to setup cldap socket - %s\n", nt_errstr(status)); @@ -333,8 +346,8 @@ static bool test_GetInfo(struct torture_context *tctx, struct DsSyncTest *ctx) ctx->domain_dn = r.out.ctr->ctr1->array[0].result_name; ZERO_STRUCT(search); - search.in.dest_address = ctx->drsuapi_binding->host; - search.in.dest_port = lp_cldap_port(tctx->lp_ctx); + search.in.dest_address = NULL; + search.in.dest_port = 0; search.in.acct_control = -1; search.in.version = NETLOGON_NT_VERSION_5 | NETLOGON_NT_VERSION_5EX; search.in.map_response = true; |