From 319572cc52267bfd55cca5eaab405df4db27ddaf Mon Sep 17 00:00:00 2001 From: paul Date: Wed, 21 Sep 2005 12:30:08 +0000 Subject: 2005-09-21 Paul Jakma * zebra_rib.c: (static_uninstall_ipv{4,6}) Fix regression wrt removal of static routes with multiple-hops introduced with the workqueue conversion. We should free the relevant nexthop and then get rib_process to run, otherwise we just get same static route back again (with no way to unconfigure it, because its already deleted from configuration). --- zebra/zebra_rib.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'zebra/zebra_rib.c') diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index 6d947c85..6cb686b7 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -1557,7 +1557,9 @@ static_uninstall_ipv4 (struct prefix *p, struct static_ipv4 *si) { if (CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_FIB)) rib_uninstall (rn, rib); - rib_queue_add (&zebrad, rn, rib); + nexthop_delete (rib, nexthop); + nexthop_free (nexthop); + rib_queue_add (&zebrad, rn, NULL); } /* Unlock node. */ route_unlock_node (rn); @@ -2106,7 +2108,9 @@ static_uninstall_ipv6 (struct prefix *p, struct static_ipv6 *si) { if (CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_FIB)) rib_uninstall (rn, rib); - rib_queue_add (&zebrad, rn, rib); + nexthop_delete (rib, nexthop); + nexthop_free (nexthop); + rib_queue_add (&zebrad, rn, NULL); } /* Unlock node. */ route_unlock_node (rn); -- cgit v1.2.1