From: vivek Date: Thu, 19 Nov 2015 20:48:02 +0000 (-0800) Subject: Zebra: Fix replace route for uninstall scenario X-Git-Tag: frr-2.0-rc1~1193 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=0b560feb23d1ca0d59cd427f0d1fefb4db7b3c2a;p=mirror%2Ffrr.git Zebra: Fix replace route for uninstall scenario When a Quagga route that is currently installed is superceded by a kernel route (connected or static route to same destination), the Quagga route is not uninstalled from the kernel. Fix by ensuring this case is handled correctly. Signed-off-by: Vivek Venkatraman Reviewed-by: Donald Sharp Ticket: CM-7152 Reviewed By: CCR-3476 Testing Done: Manual tests and verify failed test. Fixes: Replace route implementation (IPv4 and IPv6) --- diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index 9eb28483c6..300c2143cb 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -1670,6 +1670,12 @@ rib_process (struct route_node *rn) } rib_install_kernel (rn, select, fib? 1 : 0); } + else + { + /* Uninstall prior route here, if needed. */ + if (fib && !RIB_SYSTEM_ROUTE (fib)) + rib_uninstall_kernel (rn, fib); + } SET_FLAG (select->flags, ZEBRA_FLAG_SELECTED); /* Unconditionally announce, this part is exercised by new routes */