From: Gert Doering Date: Wed, 9 Oct 2019 09:52:00 +0000 (+0200) Subject: Fix IPv6 routes on tap interfaces on OpenSolaris/OpenIndiana X-Git-Tag: v2.5_beta1~266 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=01b3a48c29df6dc4bade3d8fb7903346a3f77887;p=thirdparty%2Fopenvpn.git Fix IPv6 routes on tap interfaces on OpenSolaris/OpenIndiana The "route add" code always used "metric 0" on OpenSolaris, because (on tun interfaces) it was required to make the route work on "non-ethernet" interfaces (connected, no NDP). This breaks routes via tap interfaces on recent Solaris versions (tested on OpenIndiana 2019) - there, routes only work if metric is != 0 (or just not set). Otherwise it tries to map the gateway address to a local address and fails. Signed-off-by: Gert Doering Acked-by: Antonio Quartulli Message-Id: <20191009095200.9337-2-gert@greenie.muc.de> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg18906.html Signed-off-by: Gert Doering --- diff --git a/src/openvpn/route.c b/src/openvpn/route.c index 3183fb47f..97e90e56b 100644 --- a/src/openvpn/route.c +++ b/src/openvpn/route.c @@ -2043,8 +2043,8 @@ add_route_ipv6(struct route_ipv6 *r6, const struct tuntap *tt, r6->netbits, gateway ); - /* on tun/tap, not "elsewhere"? -> metric 0 */ - if (!r6->iface) + /* on tun (not tap), not "elsewhere"? -> metric 0 */ + if (tt->type == DEV_TYPE_TUN && !r6->iface) { argv_printf_cat(&argv, "0"); }