0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-09-18 19:35:20 +00:00

MPLS: Improve label range reconfiguration

Allow to shorten label range over unused area.
This commit is contained in:
Ondrej Zajicek 2023-09-18 17:47:17 +02:00
parent 8e9e013b0d
commit fcf2258620

View File

@ -77,8 +77,7 @@
* *
* TODO: * TODO:
* - label range non-intersection check * - label range non-intersection check
* - better range reconfigurations (allow reduce ranges over unused labels) * - protocols should do route refresh instead of restart when reconfiguration
* - protocols should do route refresh instead of resetart when reconfiguration
* requires changing labels (e.g. different label range) * requires changing labels (e.g. different label range)
* - registering static allocations * - registering static allocations
* - checking range in static allocations * - checking range in static allocations
@ -349,9 +348,12 @@ mpls_find_range_(list *l, const char *name)
} }
static int static int
mpls_reconfigure_range(struct mpls_domain *m UNUSED, struct mpls_range *r, struct mpls_range_config *cf) mpls_reconfigure_range(struct mpls_domain *m, struct mpls_range *r, struct mpls_range_config *cf)
{ {
if ((cf->start > r->lo) || (cf->start + cf->length < r->hi)) uint last = lmap_last_one_in_range(&m->labels, r->lo, r->hi);
if (last == r->hi) last = 0;
if ((cf->start > r->lo) || (cf->start + cf->length <= last))
return 0; return 0;
cf->range = r; cf->range = r;