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 <philippe.guibert@6wind.com>
This commit is contained in:
Philippe Guibert 2023-10-06 14:53:31 +02:00
parent 3cae026428
commit d3f686d163

View 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)) {