]> git.puffer.fish Git - matthieu/frr.git/commitdiff
tests: Check if BGP no-export community is passed to BGP OAD peers
authorDonatas Abraitis <donatas@opensourcerouting.org>
Fri, 18 Oct 2024 19:51:37 +0000 (22:51 +0300)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Tue, 22 Oct 2024 15:07:35 +0000 (15:07 +0000)
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit 7eaec540ec8aaca5821fc5ac1259b8eb8127f230)

tests/topotests/bgp_oad/r1/frr.conf
tests/topotests/bgp_oad/test_bgp_oad.py

index 39045ba648eb9db1f8865dcf31ddf6be1c9d4244..f00bdfe7d2fb433b7fc41a73675a92d39d29e269 100644 (file)
@@ -4,6 +4,7 @@ int r1-eth0
 !
 router bgp 65001
  no bgp ebgp-requires-policy
+ no bgp network import-check
  neighbor 192.168.1.2 remote-as external
  neighbor 192.168.1.2 timers 1 3
  neighbor 192.168.1.2 timers connect 1
@@ -12,10 +13,14 @@ router bgp 65001
  neighbor 192.168.1.4 timers 1 3
  neighbor 192.168.1.4 timers connect 1
  address-family ipv4 unicast
+  network 10.10.10.1/32 route-map local
   neighbor 192.168.1.4 route-map r4 in
  exit-address-family
 !
 route-map r4 permit 10
  set local-preference 123
  set metric 123
-exit
+!
+route-map local permit 10
+ set community no-export
+!
index b26c5483574882e8d0bb3986a68643113a337f23..c21b3793c364622cd8a4affc0563f5eb884a5b72 100644 (file)
@@ -8,6 +8,8 @@
 """
 Test if local-preference is passed between different EBGP peers when
 EBGP-OAD is configured.
+
+Also check if no-export community is passed to the EBGP-OAD peer.
 """
 
 import os
@@ -55,6 +57,9 @@ def test_bgp_dynamic_capability_role():
         pytest.skip(tgen.errors)
 
     r1 = tgen.gears["r1"]
+    r2 = tgen.gears["r2"]
+    r3 = tgen.gears["r3"]
+    r4 = tgen.gears["r4"]
 
     def _bgp_converge():
         output = json.loads(r1.vtysh_cmd("show bgp ipv4 unicast 10.10.10.10/32 json"))
@@ -89,6 +94,37 @@ def test_bgp_dynamic_capability_role():
     _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
     assert result is None, "Can't converge"
 
+    def _bgp_check_no_export(router, arg=[{"valid": True}]):
+        output = json.loads(router.vtysh_cmd("show bgp ipv4 unicast json"))
+        expected = {
+            "routes": {
+                "10.10.10.1/32": arg,
+            }
+        }
+        return topotest.json_cmp(output, expected)
+
+    test_func = functools.partial(
+        _bgp_check_no_export,
+        r2,
+    )
+    _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
+    assert result is None, "10.10.10.1/32 should be advertised to r2"
+
+    test_func = functools.partial(
+        _bgp_check_no_export,
+        r3,
+    )
+    _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
+    assert result is None, "10.10.10.1/32 should be advertised to r3"
+
+    test_func = functools.partial(
+        _bgp_check_no_export,
+        r4,
+        None,
+    )
+    _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
+    assert result is None, "10.10.10.1/32 should not be advertised to r4 (not OAD peer)"
+
 
 if __name__ == "__main__":
     args = ["-s"] + sys.argv[1:]