summaryrefslogtreecommitdiff
path: root/isisd/isis_spf.c
diff options
context:
space:
mode:
authorLouis Scalbert <louis.scalbert@6wind.com>2022-05-27 10:37:08 +0200
committerLouis Scalbert <louis.scalbert@6wind.com>2022-06-30 16:20:49 +0200
commitcab7be7d5b1dfe6badb35160dd84bc9a10d33aa2 (patch)
tree0e48968e946b4265f23b868576df1a32affa9e86 /isisd/isis_spf.c
parent03c95c540f1884dcaf74a81bc309fc51547054dd (diff)
Revert "isisd: fix infinite loop when parsing LSPs"
This reverts commit 5e56a50559fd4a85f1912464e6e13d13969aa238.
Diffstat (limited to 'isisd/isis_spf.c')
-rw-r--r--isisd/isis_spf.c28
1 files changed, 8 insertions, 20 deletions
diff --git a/isisd/isis_spf.c b/isisd/isis_spf.c
index 09f92554c0..2d792a9c75 100644
--- a/isisd/isis_spf.c
+++ b/isisd/isis_spf.c
@@ -1400,13 +1400,14 @@ static void spf_adj_list_parse_tlv(struct isis_spftree *spftree,
spf_adj_list_parse_lsp(spftree, adj_list, lsp, id, metric);
}
-static void spf_adj_list_parse_lsp_frag(struct isis_spftree *spftree,
- struct list *adj_list,
- struct isis_lsp *lsp,
- const uint8_t *pseudo_nodeid,
- uint32_t pseudo_metric)
+static void spf_adj_list_parse_lsp(struct isis_spftree *spftree,
+ struct list *adj_list, struct isis_lsp *lsp,
+ const uint8_t *pseudo_nodeid,
+ uint32_t pseudo_metric)
{
bool pseudo_lsp = LSP_PSEUDO_ID(lsp->hdr.lsp_id);
+ struct isis_lsp *frag;
+ struct listnode *node;
struct isis_item *head;
struct isis_item_list *te_neighs;
@@ -1444,27 +1445,14 @@ static void spf_adj_list_parse_lsp_frag(struct isis_spftree *spftree,
}
}
}
-}
-
-
-static void spf_adj_list_parse_lsp(struct isis_spftree *spftree,
- struct list *adj_list, struct isis_lsp *lsp,
- const uint8_t *pseudo_nodeid,
- uint32_t pseudo_metric)
-{
- struct isis_lsp *frag;
- struct listnode *node;
-
- spf_adj_list_parse_lsp_frag(spftree, adj_list, lsp, pseudo_nodeid,
- pseudo_metric);
/* Parse LSP fragments. */
for (ALL_LIST_ELEMENTS_RO(lsp->lspu.frags, node, frag)) {
if (!frag->tlvs)
continue;
- spf_adj_list_parse_lsp_frag(spftree, adj_list, frag,
- pseudo_nodeid, pseudo_metric);
+ spf_adj_list_parse_lsp(spftree, adj_list, frag, pseudo_nodeid,
+ pseudo_metric);
}
}