]> git.puffer.fish Git - matthieu/frr.git/commitdiff
tests: Check if the peer stays Idle if router-id is not set
authorDonatas Abraitis <donatas@opensourcerouting.org>
Wed, 29 Jan 2025 21:11:35 +0000 (23:11 +0200)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Wed, 29 Jan 2025 21:17:20 +0000 (23:17 +0200)
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
tests/topotests/bgp_ipv6_ll_peering/r1/bgpd.conf
tests/topotests/bgp_ipv6_ll_peering/r1/zebra.conf
tests/topotests/bgp_ipv6_ll_peering/r3/bgpd.conf [new file with mode: 0644]
tests/topotests/bgp_ipv6_ll_peering/r3/zebra.conf [new file with mode: 0644]
tests/topotests/bgp_ipv6_ll_peering/test_bgp_ipv6_ll_peering.py

index 724cbf84ab386c36ed0b8615db0d747773f34b5f..a26efb4c4f5eb65d94cca7d8741fe5af0922fd64 100644 (file)
@@ -4,3 +4,6 @@ router bgp 65001
  neighbor fe80:1::2 remote-as external
  neighbor fe80:1::2 timers 3 10
  neighbor fe80:1::2 interface r1-eth0
+ neighbor fe80:1::3 remote-as external
+ neighbor fe80:1::3 timers 3 10
+ neighbor fe80:1::3 interface r1-eth1
index 4e93d4f4e56827481e9e02be209394d89bb48e4f..f1bbff2e443016cda85b7f1f5a633ae513b2378c 100644 (file)
@@ -2,3 +2,6 @@
 interface r1-eth0
  ipv6 address fe80:1::1/64
 !
+interface r1-eth1
+ ipv6 address fe80:1::1/64
+!
diff --git a/tests/topotests/bgp_ipv6_ll_peering/r3/bgpd.conf b/tests/topotests/bgp_ipv6_ll_peering/r3/bgpd.conf
new file mode 100644 (file)
index 0000000..f168488
--- /dev/null
@@ -0,0 +1,5 @@
+router bgp 65003
+ no bgp ebgp-requires-policy
+ neighbor fe80:1::1 remote-as external
+ neighbor fe80:1::1 timers 3 10
+ neighbor fe80:1::1 interface r3-eth0
diff --git a/tests/topotests/bgp_ipv6_ll_peering/r3/zebra.conf b/tests/topotests/bgp_ipv6_ll_peering/r3/zebra.conf
new file mode 100644 (file)
index 0000000..71053cd
--- /dev/null
@@ -0,0 +1,4 @@
+!
+interface r3-eth0
+ ipv6 address fe80:1::3/64
+!
index aaa68ea340aa40f8fdb833ecca95fd749b3e9f50..fbd40976054206592c924dc8ec142a1acede78a8 100644 (file)
@@ -27,13 +27,17 @@ pytestmark = [pytest.mark.bgpd]
 
 
 def build_topo(tgen):
-    for routern in range(1, 3):
+    for routern in range(1, 4):
         tgen.add_router("r{}".format(routern))
 
     switch = tgen.add_switch("s1")
     switch.add_link(tgen.gears["r1"])
     switch.add_link(tgen.gears["r2"])
 
+    switch = tgen.add_switch("s2")
+    switch.add_link(tgen.gears["r1"])
+    switch.add_link(tgen.gears["r3"])
+
 
 def setup_module(mod):
     tgen = Topogen(build_topo, mod.__name__)
@@ -64,6 +68,7 @@ def test_bgp_ipv6_link_local_peering():
         pytest.skip(tgen.errors)
 
     r1 = tgen.gears["r1"]
+    r3 = tgen.gears["r3"]
 
     def _bgp_converge():
         output = json.loads(r1.vtysh_cmd("show bgp summary json"))
@@ -82,6 +87,28 @@ def test_bgp_ipv6_link_local_peering():
     _, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
     assert result is None, "Failed to see BGP convergence on R2"
 
+    def _bgp_router_id_missing():
+        output = json.loads(r3.vtysh_cmd("show bgp summary failed json"))
+        expected = {
+            "ipv4Unicast": {
+                "routerId": "0.0.0.0",
+                "as": 65003,
+                "peers": {
+                    "fe80:1::1": {
+                        "connectionsEstablished": 0,
+                        "connectionsDropped": 0,
+                        "peerUptime": "never",
+                        "lastResetDueTo": "Router ID is missing",
+                    }
+                },
+            }
+        }
+        return topotest.json_cmp(output, expected)
+
+    test_func = functools.partial(_bgp_router_id_missing)
+    _, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
+    assert result is None, "r3 should stay down due to missing router ID"
+
 
 if __name__ == "__main__":
     args = ["-s"] + sys.argv[1:]