Since we don't have a daemon who's job is to handle kernel
routes and we don't get an explicit route delete anymore if
nexthops become unreachable from the kernel, zebra must
re-process kernel routes itself to make sure they are still valid.
Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
NULL, ifa->ifa_prefixlen);
}
+
+ /*
+ * Linux kernel does not send route delete on interface down/addr del
+ * so we have to re-process routes it owns (i.e. kernel routes)
+ */
+ if (h->nlmsg_type != RTM_NEWADDR)
+ rib_update(RIB_UPDATE_KERNEL);
+
return 0;
}
"Intf %s(%u) has gone DOWN",
name, ifp->ifindex);
if_down(ifp);
+ rib_update(RIB_UPDATE_KERNEL);
} else if (if_is_operative(ifp)) {
/* Must notify client daemons of new
* interface status. */
"Intf %s(%u) has gone DOWN",
name, ifp->ifindex);
if_down(ifp);
+ rib_update(RIB_UPDATE_KERNEL);
}
}