summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2025-01-23 09:09:55 +0100
committerGitHub <noreply@github.com>2025-01-23 09:09:55 +0100
commit4a2612cd01d0d6ae25276b208f9b967295d6783b (patch)
tree4a29e5cfe3dc76c84474f4ea13f836f81fb02b2f
parentMerge pull request #17899 from chiragshah6/evpn_dev1 (diff)
parentbgpd: fix bfd with update-source in peer-group (diff)
downloadfrr-4a2612cd01d0d6ae25276b208f9b967295d6783b.tar.xz
frr-4a2612cd01d0d6ae25276b208f9b967295d6783b.zip
Merge pull request #17904 from louis-6wind/fix-bfd-pg-update-group
bgpd: fix bfd with update-source in peer-group
-rw-r--r--bgpd/bgp_bfd.c4
-rw-r--r--tests/topotests/bgp_bfd_session/r1/frr.conf12
-rw-r--r--tests/topotests/bgp_bfd_session/test_bgp_bfd_session.py24
3 files changed, 39 insertions, 1 deletions
diff --git a/bgpd/bgp_bfd.c b/bgpd/bgp_bfd.c
index 78759ae2b..5437b67f3 100644
--- a/bgpd/bgp_bfd.c
+++ b/bgpd/bgp_bfd.c
@@ -114,6 +114,10 @@ void bgp_peer_config_apply(struct peer *p, struct peer_group *pg)
*/
gconfig = pg->conf;
+ if (CHECK_FLAG(gconfig->flags, PEER_FLAG_UPDATE_SOURCE) ||
+ CHECK_FLAG(p->flags_override, PEER_FLAG_UPDATE_SOURCE))
+ bgp_peer_bfd_update_source(p);
+
/*
* If using default control plane independent configuration,
* then prefer group's (e.g. it means it wasn't manually configured).
diff --git a/tests/topotests/bgp_bfd_session/r1/frr.conf b/tests/topotests/bgp_bfd_session/r1/frr.conf
index a1560b09f..cea1ff814 100644
--- a/tests/topotests/bgp_bfd_session/r1/frr.conf
+++ b/tests/topotests/bgp_bfd_session/r1/frr.conf
@@ -11,4 +11,16 @@ router bgp 65000
neighbor 192.168.1.3 bfd
neighbor 192.168.1.3 ebgp-multihop 20
neighbor 192.168.1.3 update-source r1-eth0
+ neighbor PG peer-group
+ neighbor PG remote-as auto
+ neighbor PG bfd
+ neighbor PG ebgp-multihop 15
+ neighbor PG update-source 10.0.0.1
+ neighbor 192.168.1.4 peer-group PG
+ neighbor PG2 peer-group
+ neighbor PG2 remote-as auto
+ neighbor PG2 bfd
+ neighbor PG2 ebgp-multihop 25
+ neighbor 192.168.1.5 peer-group PG2
+ neighbor 192.168.1.5 update-source 10.0.0.1
exit
diff --git a/tests/topotests/bgp_bfd_session/test_bgp_bfd_session.py b/tests/topotests/bgp_bfd_session/test_bgp_bfd_session.py
index adf557af7..0dbb2f089 100644
--- a/tests/topotests/bgp_bfd_session/test_bgp_bfd_session.py
+++ b/tests/topotests/bgp_bfd_session/test_bgp_bfd_session.py
@@ -85,7 +85,29 @@ def test_bgp_bfd_session():
"diagnostic": "ok",
"remote-diagnostic": "ok",
"type": "dynamic",
- }
+ },
+ {
+ "multihop": True,
+ "peer": "192.168.1.4",
+ "local": "10.0.0.1",
+ "vrf": "default",
+ "minimum-ttl": 241,
+ "status": "down",
+ "diagnostic": "ok",
+ "remote-diagnostic": "ok",
+ "type": "dynamic",
+ },
+ {
+ "multihop": True,
+ "peer": "192.168.1.5",
+ "local": "10.0.0.1",
+ "vrf": "default",
+ "minimum-ttl": 231,
+ "status": "down",
+ "diagnostic": "ok",
+ "remote-diagnostic": "ok",
+ "type": "dynamic",
+ },
]
return topotest.json_cmp(output, expected)