summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--isisd/isis_lfa.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/isisd/isis_lfa.c b/isisd/isis_lfa.c
index f22e4a7085..66572d0a0b 100644
--- a/isisd/isis_lfa.c
+++ b/isisd/isis_lfa.c
@@ -533,6 +533,14 @@ static int tilfa_build_repair_list(struct isis_spftree *spftree_pc,
listnode_add_head(repair_list, &sid_pnode);
/* Apply repair list. */
+ if (listcount(repair_list)
+ > spftree_pc->area->srdb.config.msd) {
+ zlog_warn(
+ "ISIS-TI-LFA: list of repair segments exceeds locally configured MSD (%u > %u)",
+ listcount(repair_list),
+ spftree_pc->area->srdb.config.msd);
+ return -1;
+ }
if (tilfa_repair_list_apply(spftree_pc, vertex_dest, vertex,
repair_list)
!= 0)
@@ -735,7 +743,11 @@ int isis_lfa_check(struct isis_spftree *spftree_pc, struct isis_vertex *vertex)
isis_spf_node_list_clear(&used_pnodes);
list_delete(&repair_list);
if (ret != 0)
- zlog_warn("ISIS-TI-LFA: failed to compute repair path(s)");
+ zlog_warn(
+ "ISIS-TI-LFA: failed to compute repair path(s) of %s %s w.r.t %s",
+ vtype2string(vertex->type), buf,
+ lfa_protected_resource2str(
+ &spftree_pc->lfa.protected_resource));
return ret;
}