@@ -9,13 +9,17 @@
::
--show-gateway
+ --show-gateway IPv4-target
--show-gateway IPv6-target
+ For IPv4 it looks for a 0.0.0.0/0 route, or the specified IPv4 address
+ if the target can be parsed as an IPv4 address.
For IPv6 this queries the route towards ::/128, or the specified IPv6
- target address if passed as argument.
- For IPv4 on Linux, Windows, MacOS and BSD it looks for a 0.0.0.0/0 route.
- If there are more specific routes, the result will not always be matching
- the route of the IPv4 packets to the VPN gateway.
+ target address if the argument is an IPv6 address.
+
+ Adding a target is helpful for diagnostics to see if OpenVPN will do
+ the right thing if there are more specific IPv4/IPv6 routes to a
+ VPN server.
Advanced Expert Options
@@ -788,7 +788,7 @@
"\n"
"General Standalone Options:\n"
#ifdef ENABLE_DEBUG
- "--show-gateway : Show info about default gateway.\n"
+ "--show-gateway [address]: Show info about gateway [to v4/v6 address].\n"
#endif
;
@@ -5858,16 +5858,22 @@
{
struct route_gateway_info rgi;
struct route_ipv6_gateway_info rgi6;
- struct in6_addr remote = IN6ADDR_ANY_INIT;
+ in_addr_t remote_ipv4 = 0;
+ struct in6_addr remote_ipv6 = IN6ADDR_ANY_INIT;
openvpn_net_ctx_t net_ctx;
VERIFY_PERMISSION(OPT_P_GENERAL);
if (p[1])
{
- get_ipv6_addr(p[1], &remote, NULL, M_WARN);
+ /* try parsing the argument as a v4 or v6 address - if
+ * possible, the output will show the exact route there, and
+ * "the default route" for the other protocol
+ */
+ remote_ipv4 = get_ip_addr(p[1], M_WARN, NULL);
+ get_ipv6_addr(p[1], &remote_ipv6, NULL, M_WARN);
}
net_ctx_init(NULL, &net_ctx);
- get_default_gateway(&rgi, 0, &net_ctx);
- get_default_gateway_ipv6(&rgi6, &remote, &net_ctx);
+ get_default_gateway(&rgi, remote_ipv4, &net_ctx);
+ get_default_gateway_ipv6(&rgi6, &remote_ipv6, &net_ctx);
print_default_gateway(M_INFO, &rgi, &rgi6);
openvpn_exit(OPENVPN_EXIT_STATUS_GOOD); /* exit point */
}
Attention is currently required from: flichtenheld, plaisthos. Hello plaisthos, flichtenheld, I'd like you to do a code review. Please visit http://gerrit.openvpn.net/c/openvpn/+/882?usp=email to review the following change. Change subject: options: add IPv4 support to '--show-gateway <arg>' ...................................................................... options: add IPv4 support to '--show-gateway <arg>' This is an old debug option, which used to print "the default routes found" for IPv4 and IPv6, and optionally "a route to a particular IPv6 target" if passed an argument. With the work started in commit 0fcfc8381f60d we want this to handle IPv4 as well, mostly to be able to easily test per-platform get_default_gateway() implementations. The implementation is simplistic - if <arg> can be parsed as an IPv4 or IPv6 address, that particular protocol lookup will do "the host route" and the other one will stick to "the default route". NOTE: as of this commit, there is no backend functionality for IPv4, so it will not actually print anything interesting. This will be added in further platform dependent commits. Change-Id: Ic438c583a782035ecb9b5ea65702a768ae2585f5 Signed-off-by: Gert Doering <gert@greenie.muc.de> -- v2: amend --help output Change-Id: I9e96af79981c4cb050f5b963837c7166e92e6791 --- M doc/man-sections/advanced-options.rst M src/openvpn/options.c 2 files changed, 19 insertions(+), 9 deletions(-) git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/82/882/1