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

Reply via email to