]> git.puffer.fish Git - mirror/frr.git/commitdiff
isisd: Fix infinity flag not being set successfully 16887/head
authorzhou-run <zhou.run@h3c.com>
Sat, 21 Sep 2024 07:19:19 +0000 (15:19 +0800)
committerzhourun (RD) <zhou.run@h3c.com>
Sat, 21 Sep 2024 08:47:40 +0000 (16:47 +0800)
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>
isisd/isis_spf.c

index 0f37ed012a6e8e117994b478660a7eb2f777cce5..8fc0f144b203ed7b1eecddd39e79343776758d9c 100644 (file)
@@ -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)) {