From e5e5a1110fb4092a1221512627b1f9d03ec8839c Mon Sep 17 00:00:00 2001 From: Julien Kerihuel Date: Fri, 27 Aug 2010 14:04:07 +0200 Subject: Add unique IP address binding for client connections (EPM and ncacn_ip_tcp levels) This allows for binding strings like this: ncacn_ip_tcp:host[localaddress=192.168.2.1,seal] which will force the connection to be locally bound to the specified IP address Signed-off-by: Andrew Tridgell --- source4/librpc/rpc/dcerpc_connect.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source4/librpc/rpc/dcerpc_connect.c') diff --git a/source4/librpc/rpc/dcerpc_connect.c b/source4/librpc/rpc/dcerpc_connect.c index 7779d31f99..0f3a86256c 100644 --- a/source4/librpc/rpc/dcerpc_connect.c +++ b/source4/librpc/rpc/dcerpc_connect.c @@ -276,6 +276,7 @@ static NTSTATUS dcerpc_pipe_connect_ncacn_np_smb2_recv(struct composite_context struct pipe_ip_tcp_state { struct dcerpc_pipe_connect io; + const char *localaddr; const char *host; const char *target_hostname; uint32_t port; @@ -319,13 +320,14 @@ static struct composite_context* dcerpc_pipe_connect_ncacn_ip_tcp_send(TALLOC_CT /* store input parameters in state structure */ s->io = *io; + s->localaddr = talloc_reference(c, io->binding->localaddress); s->host = talloc_reference(c, io->binding->host); s->target_hostname = talloc_reference(c, io->binding->target_hostname); /* port number is a binding endpoint here */ s->port = atoi(io->binding->endpoint); /* send pipe open request on tcp/ip */ - pipe_req = dcerpc_pipe_open_tcp_send(s->io.pipe->conn, s->host, s->target_hostname, + pipe_req = dcerpc_pipe_open_tcp_send(s->io.pipe->conn, s->localaddr, s->host, s->target_hostname, s->port, io->resolve_ctx); composite_continue(c, pipe_req, continue_pipe_open_ncacn_ip_tcp, c); return c; -- cgit