diff options
| author | Mark Stapp <mjs@voltanet.io> | 2021-04-05 15:10:44 -0400 |
|---|---|---|
| committer | Mark Stapp <mjs@voltanet.io> | 2021-04-05 15:53:48 -0400 |
| commit | 2aa2a407e437dce025a21cf0f4e69b36a10c9146 (patch) | |
| tree | e4cca32cf0a20205a46bfb05f26a5cd9f1242c76 /zebra/zebra_mpls.c | |
| parent | 04dda092186aec1cd3c89e787918b109c075e162 (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>
Diffstat (limited to 'zebra/zebra_mpls.c')
| -rw-r--r-- | zebra/zebra_mpls.c | 16 |
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); } |
