From 2aa2a407e437dce025a21cf0f4e69b36a10c9146 Mon Sep 17 00:00:00 2001 From: Mark Stapp Date: Mon, 5 Apr 2021 15:10:44 -0400 Subject: [PATCH] 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 --- zebra/zebra_mpls.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/zebra/zebra_mpls.c b/zebra/zebra_mpls.c index c0c064cbc7..6d42957b24 100644 --- a/zebra/zebra_mpls.c +++ b/zebra/zebra_mpls.c @@ -872,6 +872,22 @@ static void lsp_schedule(struct hash_bucket *bucket, void *ctxt) zebra_lsp_t *lsp; 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); }