summaryrefslogtreecommitdiff
path: root/isisd
diff options
context:
space:
mode:
Diffstat (limited to 'isisd')
-rw-r--r--isisd/ChangeLog11
-rw-r--r--isisd/isis_adjacency.c2
-rw-r--r--isisd/isis_events.c1
-rw-r--r--isisd/isis_route.c3
-rw-r--r--isisd/isis_spf.c4
-rw-r--r--isisd/isisd.c25
6 files changed, 43 insertions, 3 deletions
diff --git a/isisd/ChangeLog b/isisd/ChangeLog
index a053ede2..81b810a8 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 a898f24b..a4078d72 100644
--- a/isisd/isis_adjacency.c
+++ b/isisd/isis_adjacency.c
@@ -131,6 +131,8 @@ isis_delete_adj (struct isis_adjacency *adj, struct list *adjdb)
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 07736fd7..8b37e8c5 100644
--- a/isisd/isis_events.c
+++ b/isisd/isis_events.c
@@ -195,6 +195,7 @@ circuit_resign_level (struct isis_circuit *circuit, int level)
{
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 d799ea0e..7d0239ca 100644
--- a/isisd/isis_route.c
+++ b/isisd/isis_route.c
@@ -129,6 +129,7 @@ static void
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 @@ nexthops_print (struct list *nhs)
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_create (struct prefix *prefix, u_int32_t cost, u_int32_t depth,
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 d9375496..988ad9b2 100644
--- a/isisd/isis_spf.c
+++ b/isisd/isis_spf.c
@@ -1027,8 +1027,7 @@ isis_run_spf (struct isis_area *area, int level, int family)
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 @@ isis_run_spf (struct isis_area *area, int level, int family)
}
}
+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 84e1c889..c5c2153f 100644
--- a/isisd/isisd.c
+++ b/isisd/isisd.c
@@ -1974,6 +1974,31 @@ isis_config_write (struct vty *vty)
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)
{