]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
BGP: Fixed LLGR depreferencing in bgp_rte_mergable
authorMaria Matejka <mq@ucw.cz>
Tue, 22 Mar 2022 13:39:32 +0000 (14:39 +0100)
committerMaria Matejka <mq@ucw.cz>
Wed, 6 Apr 2022 16:14:08 +0000 (18:14 +0200)
proto/bgp/attrs.c

index 454686cf3344141b23c85aaeb9ff9ba624a93155..a7c49be592e4baba7776100d7211a8ba11e2d3d5 100644 (file)
@@ -2074,14 +2074,17 @@ bgp_rte_mergable(rte *pri, rte *sec)
   u32 p, s;
 
   /* Skip suppressed routes (see bgp_rte_recalculate()) */
-  /* LLGR draft - depreference stale routes */
-  if (pri->pflags != sec->pflags)
+  if ((pri->pflags ^ sec->pflags) & BGP_REF_SUPPRESSED)
     return 0;
 
   /* RFC 4271 9.1.2.1. Route resolvability test */
   if (rte_resolvable(pri) != rte_resolvable(sec))
     return 0;
 
+  /* LLGR draft - depreference stale routes */
+  if (rte_stale(pri) != rte_stale(sec))
+    return 0;
+
   /* Start with local preferences */
   x = ea_find(pri->attrs->eattrs, EA_CODE(PROTOCOL_BGP, BA_LOCAL_PREF));
   y = ea_find(sec->attrs->eattrs, EA_CODE(PROTOCOL_BGP, BA_LOCAL_PREF));