mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 09:15:34 +00:00
isisd: Fix issues with purged fragments
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>
This commit is contained in:
parent
3759776ccd
commit
8f27aa2729
@ -406,9 +406,13 @@ static void lsp_seqno_update(struct isis_lsp *lsp0)
|
|||||||
for (ALL_LIST_ELEMENTS_RO(lsp0->lspu.frags, node, lsp)) {
|
for (ALL_LIST_ELEMENTS_RO(lsp0->lspu.frags, node, lsp)) {
|
||||||
if (lsp->tlvs)
|
if (lsp->tlvs)
|
||||||
lsp_inc_seqno(lsp, 0);
|
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);
|
lsp_purge(lsp, lsp0->level, NULL);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1306,6 +1310,13 @@ static int lsp_regenerate(struct isis_area *area, int level)
|
|||||||
lsp->last_generated = time(NULL);
|
lsp->last_generated = time(NULL);
|
||||||
lsp_flood(lsp, NULL);
|
lsp_flood(lsp, NULL);
|
||||||
for (ALL_LIST_ELEMENTS_RO(lsp->lspu.frags, node, frag)) {
|
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(
|
frag->hdr.lsp_bits = lsp_bits_generate(
|
||||||
level, area->overload_bit, area->attached_bit);
|
level, area->overload_bit, area->attached_bit);
|
||||||
/* Set the lifetime values of all the fragments to the same
|
/* Set the lifetime values of all the fragments to the same
|
||||||
|
Loading…
Reference in New Issue
Block a user