summaryrefslogtreecommitdiffstats
path: root/isisd/isis_spf.c
diff options
context:
space:
mode:
authorzhou-run <zhou.run@h3c.com>2024-09-21 09:19:19 +0200
committerzhourun (RD) <zhou.run@h3c.com>2024-09-21 10:47:40 +0200
commita9af78af42403ba8b77baf6b576023a14ef80f19 (patch)
tree17a9b6d90bffdb82faebfe3e6799e096a93f7c6d /isisd/isis_spf.c
parentMerge pull request #16799 from LabNConsulting/aceelindem/ospf-delay-refloodin... (diff)
downloadfrr-a9af78af42403ba8b77baf6b576023a14ef80f19.tar.xz
frr-a9af78af42403ba8b77baf6b576023a14ef80f19.zip
isisd: Fix infinity flag not being set successfully
When creating SPF neighbors and calling spf_adj_list_parse_tlv(), the F_ISIS_SPF_ADJ_METRIC_INFINITY flag is only set to a local variable flags and not set to the SPF neighbor sadj->flags. Additionally, the pseudo node metric pseudo_metric is also not reflected in the F_ISIS_SPF_ADJ_METRIC_INFINITY flag, the metric should be checked using sadj->metric. Signed-off-by: zhou-run <zhou.run@h3c.com>
Diffstat (limited to '')
-rw-r--r--isisd/isis_spf.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/isisd/isis_spf.c b/isisd/isis_spf.c
index 0f37ed012..8fc0f144b 100644
--- a/isisd/isis_spf.c
+++ b/isisd/isis_spf.c
@@ -1469,14 +1469,13 @@ static void spf_adj_list_parse_tlv(struct isis_spftree *spftree,
sadj->metric = metric;
if (oldmetric)
SET_FLAG(flags, F_ISIS_SPF_ADJ_OLDMETRIC);
+ if ((oldmetric && sadj->metric == ISIS_NARROW_METRIC_INFINITY) ||
+ (!oldmetric && sadj->metric == ISIS_WIDE_METRIC_INFINITY))
+ SET_FLAG(flags, F_ISIS_SPF_ADJ_METRIC_INFINITY);
sadj->lsp = lsp;
sadj->subtlvs = subtlvs;
sadj->flags = flags;
- if ((oldmetric && metric == ISIS_NARROW_METRIC_INFINITY)
- || (!oldmetric && metric == ISIS_WIDE_METRIC_INFINITY))
- SET_FLAG(flags, F_ISIS_SPF_ADJ_METRIC_INFINITY);
-
/* Set real adjacency. */
if (!CHECK_FLAG(spftree->flags, F_SPFTREE_NO_ADJACENCIES)
&& !LSP_PSEUDO_ID(id)) {