diff options
author | zhou-run <zhou.run@h3c.com> | 2024-09-21 09:19:19 +0200 |
---|---|---|
committer | zhourun (RD) <zhou.run@h3c.com> | 2024-09-21 10:47:40 +0200 |
commit | a9af78af42403ba8b77baf6b576023a14ef80f19 (patch) | |
tree | 17a9b6d90bffdb82faebfe3e6799e096a93f7c6d /isisd/isis_spf.c | |
parent | Merge pull request #16799 from LabNConsulting/aceelindem/ospf-delay-refloodin... (diff) | |
download | frr-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.c | 7 |
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)) { |