Signed-off-by: Donald Sharp <[email protected]>
---
zebra/zebra_rib.c | 69 ++++-------------------------------------------------
1 file changed, 4 insertions(+), 65 deletions(-)
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index 4bcfc15..40f4b20 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -2349,7 +2349,7 @@ static_nexthop_same (struct nexthop *nexthop, struct
static_route *si)
/* Uninstall static route from RIB. */
static void
-static_uninstall_ipv4 (safi_t safi, struct prefix *p, struct static_route *si)
+static_uninstall_route (afi_t afi, safi_t safi, struct prefix *p, struct
static_route *si)
{
struct route_node *rn;
struct rib *rib;
@@ -2357,7 +2357,7 @@ static_uninstall_ipv4 (safi_t safi, struct prefix *p,
struct static_route *si)
struct route_table *table;
/* Lookup table. */
- table = zebra_vrf_table (AFI_IP, safi, si->vrf_id);
+ table = zebra_vrf_table (afi, safi, si->vrf_id);
if (! table)
return;
@@ -2545,7 +2545,7 @@ static_delete_ipv4_safi (safi_t safi, struct prefix *p,
struct in_addr *gate,
}
/* Install into rib. */
- static_uninstall_ipv4 (safi, p, si);
+ static_uninstall_route (AFI_IP, safi, p, si);
/* Unlink static route from linked list. */
if (si->prev)
@@ -2801,67 +2801,6 @@ rib_delete_ipv6 (int type, int flags, struct prefix_ipv6
*p,
return 0;
}
-static void
-static_uninstall_ipv6 (struct prefix *p, struct static_route *si)
-{
- struct route_table *table;
- struct route_node *rn;
- struct rib *rib;
- struct nexthop *nexthop;
-
- /* Lookup table. */
- table = zebra_vrf_table (AFI_IP6, SAFI_UNICAST, si->vrf_id);
- if (! table)
- return;
-
- /* Lookup existing route with type and distance. */
- rn = route_node_lookup (table, (struct prefix *) p);
- if (! rn)
- return;
-
- RNODE_FOREACH_RIB (rn, rib)
- {
- if (CHECK_FLAG (rib->status, RIB_ENTRY_REMOVED))
- continue;
-
- if (rib->type == ZEBRA_ROUTE_STATIC && rib->distance == si->distance)
- break;
- }
-
- if (! rib)
- {
- route_unlock_node (rn);
- return;
- }
-
- /* Lookup nexthop. */
- for (nexthop = rib->nexthop; nexthop; nexthop = nexthop->next)
- if (static_nexthop_same (nexthop, si))
- break;
-
- /* Can't find nexthop. */
- if (! nexthop)
- {
- route_unlock_node (rn);
- return;
- }
-
- /* Check nexthop. */
- if (rib->nexthop_num == 1)
- {
- rib_delnode (rn, rib);
- }
- else
- {
- if (CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_FIB))
- rib_uninstall (rn, rib);
- nexthop_delete (rib, nexthop);
- nexthop_free (nexthop);
- rib_queue_add (&zebrad, rn);
- }
- /* Unlock node. */
- route_unlock_node (rn);
-}
/* Add static route into static route configuration. */
int
@@ -2986,7 +2925,7 @@ static_delete_ipv6 (struct prefix *p, u_char type, struct
in6_addr *gate,
}
/* Install into rib. */
- static_uninstall_ipv6 (p, si);
+ static_uninstall_route (AFI_IP6, SAFI_UNICAST, p, si);
/* Unlink static route from linked list. */
if (si->prev)
--
1.7.10.4
_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev