]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: do not accept static label requests conflicting with dynamic-block
authorPhilippe Guibert <philippe.guibert@6wind.com>
Fri, 6 Oct 2023 12:53:31 +0000 (14:53 +0200)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Wed, 18 Oct 2023 15:46:28 +0000 (17:46 +0200)
A static label allocation should not be accepted if the desired range
conflicts with the configured dynamic-block configuration.

Do not accept such label requests, only when dynamic blocks are
configured.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
zebra/label_manager.c

index 57a58af6bc9eaec4981c34d193fb43c3d7994feb..8ae6e0cc3f7d929ab9a30aefcd5197ca4a41ea0d 100644 (file)
@@ -345,6 +345,15 @@ assign_specific_label_chunk(uint8_t proto, unsigned short instance,
                return NULL;
        }
 
+       if ((lbl_mgr.dynamic_block_start != MPLS_LABEL_UNRESERVED_MIN ||
+            lbl_mgr.dynamic_block_end != MPLS_LABEL_MAX) &&
+           base >= lbl_mgr.dynamic_block_start &&
+           end <= lbl_mgr.dynamic_block_end) {
+               zlog_warn("Invalid LM request arguments: base: %u, size: %u for %s in conflict with the dynamic label block",
+                         base, size, zebra_route_string(proto));
+               return NULL;
+       }
+
        /* Scan the existing chunks to see if the requested range of labels
         * falls inside any of such chunks */
        for (ALL_LIST_ELEMENTS_RO(lbl_mgr.lc_list, node, lmc)) {