Merge svn revisions 997 and 1000 from Zebra cvs repository.

This commit is contained in:
hasso 2004-09-13 14:01:12 +00:00
parent b5f310cb9f
commit 9428f2dc4e
6 changed files with 27 additions and 8 deletions

View 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> 2004-09-03 Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
* ospf6_area.c, ospf6_route.c, ospf6_top.c, ospf6d.c: * ospf6_area.c, ospf6_route.c, ospf6_top.c, ospf6d.c:

View File

@ -362,7 +362,7 @@ ospf6_abr_originate_summary_to_area (struct ospf6_route *route,
summary->path.origin.id = summary->path.origin.id =
ospf6_new_ls_id (summary->path.origin.type, ospf6_new_ls_id (summary->path.origin.type,
summary->path.origin.adv_router, area->lsdb); summary->path.origin.adv_router, area->lsdb);
ospf6_route_add (summary, summary_table); summary = ospf6_route_add (summary, summary_table);
} }
else else
{ {

View File

@ -1302,6 +1302,9 @@ ospf6_intra_brouter_calculation (struct ospf6_area *oa)
if (lsentry->path.area_id != oa->area_id) if (lsentry->path.area_id != oa->area_id)
continue; continue;
if (CHECK_FLAG (lsentry->flag, OSPF6_ROUTE_WAS_REMOVED))
continue;
if (CHECK_FLAG (lsentry->flag, OSPF6_ROUTE_REMOVE) && if (CHECK_FLAG (lsentry->flag, OSPF6_ROUTE_REMOVE) &&
CHECK_FLAG (lsentry->flag, OSPF6_ROUTE_ADD)) CHECK_FLAG (lsentry->flag, OSPF6_ROUTE_ADD))
{ {

View File

@ -288,6 +288,7 @@ ospf6_route_add (struct ospf6_route *route,
ospf6_route_delete (route); ospf6_route_delete (route);
SET_FLAG (old->flag, OSPF6_ROUTE_ADD); SET_FLAG (old->flag, OSPF6_ROUTE_ADD);
ospf6_route_count_assert (table); ospf6_route_count_assert (table);
return old; return old;
} }
@ -315,10 +316,11 @@ ospf6_route_add (struct ospf6_route *route,
ospf6_route_lock (route); ospf6_route_lock (route);
SET_FLAG (route->flag, OSPF6_ROUTE_CHANGE); SET_FLAG (route->flag, OSPF6_ROUTE_CHANGE);
ospf6_route_count_assert (table);
if (table->hook_add) if (table->hook_add)
(*table->hook_add) (route); (*table->hook_add) (route);
ospf6_route_count_assert (table);
return route; return route;
} }
@ -353,12 +355,12 @@ ospf6_route_add (struct ospf6_route *route,
ospf6_route_lock (route); ospf6_route_lock (route);
table->count++; table->count++;
ospf6_route_count_assert (table);
SET_FLAG (route->flag, OSPF6_ROUTE_ADD); SET_FLAG (route->flag, OSPF6_ROUTE_ADD);
if (table->hook_add) if (table->hook_add)
(*table->hook_add) (route); (*table->hook_add) (route);
ospf6_route_count_assert (table);
return route; return route;
} }
@ -414,12 +416,12 @@ ospf6_route_add (struct ospf6_route *route,
} }
table->count++; table->count++;
ospf6_route_count_assert (table);
SET_FLAG (route->flag, OSPF6_ROUTE_ADD); SET_FLAG (route->flag, OSPF6_ROUTE_ADD);
if (table->hook_add) if (table->hook_add)
(*table->hook_add) (route); (*table->hook_add) (route);
ospf6_route_count_assert (table);
return route; return route;
} }
@ -470,13 +472,15 @@ ospf6_route_remove (struct ospf6_route *route,
node->info = NULL; /* should unlock route_node here ? */ 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) if (table->hook_remove)
(*table->hook_remove) (route); (*table->hook_remove) (route);
ospf6_route_unlock (route); ospf6_route_unlock (route);
table->count--;
ospf6_route_count_assert (table);
} }
struct ospf6_route * struct ospf6_route *

View File

@ -158,6 +158,7 @@ struct ospf6_route
#define OSPF6_ROUTE_BEST 0x08 #define OSPF6_ROUTE_BEST 0x08
#define OSPF6_ROUTE_ACTIVE_SUMMARY 0x10 #define OSPF6_ROUTE_ACTIVE_SUMMARY 0x10
#define OSPF6_ROUTE_DO_NOT_ADVERTISE 0x20 #define OSPF6_ROUTE_DO_NOT_ADVERTISE 0x20
#define OSPF6_ROUTE_WAS_REMOVED 0x40
struct ospf6_route_table struct ospf6_route_table
{ {

View File

@ -22,7 +22,7 @@
#ifndef OSPF6D_H #ifndef OSPF6D_H
#define OSPF6D_H #define OSPF6D_H
#define OSPF6_DAEMON_VERSION "0.9.7m" #define OSPF6_DAEMON_VERSION "0.9.7o"
/* global variables */ /* global variables */
extern int errno; extern int errno;