diff options
Diffstat (limited to 'isisd')
| -rw-r--r-- | isisd/ChangeLog | 11 | ||||
| -rw-r--r-- | isisd/isis_adjacency.c | 2 | ||||
| -rw-r--r-- | isisd/isis_events.c | 1 | ||||
| -rw-r--r-- | isisd/isis_route.c | 3 | ||||
| -rw-r--r-- | isisd/isis_spf.c | 4 | ||||
| -rw-r--r-- | 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 <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)  	  {  | 
