if (!r->defined)
return;
@@ -1113,23 +1114,26 @@ add_route (struct route *r, const struct tuntap *tt,
unsigned int flags, const s
#if defined(TARGET_LINUX)
#ifdef CONFIG_FEATURE_IPROUTE
- argv_printf (&argv, "%s route add %s/%d via %s",
+ argv_printf (&argv, "%s route add %s/%d via %s dev %s",
iproute_path,
network,
count_netmask_bits(netmask),
- gateway);
+ gateway,
+ device);
if (r->metric_defined)
argv_printf_cat (&argv, "metric %d", r->metric);
#else
- argv_printf (&argv, "%s add -net %s netmask %s gw %s",
+ argv_printf (&argv, "%s add -net %s netmask %s gw %s dev %s",
ROUTE_PATH,
network,
netmask,
- gateway);
+ gateway,
+ device);
if (r->metric_defined)
argv_printf_cat (&argv, "metric %d", r->metric);
#endif /*CONFIG_FEATURE_IPROUTE*/
+
argv_msg (D_ROUTE, &argv);
status = openvpn_execve_check (&argv, es, 0, "ERROR: Linux route add command
failed");
@@ -1452,6 +1456,7 @@ delete_route (const struct route *r, const struct tuntap
*tt, unsigned int flags
const char *network;
const char *netmask;
const char *gateway;
+ const char *device = tt->actual_name;
if (!r->defined)
return;
@@ -1465,16 +1470,18 @@ delete_route (const struct route *r, const struct
tuntap *tt, unsigned int flags
#if defined(TARGET_LINUX)
#ifdef CONFIG_FEATURE_IPROUTE
- argv_printf (&argv, "%s route del %s/%d",
+ argv_printf (&argv, "%s route del %s/%d dev %s",
iproute_path,
network,
- count_netmask_bits(netmask));
+ count_netmask_bits(netmask),
+ device);
#else
- argv_printf (&argv, "%s del -net %s netmask %s",
+ argv_printf (&argv, "%s del -net %s netmask %s dev %s",
ROUTE_PATH,
network,
- netmask);
+ netmask,
+ device);
#endif /*CONFIG_FEATURE_IPROUTE*/
if (r->metric_defined)
argv_printf_cat (&argv, "metric %d", r->metric);