]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: use igpmetric in bgp_aigp_metric_total() 17834/head
authorEnke Chen <enchen@paloaltonetworks.com>
Thu, 9 Jan 2025 20:02:02 +0000 (12:02 -0800)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Fri, 10 Jan 2025 14:27:46 +0000 (14:27 +0000)
Use igpmetric from bgp_path_info in bgp_igp_metric_total() to be
consistent with all other cases, e.g., as in bgp_path_info_cmp().

Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
(cherry picked from commit b89e66a3bcd5644278f34ec5899b071066e102a1)

bgpd/bgp_attr.h

index 10e6b0ffcc3c31ec83e517b2dd6d413e4a601ebe..74cff5a3a3d9fd23d8f052257904a77fa4beb8e5 100644 (file)
@@ -602,10 +602,11 @@ static inline uint64_t bgp_aigp_metric_total(struct bgp_path_info *bpi)
 {
        uint64_t aigp = bgp_attr_get_aigp_metric(bpi->attr);
 
-       if (bpi->nexthop)
-               return aigp + bpi->nexthop->metric;
-       else
+       /* Don't increment if it's locally sourced */
+       if (bpi->peer == bpi->peer->bgp->peer_self)
                return aigp;
+
+       return bpi->extra ? (aigp + bpi->extra->igpmetric) : aigp;
 }
 
 static inline struct cluster_list *bgp_attr_get_cluster(const struct attr *attr)