]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Fix IPv6 routes on tap interfaces on OpenSolaris/OpenIndiana
authorGert Doering <gert@greenie.muc.de>
Wed, 9 Oct 2019 09:52:00 +0000 (11:52 +0200)
committerGert Doering <gert@greenie.muc.de>
Mon, 28 Oct 2019 18:12:57 +0000 (19:12 +0100)
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 <gert@greenie.muc.de>
Acked-by: Antonio Quartulli <antonio@openvpn.net>
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 <gert@greenie.muc.de>
(cherry picked from commit 01b3a48c29df6dc4bade3d8fb7903346a3f77887)

src/openvpn/route.c

index 2d6428b231326f53c8691e8b5d56838597937052..4199da3b50e543812bc8ae966d9aea11b39bc2b1 100644 (file)
@@ -2038,8 +2038,8 @@ add_route_ipv6(struct route_ipv6 *r6, const struct tuntap *tt, unsigned int flag
                 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");
     }