mirror of https://github.com/FRRouting/frr.git
isisd: remove assert from the TI-LFA repair list computation algorithm
In some cases it's possible that the TI-LFA algorithms will try to compute a SID repair list more than once for the same backup nexthop [1]. This of course shouldn't be allowed, as a backup nexthop can't have multiple label stacks. When that happens, we should just ignore the new repair list if one is already applied, instead of asserting and crashing the daemon. [1] One scenario this can happen is when there's ECMP involving different P-nodes in the PQ-space intersection. Reported-by: Fredi Raspall <fredi@voltanet.io> Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
f691f2ebbd
commit
5dd20c560e
|
@ -541,10 +541,16 @@ static int tilfa_repair_list_apply(struct isis_spftree *spftree,
|
|||
struct isis_spf_adj *sadj = vadj->sadj;
|
||||
struct mpls_label_stack *label_stack;
|
||||
|
||||
/*
|
||||
* Don't try to apply the repair list if one was already applied
|
||||
* before (can't have ECMP past the P-node).
|
||||
*/
|
||||
if (vadj->label_stack)
|
||||
continue;
|
||||
|
||||
if (!isis_vertex_adj_exists(spftree, vertex_pnode, sadj))
|
||||
continue;
|
||||
|
||||
assert(!vadj->label_stack);
|
||||
label_stack = tilfa_compute_label_stack(spftree->lspdb, sadj,
|
||||
repair_list);
|
||||
if (!label_stack) {
|
||||
|
|
Loading…
Reference in New Issue