summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Jencks <ben@bjencks.net>2012-08-30 13:55:36 -0500
committerDan Williams <dcbw@redhat.com>2012-08-30 16:04:13 -0500
commit3ca3120e4a01ea4a86fd052311c977e7ec136365 (patch)
tree8605a2a348bbe297259143e4ad12d28a1e01b407
parentc4bb7f26a803f77a6b77c9e49851c0a8f1eddf7c (diff)
ip6: ignore cached/cloned route notifications from the kernel (lp:1038541) (bgo #671767)
The kernel periodically adds routes for specific operations, including when pinging any host. These are temporary routes and aren't part of the interface's permanent routing configuration, so we should ignore them.
-rw-r--r--src/ip6-manager/nm-ip6-manager.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/ip6-manager/nm-ip6-manager.c b/src/ip6-manager/nm-ip6-manager.c
index e452c18e..3dc8616c 100644
--- a/src/ip6-manager/nm-ip6-manager.c
+++ b/src/ip6-manager/nm-ip6-manager.c
@@ -921,6 +921,14 @@ process_route_change (NMIP6Manager *manager, struct nl_msg *msg)
return NULL;
}
+ /* Cached/cloned routes are created by the kernel for specific operations
+ * and aren't part of the interface's permanent routing configuration.
+ */
+ if (rtnl_route_get_flags (rtnlroute) & RTM_F_CLONED) {
+ rtnl_route_put (rtnlroute);
+ return NULL;
+ }
+
device = nm_ip6_manager_get_device (manager, rtnl_route_get_oif (rtnlroute));
old_size = nl_cache_nitems (priv->route_cache);