From d3f686d163cbbf9cf2d82701098818a6b150f1ef 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 57a58af6bc9e..8ae6e0cc3f7d 100644 --- a/zebra/label_manager.c +++ b/zebra/label_manager.c @@ -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)) {