mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 14:21:25 +02:00
[MINOR] Add some tests on sockets family for port remapping and mode transparent.
This commit is contained in:
parent
ab844ea9e1
commit
ec810d1dc7
@ -669,7 +669,9 @@ int assign_server_address(struct session *s)
|
|||||||
if (!(s->be->options & PR_O_TRANSP) && !(s->flags & SN_FRT_ADDR_SET))
|
if (!(s->be->options & PR_O_TRANSP) && !(s->flags & SN_FRT_ADDR_SET))
|
||||||
get_frt_addr(s);
|
get_frt_addr(s);
|
||||||
|
|
||||||
s->srv_addr.sin_addr = ((struct sockaddr_in *)&s->frt_addr)->sin_addr;
|
if (s->frt_addr.ss_family == AF_INET) {
|
||||||
|
s->srv_addr.sin_addr = ((struct sockaddr_in *)&s->frt_addr)->sin_addr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if this server remaps proxied ports, we'll use
|
/* if this server remaps proxied ports, we'll use
|
||||||
@ -680,7 +682,8 @@ int assign_server_address(struct session *s)
|
|||||||
if (s->frt_addr.ss_family == AF_INET) {
|
if (s->frt_addr.ss_family == AF_INET) {
|
||||||
s->srv_addr.sin_port = htons(ntohs(s->srv_addr.sin_port) +
|
s->srv_addr.sin_port = htons(ntohs(s->srv_addr.sin_port) +
|
||||||
ntohs(((struct sockaddr_in *)&s->frt_addr)->sin_port));
|
ntohs(((struct sockaddr_in *)&s->frt_addr)->sin_port));
|
||||||
} else {
|
}
|
||||||
|
else if (s->frt_addr.ss_family == AF_INET6) {
|
||||||
s->srv_addr.sin_port = htons(ntohs(s->srv_addr.sin_port) +
|
s->srv_addr.sin_port = htons(ntohs(s->srv_addr.sin_port) +
|
||||||
ntohs(((struct sockaddr_in6 *)&s->frt_addr)->sin6_port));
|
ntohs(((struct sockaddr_in6 *)&s->frt_addr)->sin6_port));
|
||||||
}
|
}
|
||||||
@ -695,7 +698,9 @@ int assign_server_address(struct session *s)
|
|||||||
if (!(s->flags & SN_FRT_ADDR_SET))
|
if (!(s->flags & SN_FRT_ADDR_SET))
|
||||||
get_frt_addr(s);
|
get_frt_addr(s);
|
||||||
|
|
||||||
memcpy(&s->srv_addr, &s->frt_addr, MIN(sizeof(s->srv_addr), sizeof(s->frt_addr)));
|
if (s->frt_addr.ss_family == AF_INET) {
|
||||||
|
memcpy(&s->srv_addr, &s->frt_addr, MIN(sizeof(s->srv_addr), sizeof(s->frt_addr)));
|
||||||
|
}
|
||||||
/* when we support IPv6 on the backend, we may add other tests */
|
/* when we support IPv6 on the backend, we may add other tests */
|
||||||
//qfprintf(stderr, "Cannot get original server address.\n");
|
//qfprintf(stderr, "Cannot get original server address.\n");
|
||||||
//return SRV_STATUS_INTERNAL;
|
//return SRV_STATUS_INTERNAL;
|
||||||
@ -846,7 +851,7 @@ static void assign_tproxy_address(struct session *s)
|
|||||||
break;
|
break;
|
||||||
case SRV_TPROXY_CLI:
|
case SRV_TPROXY_CLI:
|
||||||
case SRV_TPROXY_CIP:
|
case SRV_TPROXY_CIP:
|
||||||
/* FIXME: what can we do if the client connects in IPv6 ? */
|
/* FIXME: what can we do if the client connects in IPv6 or unix socket ? */
|
||||||
s->from_addr = *(struct sockaddr_in *)&s->cli_addr;
|
s->from_addr = *(struct sockaddr_in *)&s->cli_addr;
|
||||||
break;
|
break;
|
||||||
case SRV_TPROXY_DYN:
|
case SRV_TPROXY_DYN:
|
||||||
@ -871,7 +876,7 @@ static void assign_tproxy_address(struct session *s)
|
|||||||
break;
|
break;
|
||||||
case PR_O_TPXY_CLI:
|
case PR_O_TPXY_CLI:
|
||||||
case PR_O_TPXY_CIP:
|
case PR_O_TPXY_CIP:
|
||||||
/* FIXME: what can we do if the client connects in IPv6 ? */
|
/* FIXME: what can we do if the client connects in IPv6 or socket unix? */
|
||||||
s->from_addr = *(struct sockaddr_in *)&s->cli_addr;
|
s->from_addr = *(struct sockaddr_in *)&s->cli_addr;
|
||||||
break;
|
break;
|
||||||
case PR_O_TPXY_DYN:
|
case PR_O_TPXY_DYN:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user