From 5b482df7492ffaf1e13975e01ca9d474b07d9c6c Mon Sep 17 00:00:00 2001 From: Philippe Guibert Date: Fri, 6 Oct 2023 14:53:31 +0200 Subject: [PATCH] zebra: do not accept static label requests conflicting with dynamic-block 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 --- zebra/label_manager.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/zebra/label_manager.c b/zebra/label_manager.c index e15d25f4ccc6..7756a84e6aa1 100644 --- a/zebra/label_manager.c +++ b/zebra/label_manager.c @@ -347,6 +347,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)) {