summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Stapp <mjs@voltanet.io>2021-04-05 15:10:44 -0400
committerMark Stapp <mjs@voltanet.io>2021-04-05 15:53:48 -0400
commit2aa2a407e437dce025a21cf0f4e69b36a10c9146 (patch)
treee4cca32cf0a20205a46bfb05f26a5cd9f1242c76
parent04dda092186aec1cd3c89e787918b109c075e162 (diff)
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>
-rw-r--r--zebra/zebra_mpls.c16
1 files changed, 16 insertions, 0 deletions
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);
}