MINOR: stream: Use backend stream-interface dst address instead of target_addr

target_addr field in the stream structure is removed. The backend
stream-interface destination address is now used.
diff --git a/include/haproxy/stream-t.h b/include/haproxy/stream-t.h
index 67b04e2..b8e3165 100644
--- a/include/haproxy/stream-t.h
+++ b/include/haproxy/stream-t.h
@@ -153,7 +153,6 @@
 		struct stktable *table;
 	} store[8];                     /* tracked stickiness values to store */
 
-	struct sockaddr_storage *target_addr;   /* the address to join if not null */
 	struct stkctr stkctr[MAX_SESS_STKCTR];  /* content-aware stick counters */
 
 	struct strm_flt strm_flt;               /* current state of filters active on this stream */
diff --git a/src/backend.c b/src/backend.c
index 11f5df1..f170cb4 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -1267,7 +1267,7 @@
 	srv = objt_server(s->target);
 
 	if (!(s->flags & SF_ADDR_SET)) {
-		err = alloc_dst_address(&s->target_addr, srv, s);
+		err = alloc_dst_address(&s->si[1].dst, srv, s);
 		if (err != SRV_STATUS_OK)
 			return SF_ERR_INTERNAL;
 
@@ -1312,7 +1312,7 @@
 
 	/* 3. destination address */
 	if (srv && (!is_addr(&srv->addr) || srv->flags & SRV_F_MAPPORTS))
-		hash_params.dst_addr = s->target_addr;
+		hash_params.dst_addr = s->si[1].dst;
 
 	/* 4. source address */
 	hash_params.src_addr = bind_addr;
@@ -1534,7 +1534,7 @@
 		return SF_ERR_RESOURCE;
 
 	/* copy the target address into the connection */
-	*srv_conn->dst = *s->target_addr;
+	*srv_conn->dst = *s->si[1].dst;
 
 	/* Copy network namespace from client connection */
 	srv_conn->proxy_netns = cli_conn ? cli_conn->proxy_netns : NULL;
@@ -1783,7 +1783,7 @@
 		if (((s->flags & (SF_DIRECT|SF_FORCE_PRST)) == SF_DIRECT) &&
 		    (s->be->options & PR_O_REDISP)) {
 			s->flags &= ~(SF_DIRECT | SF_ASSIGNED | SF_ADDR_SET);
-			sockaddr_free(&s->target_addr);
+			sockaddr_free(&s->si[1].dst);
 			goto redispatch;
 		}
 
diff --git a/src/cli.c b/src/cli.c
index 6a46f13..36d11a4 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -2572,7 +2572,7 @@
 			s->srv_conn = NULL;
 		}
 
-		sockaddr_free(&s->target_addr);
+		sockaddr_free(&s->si[1].dst);
 
 		s->si[1].state     = s->si[1].prev_state = SI_ST_INI;
 		s->si[1].err_type  = SI_ET_NONE;
diff --git a/src/dns.c b/src/dns.c
index 818c4e7..5a0724b 100644
--- a/src/dns.c
+++ b/src/dns.c
@@ -909,7 +909,7 @@
 
 
 	s->target = &ds->dss->srv->obj_type;
-	if (!sockaddr_alloc(&s->target_addr, &ds->dss->srv->addr, sizeof(ds->dss->srv->addr)))
+	if (!sockaddr_alloc(&s->si[1].dst, &ds->dss->srv->addr, sizeof(ds->dss->srv->addr)))
 		goto out_free_strm;
 	s->flags = SF_ASSIGNED|SF_ADDR_SET;
 	s->si[1].flags |= SI_FL_NOLINGER;
diff --git a/src/hlua.c b/src/hlua.c
index ab92ff7..f433a4f 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -2553,7 +2553,7 @@
 	struct xref *peer;
 	struct appctx *appctx;
 	struct stream_interface *si;
-	struct stream *s;
+	const struct sockaddr_storage *dst;
 	int ret;
 
 	MAY_LJMP(check_args(L, 1, "getpeername"));
@@ -2574,15 +2574,14 @@
 	}
 	appctx = container_of(peer, struct appctx, ctx.hlua_cosocket.xref);
 	si = appctx->owner;
-	s = si_strm(si);
-
-	if (!s->target_addr) {
+	dst = si_dst(si_opposite(si));
+	if (!dst) {
 		xref_unlock(&socket->xref, peer);
 		lua_pushnil(L);
 		return 1;
 	}
 
-	ret = MAY_LJMP(hlua_socket_info(L, s->target_addr));
+	ret = MAY_LJMP(hlua_socket_info(L, dst));
 	xref_unlock(&socket->xref, peer);
 	return ret;
 }
@@ -2781,7 +2780,7 @@
 	si = appctx->owner;
 	s = si_strm(si);
 
-	if (!sockaddr_alloc(&s->target_addr, addr, sizeof(*addr))) {
+	if (!sockaddr_alloc(&si_opposite(si)->dst, addr, sizeof(*addr))) {
 		xref_unlock(&socket->xref, peer);
 		WILL_LJMP(luaL_error(L, "connect: internal error"));
 	}
diff --git a/src/http_client.c b/src/http_client.c
index 4d1ae05..7756e82 100644
--- a/src/http_client.c
+++ b/src/http_client.c
@@ -372,7 +372,7 @@
 		goto out_free_appctx;
 	}
 
-	if (!sockaddr_alloc(&s->target_addr, &hc->dst, sizeof(hc->dst))) {
+	if (!sockaddr_alloc(&s->si[1].dst, &hc->dst, sizeof(hc->dst))) {
 		ha_alert("httpclient: Failed to initialize stream in %s:%d.\n", __FUNCTION__, __LINE__);
 		goto out_free_stream;
 	}
diff --git a/src/peers.c b/src/peers.c
index 09aacca..94ef22e 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -3215,7 +3215,7 @@
 
 	/* initiate an outgoing connection */
 	s->target = peer_session_target(peer, s);
-	if (!sockaddr_alloc(&s->target_addr, &peer->addr, sizeof(peer->addr)))
+	if (!sockaddr_alloc(&s->si[1].dst, &peer->addr, sizeof(peer->addr)))
 		goto out_free_strm;
 	s->flags = SF_ASSIGNED|SF_ADDR_SET;
 	s->si[1].flags |= SI_FL_NOLINGER;
diff --git a/src/sink.c b/src/sink.c
index d694e58..9e4da9c 100644
--- a/src/sink.c
+++ b/src/sink.c
@@ -661,7 +661,7 @@
 
 
 	s->target = &sft->srv->obj_type;
-	if (!sockaddr_alloc(&s->target_addr, &sft->srv->addr, sizeof(sft->srv->addr)))
+	if (!sockaddr_alloc(&s->si[1].dst, &sft->srv->addr, sizeof(sft->srv->addr)))
 		goto out_free_strm;
 	s->flags = SF_ASSIGNED|SF_ADDR_SET;
 	s->si[1].flags |= SI_FL_NOLINGER;
diff --git a/src/stream.c b/src/stream.c
index 7aaa0a0..6e025a3 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -491,7 +491,6 @@
 
 	stream_init_srv_conn(s);
 	s->target = sess->listener ? sess->listener->default_target : NULL;
-	s->target_addr = NULL;
 
 	s->pend_pos = NULL;
 	s->priority_class = 0;
@@ -743,7 +742,6 @@
 		session_free(sess);
 	}
 
-	sockaddr_free(&s->target_addr);
 	sockaddr_free(&s->si[0].src);
 	sockaddr_free(&s->si[0].dst);
 	sockaddr_free(&s->si[1].src);