* isis_spf.c: Changing cost from uint16_t to uint32_t. Unset
ISIS_ROUTE_FLAG_ACTIVE flag before running SPF.
* isisd.[ch]: Separate route tables for different levels. SPF is done
separately, but in case of L1L2 area they have to be merged.
* isis_zebra.c: Set/unset ISIS_ROUTE_FLAG_ZEBRA_SYNC flag correctly in
case of adding/removing IPv4 routes.
* zebra_route.c: Rework route validating process. Merging L1 and L2
tables in case of L1L2 area.
In short - many changes to make SPF work more correctly, add/remove
to/from RIB also works now. It's still very far from perfect though.
diff --git a/isisd/isisd.h b/isisd/isisd.h
index e61376e..4e71640 100644
--- a/isisd/isisd.h
+++ b/isisd/isisd.h
@@ -79,13 +79,13 @@
struct isis_area
{
- struct isis *isis; /* back pointer */
- dict_t *lspdb[ISIS_LEVELS]; /* link-state dbs */
- struct isis_spftree *spftree[ISIS_LEVELS]; /* The v4 SPTs */
- struct route_table *route_table; /* IPv4 routes */
+ struct isis *isis; /* back pointer */
+ dict_t *lspdb[ISIS_LEVELS]; /* link-state dbs */
+ struct isis_spftree *spftree[ISIS_LEVELS]; /* The v4 SPTs */
+ struct route_table *route_table[ISIS_LEVELS]; /* IPv4 routes */
#ifdef HAVE_IPV6
- struct isis_spftree *spftree6[ISIS_LEVELS]; /* The v4 SPTs */
- struct route_table *route_table6; /* IPv6 routes */
+ struct isis_spftree *spftree6[ISIS_LEVELS]; /* The v6 SPTs */
+ struct route_table *route_table6[ISIS_LEVELS]; /* IPv6 routes */
#endif
unsigned int min_bcast_mtu;
struct list *circuit_list; /* IS-IS circuits */