Skip to content

Commit 0546211

Browse files
authored
Merge pull request FRRouting#18819 from donaldsharp/path_info_fixup
Fix bestpath reason being incorrectly set in some cases
2 parents 84769c9 + 1804625 commit 0546211

File tree

6 files changed

+544
-3
lines changed

6 files changed

+544
-3
lines changed

bgpd/bgp_route.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3348,6 +3348,9 @@ void bgp_best_selection(struct bgp *bgp, struct bgp_dest *dest,
33483348
}
33493349

33503350
if (do_mpath && new_select) {
3351+
bool first_reason = true;
3352+
enum bgp_path_selection_reason ignore;
3353+
33513354
for (pi = bgp_dest_get_bgp_path_info(dest); pi; pi = pi->next) {
33523355
if (debug)
33533356
bgp_path_info_path_with_addpath_rx_str(
@@ -3373,10 +3376,10 @@ void bgp_best_selection(struct bgp *bgp, struct bgp_dest *dest,
33733376
if (!peer_established(pi->peer->connection))
33743377
continue;
33753378

3376-
bgp_path_info_cmp(bgp, pi, new_select, &paths_eq,
3377-
mpath_cfg, debug, pfx_buf, afi, safi,
3378-
&dest->reason);
3379+
bgp_path_info_cmp(bgp, pi, new_select, &paths_eq, mpath_cfg, debug, pfx_buf,
3380+
afi, safi, first_reason ? &dest->reason : &ignore);
33793381

3382+
first_reason = false;
33803383
if (paths_eq) {
33813384
if (debug)
33823385
zlog_debug(
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
!
2+
hostname r1
3+
!
4+
debug bgp bestpath 192.168.199.0/24
5+
!
6+
interface r1-eth0
7+
ip address 192.16.2.1/24
8+
!
9+
interface r1-eth1
10+
ip address 192.16.3.1/24
11+
!
12+
interface r1-eth2
13+
ip address 192.16.4.1/24
14+
!
15+
router bgp 65001
16+
timers bgp 1 10
17+
bgp router-id 1.1.1.1
18+
no bgp ebgp-requires-policy
19+
neighbor 192.16.2.2 remote-as 65024
20+
neighbor 192.16.3.3 remote-as 65003
21+
neighbor 192.16.4.4 remote-as 65024
22+
!
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
!
2+
hostname r2
3+
!
4+
interface r2-eth0
5+
ip address 192.16.2.2/24
6+
!
7+
interface r2-eth1
8+
ip address 192.168.199.2/24
9+
!
10+
router bgp 65024
11+
timers bgp 1 10
12+
bgp router-id 1.1.1.2
13+
no bgp ebgp-requires-policy
14+
neighbor 192.16.2.1 remote-as 65001
15+
!
16+
address-family ipv4 unicast
17+
network 192.168.199.0/24
18+
neighbor 192.16.2.1 route-map set-med out
19+
exit-address-family
20+
!
21+
route-map set-med permit 10
22+
set metric 200
23+
!
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
!
2+
hostname r3
3+
!
4+
interface r3-eth0
5+
ip address 192.16.3.3/24
6+
!
7+
interface r3-eth1
8+
ip address 192.168.199.3/24
9+
!
10+
router bgp 65003
11+
timers bgp 1 10
12+
bgp router-id 1.1.1.3
13+
no bgp ebgp-requires-policy
14+
neighbor 192.16.3.1 remote-as 65001
15+
!
16+
address-family ipv4 unicast
17+
network 192.168.199.0/24
18+
no neighbor 192.16.3.1 activate
19+
neighbor 192.16.3.1 route-map set-med out
20+
exit-address-family
21+
!
22+
route-map set-med permit 10
23+
set metric 150
24+
!
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
!
2+
hostname r4
3+
!
4+
interface r4-eth0
5+
ip address 192.16.4.4/24
6+
!
7+
interface r4-eth1
8+
ip address 192.168.199.4/24
9+
!
10+
router bgp 65024
11+
timers bgp 1 10
12+
bgp router-id 1.1.1.4
13+
no bgp ebgp-requires-policy
14+
neighbor 192.16.4.1 remote-as 65001
15+
!
16+
address-family ipv4 unicast
17+
network 192.168.199.0/24
18+
no neighbor 192.16.4.1 activate
19+
neighbor 192.16.4.1 route-map set-med out
20+
exit-address-family
21+
!
22+
route-map set-med permit 10
23+
set metric 100
24+
!

0 commit comments

Comments
 (0)