When using DCO iroutes and routes all live in the same routing table, However, the latter should always come after the former.
for this reason assign a default metric of 200 to routes. iroutes will later get a metric of 100. Signed-off-by: Antonio Quartulli <a...@unstable.cc> --- src/openvpn/dco.h | 2 ++ src/openvpn/init.c | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/openvpn/dco.h b/src/openvpn/dco.h index dcadba78..063e5028 100644 --- a/src/openvpn/dco.h +++ b/src/openvpn/dco.h @@ -38,6 +38,8 @@ struct event_set; struct options; struct tuntap; +#define DCO_DEFAULT_METRIC 200 + #if defined(ENABLE_DCO) /** diff --git a/src/openvpn/init.c b/src/openvpn/init.c index 638fd10c..f586bfc7 100644 --- a/src/openvpn/init.c +++ b/src/openvpn/init.c @@ -1385,6 +1385,11 @@ do_init_route_list(const struct options *options, int dev = dev_type_enum(options->dev, options->dev_type); int metric = 0; + if (dco_enabled(options)) + { + metric = DCO_DEFAULT_METRIC; + } + if (dev == DEV_TYPE_TUN && (options->topology == TOP_NET30 || options->topology == TOP_P2P)) { gw = options->ifconfig_remote_netmask; @@ -1421,6 +1426,11 @@ do_init_route_ipv6_list(const struct options *options, const char *gw = NULL; int metric = -1; /* no metric set */ + if (dco_enabled(options)) + { + metric = DCO_DEFAULT_METRIC; + } + gw = options->ifconfig_ipv6_remote; /* default GW = remote end */ if (options->route_ipv6_default_gateway) { -- 2.35.1 _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel