diff options
| author | Donatas Abraitis <donatas@opensourcerouting.org> | 2022-07-10 21:40:43 +0300 | 
|---|---|---|
| committer | Donatas Abraitis <donatas@opensourcerouting.org> | 2022-07-10 21:40:43 +0300 | 
| commit | fbf0fc22f0d0a3ecaf8d7a364e3bc1422a0243a6 (patch) | |
| tree | ac8fb918fef3cf48fefe26f6f174dc195f7e070d /isisd/isis_lfa.c | |
| parent | 8ab2f0d18d3c69101644961191ea5890a68d6447 (diff) | |
Revert "isisd: fix metric calculation of classic lfa backup prefixes"
This reverts commit e45958e9cfccd6dfc108a7ef5cb73775e8ef2e68.
Diffstat (limited to 'isisd/isis_lfa.c')
| -rw-r--r-- | isisd/isis_lfa.c | 18 | 
1 files changed, 7 insertions, 11 deletions
diff --git a/isisd/isis_lfa.c b/isisd/isis_lfa.c index b348c876d3..800cac8521 100644 --- a/isisd/isis_lfa.c +++ b/isisd/isis_lfa.c @@ -1836,7 +1836,7 @@ static bool clfa_loop_free_check(struct isis_spftree *spftree,  				 struct isis_vertex *vertex_S_D,  				 struct isis_spf_adj *sadj_primary,  				 struct isis_spf_adj *sadj_N, -				 uint32_t *path_metric) +				 uint32_t *lfa_metric)  {  	struct isis_spf_node *node_N;  	uint32_t dist_N_D; @@ -1882,7 +1882,7 @@ static bool clfa_loop_free_check(struct isis_spftree *spftree,  			   dist_N_S, dist_S_D);  	if (dist_N_D < (dist_N_S + dist_S_D)) { -		*path_metric = sadj_N->metric + dist_N_D; +		*lfa_metric = sadj_N->metric + dist_N_D;  		return true;  	} @@ -2082,7 +2082,7 @@ void isis_lfa_compute(struct isis_area *area, struct isis_circuit *circuit,  		      struct isis_spftree *spftree,  		      struct lfa_protected_resource *resource)  { -	struct isis_vertex *vertex, *parent_vertex; +	struct isis_vertex *vertex;  	struct listnode *vnode, *snode;  	int level = spftree->level; @@ -2099,7 +2099,7 @@ void isis_lfa_compute(struct isis_area *area, struct isis_circuit *circuit,  		struct isis_vertex_adj *vadj_primary;  		struct isis_spf_adj *sadj_primary;  		bool allow_ecmp; -		uint32_t prefix_metric, best_metric = UINT32_MAX; +		uint32_t best_metric = UINT32_MAX;  		char buf[VID2STR_BUFFER];  		if (!VTYPE_IP(vertex->type)) @@ -2133,9 +2133,6 @@ void isis_lfa_compute(struct isis_area *area, struct isis_circuit *circuit,  		vadj_primary = listnode_head(vertex->Adj_N);  		sadj_primary = vadj_primary->sadj; -		parent_vertex = listnode_head(vertex->parents); -		prefix_metric = vertex->d_N - parent_vertex->d_N; -  		/*  		 * Loop over list of SPF adjacencies and compute a list of  		 * preliminary LFAs. @@ -2143,7 +2140,7 @@ void isis_lfa_compute(struct isis_area *area, struct isis_circuit *circuit,  		lfa_list = list_new();  		lfa_list->del = isis_vertex_adj_free;  		for (ALL_LIST_ELEMENTS_RO(spftree->sadj_list, snode, sadj_N)) { -			uint32_t lfa_metric, path_metric; +			uint32_t lfa_metric;  			struct isis_vertex_adj *lfa;  			struct isis_prefix_sid *psid = NULL;  			bool last_hop = false; @@ -2193,7 +2190,7 @@ void isis_lfa_compute(struct isis_area *area, struct isis_circuit *circuit,  			/* Check loop-free criterion. */  			if (!clfa_loop_free_check(spftree, vertex, sadj_primary, -						  sadj_N, &path_metric)) { +						  sadj_N, &lfa_metric)) {  				if (IS_DEBUG_LFA)  					zlog_debug(  						"ISIS-LFA: LFA condition not met for %s", @@ -2201,7 +2198,6 @@ void isis_lfa_compute(struct isis_area *area, struct isis_circuit *circuit,  				continue;  			} -			lfa_metric = path_metric + prefix_metric;  			if (lfa_metric < best_metric)  				best_metric = lfa_metric; @@ -2212,7 +2208,7 @@ void isis_lfa_compute(struct isis_area *area, struct isis_circuit *circuit,  			if (vertex->N.ip.sr.present) {  				psid = &vertex->N.ip.sr.sid; -				if (path_metric == sadj_N->metric) +				if (lfa_metric == sadj_N->metric)  					last_hop = true;  			}  			lfa = isis_vertex_adj_add(spftree, vertex, lfa_list,  | 
