* isis_adjacency.c: Stop expire timer while deleting adjacency.
* isis_events.c: Stop pseudo LSP thread while resigning circuit from
level.
* isis_route.c: Fix compiling with EXTREME_DEBUG. Mark route as not
in sync with zebra if it's changed.
* isis_spf.c: Schedule route validating etc even if tent was empty.
It's probably because we just don't have any adjacencies.
* isisd.c: Write minimum spf interval into configuration.
diff --git a/isisd/ChangeLog b/isisd/ChangeLog
index a053ede..81b810a 100644
--- a/isisd/ChangeLog
+++ b/isisd/ChangeLog
@@ -1,3 +1,14 @@
+2005-10-01 Hasso Tepper <hasso at quagga.net>
+
+ * isis_adjacency.c: Stop expire timer while deleting adjacency.
+ * isis_events.c: Stop pseudo LSP thread while resigning circuit from
+ level.
+ * isis_route.c: Fix compiling with EXTREME_DEBUG. Mark route as not
+ in sync with zebra if it's changed.
+ * isis_spf.c: Schedule route validating etc even if tent was empty.
+ It's probably because we just don't have any adjacencies.
+ * isisd.c: Write minimum spf interval into configuration.
+
2005-09-30 Vincent Jardin <vincent.jardin@6wind.com>
* isis_route.c: fix EXTREME_DEBUG compilation
diff --git a/isisd/isis_adjacency.c b/isisd/isis_adjacency.c
index a898f24..a4078d7 100644
--- a/isisd/isis_adjacency.c
+++ b/isisd/isis_adjacency.c
@@ -131,6 +131,8 @@
if (adjdb)
listnode_delete (adjdb, adj);
+ THREAD_OFF (adj->t_expire);
+
if (adj->ipv4_addrs)
list_delete (adj->ipv4_addrs);
#ifdef HAVE_IPV6
diff --git a/isisd/isis_events.c b/isisd/isis_events.c
index 07736fd..8b37e8c 100644
--- a/isisd/isis_events.c
+++ b/isisd/isis_events.c
@@ -195,6 +195,7 @@
{
THREAD_TIMER_OFF (circuit->u.bc.t_send_lan_hello[idx]);
THREAD_TIMER_OFF (circuit->u.bc.t_run_dr[idx]);
+ THREAD_TIMER_OFF (circuit->u.bc.t_refresh_pseudo_lsp[idx]);
circuit->u.bc.run_dr_elect[idx] = 0;
}
diff --git a/isisd/isis_route.c b/isisd/isis_route.c
index d799ea0..7d0239c 100644
--- a/isisd/isis_route.c
+++ b/isisd/isis_route.c
@@ -129,6 +129,7 @@
nexthops_print (struct list *nhs)
{
struct listnode *node;
+ struct isis_nexthop *nh;
for (ALL_LIST_ELEMENTS_RO (nhs, node, nh))
nexthop_print (nh);
@@ -139,7 +140,6 @@
static struct isis_nexthop6 *
isis_nexthop6_new (struct in6_addr *ip6, unsigned int ifindex)
{
-
struct isis_nexthop6 *nexthop6;
nexthop6 = XCALLOC (MTYPE_ISIS_NEXTHOP6, sizeof (struct isis_nexthop6));
@@ -523,6 +523,7 @@
isis_route_info_merge (rinfo_new, rinfo_old, family);
isis_route_info_delete (rinfo_new);
route_info = rinfo_old;
+ UNSET_FLAG (route_info->flag, ISIS_ROUTE_FLAG_ZEBRA_SYNC);
}
else
{
diff --git a/isisd/isis_spf.c b/isisd/isis_spf.c
index d937549..988ad9b 100644
--- a/isisd/isis_spf.c
+++ b/isisd/isis_spf.c
@@ -1027,8 +1027,7 @@
if (listcount (spftree->tents) == 0)
{
zlog_warn ("ISIS-Spf: TENT is empty");
- spftree->lastrun = time (NULL);
- return retval;
+ goto out;
}
while (listcount (spftree->tents) > 0)
@@ -1068,6 +1067,7 @@
}
}
+out:
thread_add_event (master, isis_route_validate, area, 0);
spftree->lastrun = time (NULL);
spftree->pending = 0;
diff --git a/isisd/isisd.c b/isisd/isisd.c
index 84e1c88..c5c2153 100644
--- a/isisd/isisd.c
+++ b/isisd/isisd.c
@@ -1974,6 +1974,31 @@
write++;
}
}
+ /* Minimum SPF interval. */
+ if (area->min_spf_interval[0] == area->min_spf_interval[1])
+ {
+ if (area->min_spf_interval[0] != MINIMUM_SPF_INTERVAL)
+ {
+ vty_out (vty, " spf-interval %d%s",
+ area->min_spf_interval[0], VTY_NEWLINE);
+ write++;
+ }
+ }
+ else
+ {
+ if (area->min_spf_interval[0] != MINIMUM_SPF_INTERVAL)
+ {
+ vty_out (vty, " spf-interval level-1 %d%s",
+ area->min_spf_interval[0], VTY_NEWLINE);
+ write++;
+ }
+ if (area->min_spf_interval[1] != MINIMUM_SPF_INTERVAL)
+ {
+ vty_out (vty, " spf-interval level-2 %d%s",
+ area->min_spf_interval[1], VTY_NEWLINE);
+ write++;
+ }
+ }
/* Authentication passwords. */
if (area->area_passwd.len > 0)
{