summaryrefslogtreecommitdiffstats
path: root/src/openvpn/route.c
diff options
context:
space:
mode:
authorPhilipp Hagemeister <phihag@phihag.de>2014-09-26 18:11:01 +0200
committerGert Doering <gert@greenie.muc.de>2014-10-14 15:26:27 +0200
commitbaa195b9884e276c4fd3dc0c9e8a84b89ea71cfb (patch)
tree316c033495625bb8ee200c94073db10b56662d53 /src/openvpn/route.c
parent5ca1d70fa030d4344e4b64a28811a6aab091e0d2 (diff)
downloadopenvpn-baa195b9884e276c4fd3dc0c9e8a84b89ea71cfb.tar.gz
openvpn-baa195b9884e276c4fd3dc0c9e8a84b89ea71cfb.tar.xz
openvpn-baa195b9884e276c4fd3dc0c9e8a84b89ea71cfb.zip
Implement on-link route adding for iproute2
This is an OpenPGP/MIME signed message (RFC 4880 and 3156) Currently, when compiling with --enable-iproute2 , OpenVPN does not create a correct route when the user is connected to the Internet without a gateway (e.g. via ppp). This patch implements the corresponding FIXME. Signed-off-by: Philipp Hagemeister <phihag@phihag.de> Acked-by: Gert Doering <gert@greenie.muc.de> Message-Id: <54259015.2030005@phihag.de> URL: http://article.gmane.org/gmane.network.openvpn.devel/9056 Signed-off-by: Gert Doering <gert@greenie.muc.de>
Diffstat (limited to 'src/openvpn/route.c')
-rw-r--r--src/openvpn/route.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/openvpn/route.c b/src/openvpn/route.c
index 5428e76..e76c2bd 100644
--- a/src/openvpn/route.c
+++ b/src/openvpn/route.c
@@ -1285,15 +1285,18 @@ add_route (struct route_ipv4 *r,
#if defined(TARGET_LINUX)
#ifdef ENABLE_IPROUTE
- /* FIXME -- add on-link support for ENABLE_IPROUTE */
- argv_printf (&argv, "%s route add %s/%d via %s",
+ argv_printf (&argv, "%s route add %s/%d",
iproute_path,
network,
- count_netmask_bits(netmask),
- gateway);
+ count_netmask_bits(netmask));
+
if (r->flags & RT_METRIC_DEFINED)
argv_printf_cat (&argv, "metric %d", r->metric);
+ if (is_on_link (is_local_route, flags, rgi))
+ argv_printf_cat (&argv, "dev %s", rgi->iface);
+ else
+ argv_printf_cat (&argv, "via %s", gateway);
#else
argv_printf (&argv, "%s add -net %s netmask %s",
ROUTE_PATH,