]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
BGP, L3VPN: Fix MPLS channel reload mq-master-merged-to-v3
authorOndrej Zajicek <santiago@crfreenet.org>
Sat, 30 Sep 2023 21:18:04 +0000 (23:18 +0200)
committerOndrej Zajicek <santiago@crfreenet.org>
Wed, 4 Oct 2023 11:12:05 +0000 (13:12 +0200)
When a MPLS channel is reloaded, it should reload all regular MPLS-aware
channels. This causes re-evaluation of routes in FEC map and possibly
reannouncement of MPLS routes.

proto/bgp/bgp.c
proto/l3vpn/l3vpn.c

index 4651b76a2f84bfb319aab98d23b7c9fb6485103c..f8146bdf7e0e3cdac158535f2e0d1a9fa76977b5 100644 (file)
@@ -1414,6 +1414,16 @@ bgp_reload_routes(struct channel *C)
   struct bgp_proto *p = (void *) C->proto;
   struct bgp_channel *c = (void *) C;
 
+  /* For MPLS channel, reload all MPLS-aware channels */
+  if (C == p->p.mpls_channel)
+  {
+    BGP_WALK_CHANNELS(p, c)
+      if ((c->desc->mpls) && (p->route_refresh || c->c.in_table))
+       bgp_reload_routes(&c->c);
+
+    return;
+  }
+
   /* Ignore non-BGP channels */
   if (C->channel != &channel_bgp)
     return;
index 38441208713c625d73c73941041dd90eae66f898..b7f60504f10aec41beaa66c01be583396138175d 100644 (file)
@@ -296,7 +296,8 @@ l3vpn_reload_routes(struct channel *C)
     break;
 
   case NET_MPLS:
-    /* FIXME */
+    channel_request_feeding(p->ip4_channel);
+    channel_request_feeding(p->ip6_channel);
     break;
   }
 }