]> git.puffer.fish Git - mirror/frr.git/commit
bgpd: Withdraw implicitly old paths from VRFs when import/export list changes
authorDonatas Abraitis <donatas@opensourcerouting.org>
Tue, 7 Jun 2022 19:12:07 +0000 (22:12 +0300)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Mon, 13 Jun 2022 11:47:13 +0000 (11:47 +0000)
commit83f018db99c0baec51bc4063245fabd87c8c3539
tree6182d991f9632d2729ee4e67463e62f8d7698af8
parent6d3e2c63cda7bece3982bc18e4ee57762a476f50
bgpd: Withdraw implicitly old paths from VRFs when import/export list changes

If we overwrite import/export RT list via route-maps or even flush by using
`set extcommunity none`, then we must withdraw old paths from VRFs to avoid
stale paths.

For example using:

```
router bgp 65500 vrf vrf1
 bgp router-id 10.180.1.1
 !
 address-family ipv4 unicast
  network 192.168.100.100/32 route-map rm
  rd vpn export 65500:10001
  rt vpn import 65500:10000 65500:10990
  rt vpn export 65500:10000
  export vpn
  import vpn
 exit-address-family
exit
!
router bgp 65500 vrf vrf2
 bgp router-id 10.180.1.1
 !
 address-family ipv4 unicast
  rd vpn export 65500:11001
  rt vpn import 65500:11000 65500:11990
  rt vpn export 65500:11000
  export vpn
  import vpn
 exit-address-family
exit
!
route-map rm permit 10
 set extcommunity rt 65500:10100 65500:12990 65500:13990 65500:11990
exit
```

If we strip extcommunities using:

```
route-map rm permit 10
 set extcommunity none
exit
```

or

```
route-map rm permit 10
 set extcommunity rt 65500:10100 65500:12990 65500:13990
```

Routes that are imported with 65500:11990 (192.168.100.100/32 from vrf1)
becomes stale.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit 3840a8193ea9dcc3a8b61cd4a5d890879878986e)
bgpd/bgp_mplsvpn.c