]> git.puffer.fish Git - mirror/frr.git/commitdiff
zebra: handle TE policy changes in LSP async notifs 8531/head
authorMark Stapp <mjs@voltanet.io>
Thu, 25 Mar 2021 16:03:00 +0000 (12:03 -0400)
committerMark Stapp <mjs@voltanet.io>
Wed, 21 Apr 2021 18:30:15 +0000 (14:30 -0400)
Handle SR-TE policy changes in the LSP async notification
handler, as we do in the normal LSP dplane results handler.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
zebra/zebra_mpls.c

index 6d42957b24c59b025a67d802ee17c9573e3b9d56..a923782bfe907ddf3424c5b38efa287475774674 100644 (file)
@@ -2018,6 +2018,7 @@ void zebra_mpls_process_dplane_notify(struct zebra_dplane_ctx *ctx)
        int start_count = 0, end_count = 0; /* Installed counts */
        bool changed_p = false;
        bool is_debug = (IS_ZEBRA_DEBUG_DPLANE | IS_ZEBRA_DEBUG_MPLS);
+       enum zebra_sr_policy_update_label_mode update_mode;
 
        if (is_debug)
                zlog_debug("LSP dplane notif, in-label %u",
@@ -2091,10 +2092,21 @@ void zebra_mpls_process_dplane_notify(struct zebra_dplane_ctx *ctx)
        if (end_count > 0) {
                SET_FLAG(lsp->flags, LSP_FLAG_INSTALLED);
 
+               /* SR-TE update too */
+               if (start_count == 0)
+                       update_mode = ZEBRA_SR_POLICY_LABEL_CREATED;
+               else
+                       update_mode = ZEBRA_SR_POLICY_LABEL_UPDATED;
+               zebra_sr_policy_label_update(lsp->ile.in_label, update_mode);
+
                if (changed_p)
                        dplane_lsp_notif_update(lsp, DPLANE_OP_LSP_UPDATE, ctx);
 
        } else {
+               /* SR-TE update too */
+               zebra_sr_policy_label_update(lsp->ile.in_label,
+                                            ZEBRA_SR_POLICY_LABEL_REMOVED);
+
                UNSET_FLAG(lsp->flags, LSP_FLAG_INSTALLED);
                clear_nhlfe_installed(lsp);
        }