summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-09-12 15:27:59 +0200
committerThomas Haller <thaller@redhat.com>2017-09-13 08:17:31 +0200
commit6698bf58bb53fb07838c52ca67293dd5352ec31c (patch)
tree681d5f4b08f4bf00fa2eec7f62ed2ecd2b9325e2
parent9a3117f1d3095e58859efce57ea4fb41d8fb7696 (diff)
downloadNetworkManager-6698bf58bb53fb07838c52ca67293dd5352ec31c.tar.gz
core: track routes with source RTPROT_KERNEL (rtm_protocol) in NMIP4Config/NMIP6Config
Let's not treat those routes special. I think this was originally done, because we relied on kernel to add the IPv4 device route, so we would ignore RTPROT_KERNEL routes and not delete them. We want to track them for various reasons: - for consistency, there is nothing special except that they might be added by kernel. - we expose the routes of NMIP4Config/NMIP6Config on D-Bus. That should include also routes such as device routes. Note, this commit changes that we now expose device routes on D-Bus too.
-rw-r--r--src/nm-ip4-config.c4
-rw-r--r--src/nm-ip6-config.c4
-rw-r--r--src/platform/nm-platform.c14
-rw-r--r--src/platform/nm-platform.h4
4 files changed, 11 insertions, 15 deletions
diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c
index 58127dafab..f3d87814ee 100644
--- a/src/nm-ip4-config.c
+++ b/src/nm-ip4-config.c
@@ -697,8 +697,6 @@ nm_ip4_config_capture (NMDedupMultiIndex *multi_idx, NMPlatform *platform, int i
if (route->table_coerced)
continue;
- if (route->rt_source == NM_IP_CONFIG_SOURCE_RTPROT_KERNEL)
- continue;
_add_route (self, plobj, NULL, NULL);
}
@@ -838,7 +836,7 @@ nm_ip4_config_commit (const NMIP4Config *self,
AF_INET,
ifindex,
routes,
- nm_platform_lookup_predicate_routes_main_skip_rtprot_kernel,
+ nm_platform_lookup_predicate_routes_main,
NULL))
success = FALSE;
diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c
index 97d25d549c..ce77394256 100644
--- a/src/nm-ip6-config.c
+++ b/src/nm-ip6-config.c
@@ -501,8 +501,6 @@ nm_ip6_config_capture (NMDedupMultiIndex *multi_idx, NMPlatform *platform, int i
if (route->table_coerced)
continue;
- if (route->rt_source == NM_IP_CONFIG_SOURCE_RTPROT_KERNEL)
- continue;
_add_route (self, plobj, NULL, NULL);
}
@@ -553,7 +551,7 @@ nm_ip6_config_commit (const NMIP6Config *self,
AF_INET6,
ifindex,
routes,
- nm_platform_lookup_predicate_routes_main_skip_rtprot_kernel,
+ nm_platform_lookup_predicate_routes_main,
NULL))
success = FALSE;
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
index 4cae03a944..47ac8bfd52 100644
--- a/src/platform/nm-platform.c
+++ b/src/platform/nm-platform.c
@@ -2899,22 +2899,22 @@ nm_platform_lookup (NMPlatform *self,
}
gboolean
-nm_platform_lookup_predicate_routes_main_skip_rtprot_kernel (const NMPObject *obj,
- gpointer user_data)
+nm_platform_lookup_predicate_routes_main (const NMPObject *obj,
+ gpointer user_data)
{
nm_assert (NM_IN_SET (NMP_OBJECT_GET_TYPE (obj), NMP_OBJECT_TYPE_IP4_ROUTE,
NMP_OBJECT_TYPE_IP6_ROUTE));
- return !obj->ip_route.table_coerced
- && obj->ip_route.rt_source != NM_IP_CONFIG_SOURCE_RTPROT_KERNEL;
+ return !obj->ip_route.table_coerced;
}
gboolean
-nm_platform_lookup_predicate_routes_skip_rtprot_kernel (const NMPObject *obj,
- gpointer user_data)
+nm_platform_lookup_predicate_routes_main_skip_rtprot_kernel (const NMPObject *obj,
+ gpointer user_data)
{
nm_assert (NM_IN_SET (NMP_OBJECT_GET_TYPE (obj), NMP_OBJECT_TYPE_IP4_ROUTE,
NMP_OBJECT_TYPE_IP6_ROUTE));
- return obj->ip_route.rt_source != NM_IP_CONFIG_SOURCE_RTPROT_KERNEL;
+ return !obj->ip_route.table_coerced
+ && obj->ip_route.rt_source != NM_IP_CONFIG_SOURCE_RTPROT_KERNEL;
}
/**
diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h
index 8075a08b86..917f623d01 100644
--- a/src/platform/nm-platform.h
+++ b/src/platform/nm-platform.h
@@ -957,10 +957,10 @@ struct _NMPLookup;
const struct _NMDedupMultiHeadEntry *nm_platform_lookup (NMPlatform *platform,
const struct _NMPLookup *lookup);
+gboolean nm_platform_lookup_predicate_routes_main (const NMPObject *obj,
+ gpointer user_data);
gboolean nm_platform_lookup_predicate_routes_main_skip_rtprot_kernel (const NMPObject *obj,
gpointer user_data);
-gboolean nm_platform_lookup_predicate_routes_skip_rtprot_kernel (const NMPObject *obj,
- gpointer user_data);
GPtrArray *nm_platform_lookup_clone (NMPlatform *platform,
const struct _NMPLookup *lookup,