From ff96f5895e87db7fc20cff9960a8cdea42c033d0 Mon Sep 17 00:00:00 2001 From: Viacheslav Hletenko Date: Tue, 19 May 2026 17:10:37 +0000 Subject: T8822: Add BFD strict mode for BGP --- data/templates/frr/bgpd.frr.j2 | 3 +++ interface-definitions/include/bgp/neighbor-bfd.xml.i | 19 +++++++++++++++++++ smoketest/scripts/cli/test_protocols_bgp.py | 13 +++++++++++++ 3 files changed, 35 insertions(+) diff --git a/data/templates/frr/bgpd.frr.j2 b/data/templates/frr/bgpd.frr.j2 index 3ea5d1f1b..27d13c40c 100644 --- a/data/templates/frr/bgpd.frr.j2 +++ b/data/templates/frr/bgpd.frr.j2 @@ -34,6 +34,9 @@ {% if config.bfd.profile is vyos_defined %} neighbor {{ neighbor }} bfd profile {{ config.bfd.profile }} {% endif %} +{% if config.bfd.strict is vyos_defined %} + neighbor {{ neighbor }} bfd strict {{ 'hold-time ' ~ config.bfd.strict.hold_time if config.bfd.strict.hold_time is vyos_defined else '' }} +{% endif %} {% endif %} {% if config.capability.dynamic is vyos_defined %} neighbor {{ neighbor }} capability dynamic diff --git a/interface-definitions/include/bgp/neighbor-bfd.xml.i b/interface-definitions/include/bgp/neighbor-bfd.xml.i index fac2a1166..6de4c9373 100644 --- a/interface-definitions/include/bgp/neighbor-bfd.xml.i +++ b/interface-definitions/include/bgp/neighbor-bfd.xml.i @@ -11,6 +11,25 @@ + + + Strict mode + + + + + BFD hold time + + u32:1-4294967295 + BFD hold time in seconds + + + + + + + + diff --git a/smoketest/scripts/cli/test_protocols_bgp.py b/smoketest/scripts/cli/test_protocols_bgp.py index c2a6f3dd1..c7c0dc6f0 100755 --- a/smoketest/scripts/cli/test_protocols_bgp.py +++ b/smoketest/scripts/cli/test_protocols_bgp.py @@ -1707,6 +1707,19 @@ class TestProtocolsBGP(VyOSUnitTestSHIM.TestCase): self.cli_commit() + def test_bgp_32_bfd_strict(self): + neighbor = '192.0.2.22' + bfd_hold_time = '23' + + self.cli_set(base_path + ['neighbor', neighbor, 'remote-as', ASN]) + self.cli_set(base_path + ['neighbor', neighbor, 'bfd', 'strict', 'hold-time', bfd_hold_time]) + + self.cli_commit() + + frrconfig = self.getFRRconfig(f'router bgp {ASN}', stop_section='^exit') + self.assertIn(f'router bgp {ASN}', frrconfig) + self.assertIn(f' neighbor {neighbor} bfd strict hold-time {bfd_hold_time}', frrconfig) + def test_bgp_99_bmp(self): target_name = 'instance-bmp' target_address = '127.0.0.1' -- cgit v1.2.3