summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--isisd/isis_lsp.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c
index 0b1dac18..0470c5b9 100644
--- a/isisd/isis_lsp.c
+++ b/isisd/isis_lsp.c
@@ -1789,7 +1789,18 @@ lsp_regenerate_schedule (struct isis_area *area, int level, int all_pseudo)
}
else
{
- lsp_regenerate (area, lvl);
+ /*
+ * lsps are not regenerated if lsp_regenerate function is called
+ * directly. However if the lsp_regenerate call is queued for
+ * later execution it works.
+ */
+ area->lsp_regenerate_pending[lvl - 1] = 1;
+ if (lvl == IS_LEVEL_1)
+ THREAD_TIMER_ON (master, area->t_lsp_refresh[lvl - 1],
+ lsp_l1_refresh, area, 0);
+ else if (lvl == IS_LEVEL_2)
+ THREAD_TIMER_ON (master, area->t_lsp_refresh[lvl - 1],
+ lsp_l2_refresh, area, 0);
}
}