From: Maria Matejka Date: Tue, 22 Mar 2022 13:39:32 +0000 (+0100) Subject: BGP: Fixed LLGR depreferencing in bgp_rte_mergable X-Git-Tag: v2.0.11~48 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dabd7bccb3b9e2b7482cf4ae7619a67559f3ac94;p=thirdparty%2Fbird.git BGP: Fixed LLGR depreferencing in bgp_rte_mergable --- diff --git a/proto/bgp/attrs.c b/proto/bgp/attrs.c index 454686cf3..a7c49be59 100644 --- a/proto/bgp/attrs.c +++ b/proto/bgp/attrs.c @@ -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));