]> git.proxmox.com Git - mirror_frr.git/commitdiff
2005-09-21 Paul Jakma <paul.jakma@sun.com>
authorpaul <paul>
Wed, 21 Sep 2005 12:30:08 +0000 (12:30 +0000)
committerpaul <paul>
Wed, 21 Sep 2005 12:30:08 +0000 (12:30 +0000)
* 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/ChangeLog
zebra/zebra_rib.c

index 6225ce1a87357670db4e2c55415310384e2f6208..9939d3e3a25187dfbd7373e4ee818374cf0487b9 100644 (file)
@@ -1,3 +1,12 @@
+2005-09-21 Paul Jakma <paul.jakma@sun.com>
+
+       * 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).
+          
 2005-09-12 Paul Jakma <paul.jakma@sun.com>
 
        * (general) RTM_CHANGE and implicit withdraw on RTM_NEWADDR
index 6d947c85ab46e58f875547283dc5743253f7931a..6cb686b781184ed0f24d06a9508649df4b655a62 100644 (file)
@@ -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);