summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zebra/zebra_rib.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index d74f84a1f6..c4c80b156b 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -2475,10 +2475,11 @@ int rib_add(afi_t afi, safi_t safi, vrf_id_t vrf_id, int type, u_short instance,
return 0;
/*
* Nexthop is different. Remove the old route unless it's
- * a link-local route.
+ * a connected route. This exception is necessary because
+ * of IPv6 link-local routes and unnumbered interfaces on
+ * Linux.
*/
- else if (afi != AFI_IP6
- || !IN6_IS_ADDR_LINKLOCAL(&p->u.prefix6))
+ else if (type != ZEBRA_ROUTE_CONNECT)
same = re;
}