From 9a98bc74462c11e7906195d359644ca853377170 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 29 Apr 2014 11:06:53 -0400 Subject: [PATCH] core: fix connection matching with IPv6 routes (rh #1086237) An IPv6 router may have sent us arbitrary routes, so don't consider them when comparing two method=auto connections. (A better fix would be to look at the route lifetime, to see if it's dynamic or static, but we don't currently have that information.) https://bugzilla.gnome.org/show_bug.cgi?id=729203 --- src/nm-ip6-config.c | 4 ++++ 1 file changed, 4 insertions(+) diff -up NetworkManager-0.9.9.1/src/nm-ip6-config.c.ipv6 NetworkManager-0.9.9.1/src/nm-ip6-config.c --- NetworkManager-0.9.9.1/src/nm-ip6-config.c.ipv6 2014-05-12 08:02:40.862188963 -0400 +++ NetworkManager-0.9.9.1/src/nm-ip6-config.c 2014-05-12 08:04:36.251198172 -0400 @@ -430,7 +430,7 @@ nm_ip6_config_update_setting (const NMIP /* Routes */ for (i = 0; i < nroutes; i++) { const NMPlatformIP6Route *route = nm_ip6_config_get_route (config, i); - NMIP6Route *s_route = nm_ip6_route_new (); + NMIP6Route *s_route; /* Ignore link-local route. */ if (IN6_IS_ADDR_LINKLOCAL (&route->network)) @@ -440,6 +440,11 @@ nm_ip6_config_update_setting (const NMIP if (!route->plen) continue; + /* Assume all routes on 'auto' connections came from the router. */ + if (!g_strcmp0 (method, NM_SETTING_IP6_CONFIG_METHOD_AUTO)) + continue; + + s_route = nm_ip6_route_new (); nm_ip6_route_set_dest (s_route, &route->network); nm_ip6_route_set_prefix (s_route, route->plen); if (!IN6_IS_ADDR_UNSPECIFIED (&route->network)) @@ -447,6 +452,7 @@ nm_ip6_config_update_setting (const NMIP nm_ip6_route_set_metric (s_route, route->metric); nm_setting_ip6_config_add_route (setting, s_route); + nm_ip6_route_unref (s_route); } /* DNS */