diff options
-rw-r--r-- | src/platform/nm-platform.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c index 75e6448d2b..5d478e87d4 100644 --- a/src/platform/nm-platform.c +++ b/src/platform/nm-platform.c @@ -2014,6 +2014,9 @@ array_contains_ip6_route (const GArray *routes, const NMPlatformIP6Route *route) * with the least possible disturbance. It simply removes routes that are * not listed and adds routes that are. * + * @known_routes should not contain a default route; if it does, it will be + * ignored. + * * Returns: %TRUE on success. */ gboolean @@ -2044,6 +2047,9 @@ nm_platform_ip4_route_sync (int ifindex, const GArray *known_routes) for (i = 0; i < known_routes->len && success; i++) { known_route = &g_array_index (known_routes, NMPlatformIP4Route, i); + if (NM_PLATFORM_IP_ROUTE_IS_DEFAULT (known_route)) + continue; + if ((known_route->gateway == 0) ^ (i_type != 0)) { /* Make two runs over the list of routes. On the first, only add * device routes, on the second the others (gateway routes). */ @@ -2081,6 +2087,9 @@ nm_platform_ip4_route_sync (int ifindex, const GArray *known_routes) * with the least possible disturbance. It simply removes routes that are * not listed and adds routes that are. * + * @known_routes should not contain a default route; if it does, it will be + * ignored. + * * Returns: %TRUE on success. */ gboolean @@ -2112,6 +2121,9 @@ nm_platform_ip6_route_sync (int ifindex, const GArray *known_routes) for (i = 0; i < known_routes->len && success; i++) { known_route = &g_array_index (known_routes, NMPlatformIP6Route, i); + if (NM_PLATFORM_IP_ROUTE_IS_DEFAULT (known_route)) + continue; + if (IN6_IS_ADDR_UNSPECIFIED (&known_route->gateway) ^ (i_type != 0)) { /* Make two runs over the list of routes. On the first, only add * device routes, on the second the others (gateway routes). */ |