Skip to content

Commit

Permalink
isisd: Fix issues with purged fragments
Browse files Browse the repository at this point in the history
Purged fragments would always be reoriginated by isisd. They
should only be purged once and never be reoriginated.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
  • Loading branch information
cfra committed Nov 10, 2018
1 parent 3759776 commit 8f27aa2
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion isisd/isis_lsp.c
Original file line number Diff line number Diff line change
Expand Up @@ -406,8 +406,12 @@ static void lsp_seqno_update(struct isis_lsp *lsp0)
for (ALL_LIST_ELEMENTS_RO(lsp0->lspu.frags, node, lsp)) {
if (lsp->tlvs)
lsp_inc_seqno(lsp, 0);
else
else if (lsp->hdr.rem_lifetime) {
/* Purge should only be applied when the fragment has
* non-zero remaining lifetime.
*/
lsp_purge(lsp, lsp0->level, NULL);
}
}

return;
Expand Down Expand Up @@ -1306,6 +1310,13 @@ static int lsp_regenerate(struct isis_area *area, int level)
lsp->last_generated = time(NULL);
lsp_flood(lsp, NULL);
for (ALL_LIST_ELEMENTS_RO(lsp->lspu.frags, node, frag)) {
if (!frag->tlvs) {
/* Updating and flooding should only affect fragments
* carrying data
*/
continue;
}

frag->hdr.lsp_bits = lsp_bits_generate(
level, area->overload_bit, area->attached_bit);
/* Set the lifetime values of all the fragments to the same
Expand Down

0 comments on commit 8f27aa2

Please sign in to comment.