]> git.puffer.fish Git - matthieu/frr.git/commitdiff
Merge svn revisions 997 and 1000 from Zebra cvs repository.
authorhasso <hasso>
Mon, 13 Sep 2004 14:01:12 +0000 (14:01 +0000)
committerhasso <hasso>
Mon, 13 Sep 2004 14:01:12 +0000 (14:01 +0000)
ospf6d/ChangeLog
ospf6d/ospf6_abr.c
ospf6d/ospf6_intra.c
ospf6d/ospf6_route.c
ospf6d/ospf6_route.h
ospf6d/ospf6d.h

index cdfd207ad5dad43d795e2fbe936c82304cff41b0..4f64cbc25d740af0b071b6ed527fa8af3b38e0c1 100644 (file)
@@ -1,3 +1,14 @@
+2004-09-13  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
+
+       * ospf6_intra.c, ospf6_route.[ch]: try to fix assertion failure
+       in brouter's route_remove
+       * ospf6d.h: version 0.9.7o
+
+2004-09-12  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
+
+       * ospf6_route.c: route_count_assert bug fix
+       * ospf6d.h: version 0.9.7n
+
 2004-09-03  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
 
        * ospf6_area.c, ospf6_route.c, ospf6_top.c, ospf6d.c:
index 81992b261a2c7ae26ccc72ada7e72f8b60855226..503c13f23011d4978c277663452d861e4cbbc2eb 100644 (file)
@@ -362,7 +362,7 @@ ospf6_abr_originate_summary_to_area (struct ospf6_route *route,
       summary->path.origin.id =
         ospf6_new_ls_id (summary->path.origin.type,
                          summary->path.origin.adv_router, area->lsdb);
-      ospf6_route_add (summary, summary_table);
+      summary = ospf6_route_add (summary, summary_table);
     }
   else
     {
index d707ee72486e8b93ef1db1d9fe97f08dcd0307a3..4452e624b1123a21e1ea01387d09ece3890b7b3b 100644 (file)
@@ -1302,6 +1302,9 @@ ospf6_intra_brouter_calculation (struct ospf6_area *oa)
       if (lsentry->path.area_id != oa->area_id)
         continue;
 
+      if (CHECK_FLAG (lsentry->flag, OSPF6_ROUTE_WAS_REMOVED))
+        continue;
+
       if (CHECK_FLAG (lsentry->flag, OSPF6_ROUTE_REMOVE) &&
           CHECK_FLAG (lsentry->flag, OSPF6_ROUTE_ADD))
         {
index b054c7b4d02d9f6c4744d53fe4f6d4128fda7741..7a5a394139035fd2cc9e4536c48059d35be20d29 100644 (file)
@@ -288,6 +288,7 @@ ospf6_route_add (struct ospf6_route *route,
           ospf6_route_delete (route);
           SET_FLAG (old->flag, OSPF6_ROUTE_ADD);
           ospf6_route_count_assert (table);
+
           return old;
         }
 
@@ -315,10 +316,11 @@ ospf6_route_add (struct ospf6_route *route,
       ospf6_route_lock (route);
 
       SET_FLAG (route->flag, OSPF6_ROUTE_CHANGE);
+      ospf6_route_count_assert (table);
+
       if (table->hook_add)
         (*table->hook_add) (route);
 
-      ospf6_route_count_assert (table);
       return route;
     }
 
@@ -353,12 +355,12 @@ ospf6_route_add (struct ospf6_route *route,
 
       ospf6_route_lock (route);
       table->count++;
+      ospf6_route_count_assert (table);
 
       SET_FLAG (route->flag, OSPF6_ROUTE_ADD);
       if (table->hook_add)
         (*table->hook_add) (route);
 
-      ospf6_route_count_assert (table);
       return route;
     }
 
@@ -414,12 +416,12 @@ ospf6_route_add (struct ospf6_route *route,
     }
 
   table->count++;
+  ospf6_route_count_assert (table);
 
   SET_FLAG (route->flag, OSPF6_ROUTE_ADD);
   if (table->hook_add)
     (*table->hook_add) (route);
 
-  ospf6_route_count_assert (table);
   return route;
 }
 
@@ -470,13 +472,15 @@ ospf6_route_remove (struct ospf6_route *route,
         node->info = NULL; /* should unlock route_node here ? */
     }
 
+  table->count--;
+  ospf6_route_count_assert (table);
+
+  SET_FLAG (route->flag, OSPF6_ROUTE_WAS_REMOVED);
+
   if (table->hook_remove)
     (*table->hook_remove) (route);
 
   ospf6_route_unlock (route);
-  table->count--;
-
-  ospf6_route_count_assert (table);
 }
 
 struct ospf6_route *
index 5835794eaa11ee42e8a58cf56673eb4955953c16..d9456a1435d0f091797df85140a5e72ad738a670 100644 (file)
@@ -158,6 +158,7 @@ struct ospf6_route
 #define OSPF6_ROUTE_BEST             0x08
 #define OSPF6_ROUTE_ACTIVE_SUMMARY   0x10
 #define OSPF6_ROUTE_DO_NOT_ADVERTISE 0x20
+#define OSPF6_ROUTE_WAS_REMOVED      0x40
 
 struct ospf6_route_table
 {
index fefdfcc7494ef810153891987d50bcf0cda1f68a..6fcf200e2ab59b12c4dbe576f57c69ecaa81f8a9 100644 (file)
@@ -22,7 +22,7 @@
 #ifndef OSPF6D_H
 #define OSPF6D_H
 
-#define OSPF6_DAEMON_VERSION    "0.9.7m"
+#define OSPF6_DAEMON_VERSION    "0.9.7o"
 
 /* global variables */
 extern int errno;