From 13fb40ac99823c405137a42d7666785fd7ac641a Mon Sep 17 00:00:00 2001 From: hasso Date: Sat, 1 Oct 2005 06:03:04 +0000 Subject: * 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. --- isisd/ChangeLog | 11 +++++++++++ isisd/isis_adjacency.c | 2 ++ isisd/isis_events.c | 1 + isisd/isis_route.c | 3 ++- isisd/isis_spf.c | 4 ++-- isisd/isisd.c | 25 +++++++++++++++++++++++++ 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 + + * 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 * 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) { -- cgit v1.2.1