diff options
author | Mikael Magnusson <mikma@users.sourceforge.net> | 2023-11-25 23:41:45 +0100 |
---|---|---|
committer | Mikael Magnusson <mikma@users.sourceforge.net> | 2023-11-25 23:41:45 +0100 |
commit | 9db9a7c08c586690cdb7e357f11071597b389ea1 (patch) | |
tree | 8828e45286c9a5e67afec4f0079039c1377f288b | |
parent | ba91f21ea97972e3705420c906b2eecafa85c4b8 (diff) | |
parent | fcf22586200000f0d19ffed339524d2530ed0d6f (diff) |
Merge commit 'fcf22586' into wireguard-next-tmp7-1
-rw-r--r-- | nest/mpls.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/nest/mpls.c b/nest/mpls.c index 788de7c1..bab6d128 100644 --- a/nest/mpls.c +++ b/nest/mpls.c @@ -77,8 +77,7 @@ * * TODO: * - label range non-intersection check - * - better range reconfigurations (allow reduce ranges over unused labels) - * - protocols should do route refresh instead of resetart when reconfiguration + * - protocols should do route refresh instead of restart when reconfiguration * requires changing labels (e.g. different label range) * - registering static allocations * - checking range in static allocations @@ -349,9 +348,12 @@ mpls_find_range_(list *l, const char *name) } 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; cf->range = r; |