mirror of
https://github.com/OpenVPN/openvpn.git
synced 2024-09-20 12:02:28 +02:00
Force combinationation of --socks-proxy and --proto UDP to use IPv4.
Our current socks.c code does not handle IPv6 + UDP mode (socket negotiated with server is IPv4-only, addresses passed in the packets are IPv4-only). If this combination is specified, print an explanatory message and force IPv4-only. While at it, extend socks.c code to print address+port of auxiliary UDP connection to SOCKS server (helps debugging). Trac: #1221 Signed-off-by: Gert Doering <gert@greenie.muc.de> Acked-by: Antonio Quartulli <antonio@openvpn.net> Message-Id: <20191020150039.21516-1-gert@greenie.muc.de> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg18952.html Signed-off-by: Gert Doering <gert@greenie.muc.de>
This commit is contained in:
parent
bb1ea491cd
commit
57623b4e40
@ -2825,6 +2825,24 @@ options_postprocess_mutate_ce(struct options *o, struct connection_entry *ce)
|
||||
#endif
|
||||
}
|
||||
|
||||
/* our socks code is not fully IPv6 enabled yet (TCP works, UDP not)
|
||||
* so fall back to IPv4-only (trac #1221)
|
||||
*/
|
||||
if (ce->socks_proxy_server && proto_is_udp(ce->proto) && ce->af != AF_INET)
|
||||
{
|
||||
if (ce->af == AF_INET6)
|
||||
{
|
||||
msg(M_INFO, "WARNING: '--proto udp6' is not compatible with "
|
||||
"'--socks-proxy' today. Forcing IPv4 mode." );
|
||||
}
|
||||
else
|
||||
{
|
||||
msg(M_INFO, "NOTICE: dual-stack mode for '--proto udp' does not "
|
||||
"work correctly with '--socks-proxy' today. Forcing IPv4." );
|
||||
}
|
||||
ce->af = AF_INET;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set MTU defaults
|
||||
*/
|
||||
|
@ -414,6 +414,10 @@ recv_socks_reply(socket_descriptor_t sd,
|
||||
{
|
||||
memcpy(&addr->addr.in4.sin_addr, buf + 4, sizeof(addr->addr.in4.sin_addr));
|
||||
memcpy(&addr->addr.in4.sin_port, buf + 8, sizeof(addr->addr.in4.sin_port));
|
||||
struct gc_arena gc = gc_new();
|
||||
msg(M_INFO, "SOCKS proxy wants us to send UDP to %s",
|
||||
print_sockaddr(addr, &gc));
|
||||
gc_free(&gc);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user