summaryrefslogtreecommitdiff
path: root/src/vpn
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2017-11-17 11:28:54 +0100
committerBeniamino Galvani <bgalvani@redhat.com>2017-11-17 13:36:31 +0100
commit8f677a77728c1f4434283d1a39f501c48eaef654 (patch)
treef8747936b3befd91b341568f3b16953886fa3de5 /src/vpn
parent7d26f540ee80736f917a9ee08419c52d503a893b (diff)
downloadNetworkManager-8f677a77728c1f4434283d1a39f501c48eaef654.tar.gz
vpn: avoid adding unneeded routes when ipvx.ignore-auto-routes=yes
Instead of adding routes and then let nm_ipx_config_merge_setting() remove them, don't add them in the first place when ipvx.ignore-auto-routes=yes.
Diffstat (limited to 'src/vpn')
-rw-r--r--src/vpn/nm-vpn-connection.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/vpn/nm-vpn-connection.c b/src/vpn/nm-vpn-connection.c
index 929061847c..7122243d35 100644
--- a/src/vpn/nm-vpn-connection.c
+++ b/src/vpn/nm-vpn-connection.c
@@ -1563,9 +1563,12 @@ nm_vpn_connection_ip4_config_get (NMVpnConnection *self, GVariant *dict)
route_table = get_route_table (self, AF_INET, TRUE);
route_metric = nm_vpn_connection_get_ip4_route_metric (self);
+ s_ip = nm_connection_get_setting_ip4_config (_get_applied_connection (self));
- if ( g_variant_lookup (dict, NM_VPN_PLUGIN_IP4_CONFIG_PRESERVE_ROUTES, "b", &b)
- && b) {
+ if (nm_setting_ip_config_get_ignore_auto_routes (s_ip)) {
+ /* ignore VPN routes */
+ } else if ( g_variant_lookup (dict, NM_VPN_PLUGIN_IP4_CONFIG_PRESERVE_ROUTES, "b", &b)
+ && b) {
if (priv->ip4_config) {
NMDedupMultiIter ipconf_iter;
const NMPlatformIP4Route *route;
@@ -1616,7 +1619,6 @@ nm_vpn_connection_ip4_config_get (NMVpnConnection *self, GVariant *dict)
never_default = b;
/* Merge in user overrides from the NMConnection's IPv4 setting */
- s_ip = nm_connection_get_setting_ip4_config (_get_applied_connection (self));
nm_ip4_config_merge_setting (config,
s_ip,
route_table,
@@ -1756,9 +1758,12 @@ nm_vpn_connection_ip6_config_get (NMVpnConnection *self, GVariant *dict)
route_table = get_route_table (self, AF_INET6, TRUE);
route_metric = nm_vpn_connection_get_ip6_route_metric (self);
+ s_ip = nm_connection_get_setting_ip6_config (_get_applied_connection (self));
- if ( g_variant_lookup (dict, NM_VPN_PLUGIN_IP6_CONFIG_PRESERVE_ROUTES, "b", &b)
- && b) {
+ if (nm_setting_ip_config_get_ignore_auto_routes (s_ip)) {
+ /* Ignore VPN routes */
+ } else if ( g_variant_lookup (dict, NM_VPN_PLUGIN_IP6_CONFIG_PRESERVE_ROUTES, "b", &b)
+ && b) {
if (priv->ip6_config) {
NMDedupMultiIter ipconf_iter;
const NMPlatformIP6Route *route;
@@ -1806,7 +1811,6 @@ next:
never_default = b;
/* Merge in user overrides from the NMConnection's IPv6 setting */
- s_ip = nm_connection_get_setting_ip6_config (_get_applied_connection (self));
nm_ip6_config_merge_setting (config,
s_ip,
route_table,