diff options
author | Thomas Haller <thaller@redhat.com> | 2017-09-12 15:27:59 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-09-13 08:17:31 +0200 |
commit | 6698bf58bb53fb07838c52ca67293dd5352ec31c (patch) | |
tree | 681d5f4b08f4bf00fa2eec7f62ed2ecd2b9325e2 | |
parent | 9a3117f1d3095e58859efce57ea4fb41d8fb7696 (diff) | |
download | NetworkManager-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.c | 4 | ||||
-rw-r--r-- | src/nm-ip6-config.c | 4 | ||||
-rw-r--r-- | src/platform/nm-platform.c | 14 | ||||
-rw-r--r-- | src/platform/nm-platform.h | 4 |
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, |