summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Evensen <kristian.evensen@gmail.com>2015-09-18 13:13:10 +0200
committerSteven Barth <steven@midlink.org>2015-09-21 23:21:34 +0200
commit014698606902e495c7b169bf30688a685cd72d64 (patch)
treedf3e42a891e5c81d51e407448e43ab9fc1f98866
parent03834f80dc526cc3ed6c1a78730bb393f202277c (diff)
downloadnetifd-014698606902e495c7b169bf30688a685cd72d64.tar.gz
netifd: Prevent flapping IPv6 routes
Comparing valid_until will always return false as the value is updated for each route update message. This causes IPv6 routes to jump more around than House of Pain, which might have undesirable consequences for user-space and user-space applications. Removing the valid_until comparison when setting keep fixes this problem, and seems to have no side-effects. I am no IPv6 expert, but I see that valid of the route is updated correctly and route is deleted if I block the route update messages. Signed-off-by: Kristian Evensen <kristian.evensen@gmail.com>
-rw-r--r--interface-ip.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/interface-ip.c b/interface-ip.c
index 8eb2ff3..4a2ee35 100644
--- a/interface-ip.c
+++ b/interface-ip.c
@@ -591,7 +591,7 @@ interface_update_proto_route(struct vlist_tree *tree,
if (node_old && node_new)
keep = !memcmp(&route_old->nexthop, &route_new->nexthop, sizeof(route_old->nexthop)) &&
(route_old->mtu == route_new->mtu) && (route_old->type == route_new->type) &&
- (route_old->valid_until == route_new->valid_until) && !route_old->failed;
+ !route_old->failed;
if (node_old) {
if (!(route_old->flags & DEVADDR_EXTERNAL) && route_old->enabled && !keep)