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/+/881?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". Change-Id: Ic438c583a782035ecb9b5ea65702a768ae2585f5 Signed-off-by: Gert Doering <g...@greenie.muc.de> --- M doc/man-sections/advanced-options.rst M src/openvpn/options.c 2 files changed, 18 insertions(+), 8 deletions(-) git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/81/881/1 diff --git a/doc/man-sections/advanced-options.rst b/doc/man-sections/advanced-options.rst index d5a6b4f..e1115e4 100644 --- a/doc/man-sections/advanced-options.rst +++ b/doc/man-sections/advanced-options.rst @@ -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 diff --git a/src/openvpn/options.c b/src/openvpn/options.c index 5a80e6b..2897961 100644 --- a/src/openvpn/options.c +++ b/src/openvpn/options.c @@ -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 */ } -- To view, visit http://gerrit.openvpn.net/c/openvpn/+/881?usp=email To unsubscribe, or for help writing mail filters, visit http://gerrit.openvpn.net/settings Gerrit-Project: openvpn Gerrit-Branch: master Gerrit-Change-Id: Ic438c583a782035ecb9b5ea65702a768ae2585f5 Gerrit-Change-Number: 881 Gerrit-PatchSet: 1 Gerrit-Owner: cron2 <g...@greenie.muc.de> Gerrit-Reviewer: flichtenheld <fr...@lichtenheld.com> Gerrit-Reviewer: plaisthos <arne-open...@rfc2549.org> Gerrit-CC: openvpn-devel <openvpn-devel@lists.sourceforge.net> Gerrit-Attention: plaisthos <arne-open...@rfc2549.org> Gerrit-Attention: flichtenheld <fr...@lichtenheld.com> Gerrit-MessageType: newchange
_______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel