From 3ed98d2a42cd744ff4e263e719dd707311a70024 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Fri, 23 Jan 2015 20:39:15 +0100 Subject: [PATCH] route-manager: normalize ipv6 route metrics during comparison IPv6 metric of zero is equal to 1024. (cherry picked from commit 7c52d094ed33a2c1a9549a6b4917a68845cab251) --- src/nm-route-manager.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/nm-route-manager.c b/src/nm-route-manager.c index 4c0e6a24a3..cdb65c8784 100644 --- a/src/nm-route-manager.c +++ b/src/nm-route-manager.c @@ -25,6 +25,8 @@ #include "nm-platform.h" #include "nm-logging.h" +#include "NetworkManagerUtils.h" + G_DEFINE_TYPE (NMRouteManager, nm_route_manager, G_TYPE_OBJECT) static NMRouteManager *_instance; @@ -56,11 +58,13 @@ array_contains_ip6_route (const GArray *routes, const NMPlatformIP6Route *route) for (i = 0; i < len; i++) { NMPlatformIP6Route *c = &g_array_index (routes, NMPlatformIP6Route, i); + int route_metric = nm_utils_ip6_route_metric_normalize (route->metric); + int c_metric = nm_utils_ip6_route_metric_normalize (c->metric); if (IN6_ARE_ADDR_EQUAL (&route->network, &c->network) && route->plen == c->plen && IN6_ARE_ADDR_EQUAL (&route->gateway, &c->gateway) && - route->metric == c->metric) + route_metric == c_metric) return TRUE; }