aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGert Doering <gert@greenie.muc.de>2010-03-05 09:42:11 +0100
committerGert Doering <gert@greenie.muc.de>2011-04-24 17:22:41 +0200
commita9557fcbdf986bac3bce519978600c881e9911ce (patch)
tree720ea5e3c6b439b003af6eb40dbc795dcc14b4ee
parentdocument recent changes and open TODOs, adapt --version info, tag release (diff)
downloadopenvpn-a9557fcbdf986bac3bce519978600c881e9911ce.tar.xz
Win32: set next-hop for IPv6 routes according to TUN/TAP mode - in TUN mode,
use special next-hop address (fe80::8) that tapdrv will handle ND for
-rw-r--r--route.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/route.c b/route.c
index 1604e9e..b150302 100644
--- a/route.c
+++ b/route.c
@@ -1348,9 +1348,19 @@ add_route_ipv6 (struct route_ipv6 *r6, const struct tuntap *tt, unsigned int fla
r6->netbits,
device);
+ /* next-hop depends on TUN or TAP mode:
+ * - in TAP mode, we use the "real" next-hop
+ * - in TUN mode we use a special-case link-local address that the tapdrvr
+ * knows about and will answer ND (neighbor discovery) packets for
+ */
+ if ( tt->type == DEV_TYPE_TUN )
+ argv_printf_cat( &argv, " %s", "fe80::8" );
+ else
+ argv_printf_cat( &argv, " %s", gateway );
+
#if 0
if (r->metric_defined)
- argv_printf_cat (&argv, "METRIC %d", r->metric);
+ argv_printf_cat (&argv, " METRIC %d", r->metric);
#endif
argv_msg (D_ROUTE, &argv);