zebra: be more selective about processing LSPs

When certain events occur (connected route changes e.g.)
zebra examines LSPs to see if they might have been affected. For
LSPs with backup nhlfes, skip this immediate processing and
wait for the owning protocol daemon to react.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
This commit is contained in:
Mark Stapp 2021-04-05 15:10:44 -04:00
parent 04dda09218
commit 2aa2a407e4

View File

@ -872,6 +872,22 @@ static void lsp_schedule(struct hash_bucket *bucket, void *ctxt)
zebra_lsp_t *lsp; zebra_lsp_t *lsp;
lsp = (zebra_lsp_t *)bucket->data; lsp = (zebra_lsp_t *)bucket->data;
/* In the common flow, this is used when external events occur. For
* LSPs with backup nhlfes, we'll assume that the forwarding
* plane will use the backups to handle these events, until the
* owning protocol can react.
*/
if (ctxt == NULL) {
/* Skip LSPs with backups */
if (nhlfe_list_first(&lsp->backup_nhlfe_list) != NULL) {
if (IS_ZEBRA_DEBUG_MPLS_DETAIL)
zlog_debug("%s: skip LSP in-label %u",
__func__, lsp->ile.in_label);
return;
}
}
(void)lsp_processq_add(lsp); (void)lsp_processq_add(lsp);
} }