]> git.puffer.fish Git - matthieu/frr.git/commitdiff
Revert "Merge pull request #15368 from louis-6wind/fix-6pe"
authorJafar Al-Gharaibeh <jafar@atcorp.com>
Wed, 21 Aug 2024 18:40:18 +0000 (13:40 -0500)
committerJafar Al-Gharaibeh <jafar@atcorp.com>
Thu, 22 Aug 2024 15:38:09 +0000 (10:38 -0500)
This reverts commit df98e8836897135b34080909bb6c4d91218a8e59, reversing
changes made to b6521192354df3f614b244323876e43dd0b58e56.

17 files changed:
bgpd/bgp_updgrp_packet.c
tests/topotests/bgp_6vpe_ebgp_topo1/__init__.py [deleted file]
tests/topotests/bgp_6vpe_ebgp_topo1/h1/zebra.conf [deleted file]
tests/topotests/bgp_6vpe_ebgp_topo1/h2/zebra.conf [deleted file]
tests/topotests/bgp_6vpe_ebgp_topo1/pe1/bgp_summary.json [deleted file]
tests/topotests/bgp_6vpe_ebgp_topo1/pe1/bgp_vrf_ipv6.json [deleted file]
tests/topotests/bgp_6vpe_ebgp_topo1/pe1/bgpd.conf [deleted file]
tests/topotests/bgp_6vpe_ebgp_topo1/pe1/ipv6_routes_vrf.json [deleted file]
tests/topotests/bgp_6vpe_ebgp_topo1/pe1/isisd.conf [deleted file]
tests/topotests/bgp_6vpe_ebgp_topo1/pe1/zebra.conf [deleted file]
tests/topotests/bgp_6vpe_ebgp_topo1/pe2/bgp_summary.json [deleted file]
tests/topotests/bgp_6vpe_ebgp_topo1/pe2/bgp_vrf_ipv6.json [deleted file]
tests/topotests/bgp_6vpe_ebgp_topo1/pe2/bgpd.conf [deleted file]
tests/topotests/bgp_6vpe_ebgp_topo1/pe2/isisd.conf [deleted file]
tests/topotests/bgp_6vpe_ebgp_topo1/pe2/zebra.conf [deleted file]
tests/topotests/bgp_6vpe_ebgp_topo1/test_bgp_6vpe_ebgp_topo1.py [deleted file]
tests/topotests/bgp_nexthop_mp_ipv4_6/test_nexthop_mp_ipv4_6.py [deleted file]

index b359b2c2534ea8279c9351744092059e5e1376b3..8cd851b9ac5c8ca99f9928809750c61b1a09767d 100644 (file)
@@ -523,16 +523,11 @@ struct stream *bpacket_reformat_for_peer(struct bpacket *pkt,
                        gnh_modified = 1;
                }
 
-               if (peer->nexthop.v4.s_addr != INADDR_ANY &&
-                   (IN6_IS_ADDR_UNSPECIFIED(mod_v6nhg) ||
-                    (peer->connection->su.sa.sa_family == AF_INET &&
-                     paf->afi == AFI_IP6))) {
-                       /* set a IPv4 mapped IPv6 address if no global IPv6
-                        * address is found or if announcing IPv6 prefix
-                        * over an IPv4 BGP session.
-                        */
-                       ipv4_to_ipv4_mapped_ipv6(mod_v6nhg, peer->nexthop.v4);
-                       gnh_modified = 1;
+               if (IN6_IS_ADDR_UNSPECIFIED(mod_v6nhg)) {
+                       if (peer->nexthop.v4.s_addr != INADDR_ANY) {
+                               ipv4_to_ipv4_mapped_ipv6(mod_v6nhg,
+                                                        peer->nexthop.v4);
+                       }
                }
 
                if (IS_MAPPED_IPV6(&peer->nexthop.v6_global)) {
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/__init__.py b/tests/topotests/bgp_6vpe_ebgp_topo1/__init__.py
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/h1/zebra.conf b/tests/topotests/bgp_6vpe_ebgp_topo1/h1/zebra.conf
deleted file mode 100644 (file)
index 06a23bb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-ipv6 route fd00:200::/64 fd00:100::2
-interface eth-pe1
- ipv6 address fd00:100::1/64
-!
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/h2/zebra.conf b/tests/topotests/bgp_6vpe_ebgp_topo1/h2/zebra.conf
deleted file mode 100644 (file)
index 2dadfc4..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-ipv6 route fd00:100::/64 fd00:200::5
-interface eth-pe2
- ipv6 address fd00:200::6/64
- ipv6 address fd00:201::6/64
- ipv6 address fd00:300::6/64
- ipv6 address fd00:400::6/64
- ipv6 address fd01:200::6/64
-!
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/pe1/bgp_summary.json b/tests/topotests/bgp_6vpe_ebgp_topo1/pe1/bgp_summary.json
deleted file mode 100644 (file)
index c2100ad..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "ipv6Vpn": {
-    "routerId": "198.51.100.2",
-    "as": 65500,
-    "peers": {
-      "192.0.2.5": {
-        "remoteAs": 65501,
-        "state": "Established",
-        "peerState": "OK"
-      }
-    }
-  }
-}
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/pe1/bgp_vrf_ipv6.json b/tests/topotests/bgp_6vpe_ebgp_topo1/pe1/bgp_vrf_ipv6.json
deleted file mode 100644 (file)
index c6e776d..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-{
-  "vrfName": "vrf1",
-  "routerId": "198.51.100.2",
-  "defaultLocPrf": 100,
-  "localAS": 65500,
-  "routes": {
-    "fd00:100::/64": [
-      {
-        "valid": true,
-        "bestpath": true,
-        "network": "fd00:100::/64",
-        "metric": 0,
-        "weight": 32768,
-        "path": "",
-        "nexthops": [
-          {
-            "ip": "::",
-            "afi": "ipv6",
-            "scope": "global",
-            "used": true
-          }
-        ]
-      }
-    ],
-    "fd00:200::/64": [
-      {
-        "valid": true,
-        "bestpath": true,
-        "network": "fd00:200::/64",
-        "metric": 0,
-        "weight": 0,
-        "path": "65501",
-        "nexthops": [
-          {
-            "ip": "::ffff:c000:205",
-            "afi": "ipv6",
-            "scope": "global",
-            "used": true
-          }
-        ]
-      }
-    ],
-    "fd00:201::/64": [
-      {
-        "valid": true,
-        "bestpath": true,
-        "network": "fd00:201::/64",
-        "metric": 0,
-        "weight": 0,
-        "path": "65501",
-        "nexthops": [
-          {
-            "ip": "::ffff:c000:205",
-            "afi": "ipv6",
-            "scope": "global",
-            "used": true
-          }
-        ]
-      }
-    ],
-    "fd00:300::/64": [
-      {
-        "valid": true,
-        "bestpath": true,
-        "network": "fd00:300::/64",
-        "metric": 0,
-        "weight": 0,
-        "path": "65501",
-        "nexthops": [
-          {
-            "ip": "::ffff:c000:205",
-            "afi": "ipv6",
-            "scope": "global",
-            "used": true
-          }
-        ]
-      }
-    ],
-    "fd00:400::/64": [
-      {
-        "valid": true,
-        "bestpath": true,
-        "network": "fd00:400::/64",
-        "metric": 0,
-        "weight": 0,
-        "path": "65501",
-        "nexthops": [
-          {
-            "ip": "::ffff:c000:205",
-            "afi": "ipv6",
-            "scope": "global",
-            "used": true
-          }
-        ]
-      }
-    ],
-    "fd01:200::/64": [
-      {
-        "valid": true,
-        "bestpath": true,
-        "network": "fd01:200::/64",
-        "metric": 0,
-        "weight": 0,
-        "path": "65501",
-        "nexthops": [
-          {
-            "ip": "::ffff:c000:205",
-            "afi": "ipv6",
-            "scope": "global",
-            "used": true
-          }
-        ]
-      }
-    ]
-  }
-}
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/pe1/bgpd.conf b/tests/topotests/bgp_6vpe_ebgp_topo1/pe1/bgpd.conf
deleted file mode 100644 (file)
index 26e94d4..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-!
-!debug bgp zebra
-router bgp 65500
- bgp router-id 198.51.100.2
- no bgp ebgp-requires-policy
-  neighbor 192.0.2.5 remote-as 65501
-  neighbor 192.0.2.5 capability extended-nexthop
- address-family ipv4 unicast
-  no neighbor 192.0.2.5 activate
- exit-address-family
- address-family ipv6 vpn
-  neighbor 192.0.2.5 activate
-  neighbor 192.0.2.5 route-map rmap in
- exit-address-family
-exit
-router bgp 65500 vrf vrf1
- bgp router-id 198.51.100.2
- address-family ipv6 unicast
-  redistribute connected
-  label vpn export 101
-  rd vpn export 444:1
-  rt vpn both 52:100
-  export vpn
-  import vpn
- exit-address-family
-!
-interface eth-pe2
- mpls bgp forwarding
-!
-route-map rmap permit 1
- set ipv6 next-hop prefer-global
-!
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/pe1/ipv6_routes_vrf.json b/tests/topotests/bgp_6vpe_ebgp_topo1/pe1/ipv6_routes_vrf.json
deleted file mode 100644 (file)
index 1545749..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-{
-  "fd00:100::/64": [
-    {
-      "prefix": "fd00:100::/64",
-      "protocol": "connected",
-      "vrfName": "vrf1",
-      "selected": true,
-      "destSelected": true,
-      "distance": 0,
-      "metric": 0,
-      "installed": true,
-      "nexthops": [
-        {
-          "fib": true,
-          "directlyConnected": true,
-          "interfaceName": "eth-h1",
-          "active": true
-        }
-      ]
-    }
-  ],
-  "fd00:200::/64": [
-    {
-      "prefix": "fd00:200::/64",
-      "protocol": "bgp",
-      "vrfName": "vrf1",
-      "selected": true,
-      "destSelected": true,
-      "distance": 20,
-      "metric": 0,
-      "installed": true,
-      "nexthops": [
-        {
-          "ip": "::ffff:c000:205",
-          "afi": "ipv6",
-          "vrf": "default",
-          "active": true,
-          "labels": [
-            102
-          ],
-          "weight": 1
-        }
-      ]
-    }
-  ],
-  "fd00:201::/64": [
-    {
-      "prefix": "fd00:201::/64",
-      "protocol": "bgp",
-      "vrfName": "vrf1",
-      "selected": true,
-      "destSelected": true,
-      "distance": 20,
-      "metric": 0,
-      "installed": true,
-      "nexthops": [
-        {
-          "ip": "::ffff:c000:205",
-          "afi": "ipv6",
-          "vrf": "default",
-          "active": true,
-          "labels": [
-            102
-          ],
-          "weight": 1
-        }
-      ]
-    }
-  ],
-  "fd00:300::/64": [
-    {
-      "prefix": "fd00:300::/64",
-      "protocol": "bgp",
-      "vrfName": "vrf1",
-      "selected": true,
-      "destSelected": true,
-      "distance": 20,
-      "metric": 0,
-      "installed": true,
-      "nexthops": [
-        {
-          "ip": "::ffff:c000:205",
-          "afi": "ipv6",
-          "vrf": "default",
-          "active": true,
-          "labels": [
-            102
-          ],
-          "weight": 1
-        }
-      ]
-    }
-  ],
-  "fd00:400::/64": [
-    {
-      "prefix": "fd00:400::/64",
-      "protocol": "bgp",
-      "vrfName": "vrf1",
-      "selected": true,
-      "destSelected": true,
-      "distance": 20,
-      "metric": 0,
-      "installed": true,
-      "nexthops": [
-        {
-          "ip": "::ffff:c000:205",
-          "afi": "ipv6",
-          "vrf": "default",
-          "active": true,
-          "labels": [
-            102
-          ],
-          "weight": 1
-        }
-      ]
-    }
-  ],
-  "fd01:200::/64": [
-    {
-      "prefix": "fd01:200::/64",
-      "protocol": "bgp",
-      "vrfName": "vrf1",
-      "selected": true,
-      "destSelected": true,
-      "distance": 20,
-      "metric": 0,
-      "installed": true,
-      "nexthops": [
-        {
-          "ip": "::ffff:c000:205",
-          "afi": "ipv6",
-          "vrf": "default",
-          "active": true,
-          "labels": [
-            102
-          ],
-          "weight": 1
-        }
-      ]
-    }
-  ]
-}
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/pe1/isisd.conf b/tests/topotests/bgp_6vpe_ebgp_topo1/pe1/isisd.conf
deleted file mode 100644 (file)
index 61f2fe7..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-!
-interface lo
- ip router isis 1
- isis hello-interval 1
- isis hello-multiplier 3
-!
-interface eth-pe2
- ip router isis 1
- isis hello-interval 1
- isis hello-multiplier 3
-!
-router isis 1
- net 49.0000.0007.e901.2222.00
- is-type level-1
- lsp-gen-interval 1
- mpls-te on
- mpls-te router-address 198.51.100.2
- segment-routing on
- segment-routing node-msd 8
- segment-routing global-block 1000 10000 local-block 30000 30999
- segment-routing prefix 198.51.100.2/32 index 22
-!
-
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/pe1/zebra.conf b/tests/topotests/bgp_6vpe_ebgp_topo1/pe1/zebra.conf
deleted file mode 100644 (file)
index 7ddd98f..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-!
-interface eth-h1
- ipv6 address fd00:100::2/64
-!
-interface eth-pe2
- ip address 192.0.2.2/24
- ipv6 address ::ffff:192.0.2.2/120
-!
-interface lo
- ip address 198.51.100.2/32
-!
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/pe2/bgp_summary.json b/tests/topotests/bgp_6vpe_ebgp_topo1/pe2/bgp_summary.json
deleted file mode 100644 (file)
index d740794..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "ipv6Vpn": {
-    "routerId": "198.51.100.5",
-    "as": 65501,
-    "peers": {
-      "192.0.2.2": {
-        "remoteAs": 65500,
-        "state": "Established",
-        "peerState": "OK"
-      }
-    }
-  }
-}
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/pe2/bgp_vrf_ipv6.json b/tests/topotests/bgp_6vpe_ebgp_topo1/pe2/bgp_vrf_ipv6.json
deleted file mode 100644 (file)
index ec42999..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-{
-  "vrfName": "vrf1",
-  "routerId": "198.51.100.5",
-  "defaultLocPrf": 100,
-  "localAS": 65501,
-  "routes": {
-    "fd00:100::/64": [
-      {
-        "valid": true,
-        "bestpath": true,
-        "network": "fd00:100::/64",
-        "metric": 0,
-        "weight": 0,
-        "path": "65500",
-        "nexthops": [
-          {
-            "ip": "::ffff:c000:202",
-            "afi": "ipv6",
-            "scope": "global",
-            "used": true
-          }
-        ]
-      }
-    ],
-    "fd00:200::/64": [
-      {
-        "valid": true,
-        "bestpath": true,
-        "network": "fd00:200::/64",
-        "metric": 0,
-        "weight": 32768,
-        "path": "",
-        "nexthops": [
-          {
-            "ip": "::",
-            "afi": "ipv6",
-            "scope": "global",
-            "used": true
-          }
-        ]
-      }
-    ],
-    "fd00:201::/64": [
-      {
-        "valid": true,
-        "bestpath": true,
-        "network": "fd00:201::/64",
-        "metric": 0,
-        "weight": 32768,
-        "path": "",
-        "nexthops": [
-          {
-            "ip": "::",
-            "afi": "ipv6",
-            "scope": "global",
-            "used": true
-          }
-        ]
-      }
-    ],
-    "fd00:300::/64": [
-      {
-        "valid": true,
-        "bestpath": true,
-        "network": "fd00:300::/64",
-        "metric": 0,
-        "weight": 32768,
-        "path": "",
-        "nexthops": [
-          {
-            "ip": "::",
-            "afi": "ipv6",
-            "scope": "global",
-            "used": true
-          }
-        ]
-      }
-    ],
-    "fd00:400::/64": [
-      {
-        "valid": true,
-        "bestpath": true,
-        "network": "fd00:400::/64",
-        "metric": 0,
-        "weight": 32768,
-        "path": "",
-        "nexthops": [
-          {
-            "ip": "::",
-            "afi": "ipv6",
-            "scope": "global",
-            "used": true
-          }
-        ]
-      }
-    ],
-    "fd01:200::/64": [
-      {
-        "valid": true,
-        "bestpath": true,
-        "network": "fd01:200::/64",
-        "metric": 0,
-        "weight": 32768,
-        "path": "",
-        "nexthops": [
-          {
-            "ip": "::",
-            "afi": "ipv6",
-            "scope": "global",
-            "used": true
-          }
-        ]
-      }
-    ]
-  }
-}
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/pe2/bgpd.conf b/tests/topotests/bgp_6vpe_ebgp_topo1/pe2/bgpd.conf
deleted file mode 100644 (file)
index 03b63af..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-!
-router bgp 65501
- bgp router-id 198.51.100.5
- no bgp ebgp-requires-policy
-  neighbor 192.0.2.2 remote-as 65500
-  neighbor 192.0.2.2 capability extended-nexthop
- address-family ipv4 unicast
-  no neighbor 192.0.2.2 activate
- exit-address-family
- address-family ipv6 vpn
-  neighbor 192.0.2.2 activate
-  neighbor 192.0.2.2 route-map rmap in
- exit-address-family
-exit
-router bgp 65501 vrf vrf1
- bgp router-id 198.51.100.5
- address-family ipv6 unicast
-  redistribute connected
-  label vpn export 102
-  rd vpn export 444:2
-  rt vpn both 52:100
-  export vpn
-  import vpn
-exit-address-family
-!
-interface eth-pe1
- mpls bgp forwarding
-!
-route-map rmap permit 1
- set ipv6 next-hop prefer-global
-!
\ No newline at end of file
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/pe2/isisd.conf b/tests/topotests/bgp_6vpe_ebgp_topo1/pe2/isisd.conf
deleted file mode 100644 (file)
index f210554..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-!
-interface lo
- ip router isis 1
- isis hello-interval 1
- isis hello-multiplier 3
-!
-interface eth-pe1
- ip router isis 1
- isis hello-interval 1
- isis hello-multiplier 3
-!
-router isis 1
- net 49.0000.0007.e901.5555.00
- is-type level-1
- lsp-gen-interval 1
- mpls-te on
- mpls-te router-address 198.51.100.5
- segment-routing on
- segment-routing node-msd 8
- segment-routing global-block 1000 10000 local-block 33000 33999
- segment-routing prefix 198.51.100.5/32 index 55
-!
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/pe2/zebra.conf b/tests/topotests/bgp_6vpe_ebgp_topo1/pe2/zebra.conf
deleted file mode 100644 (file)
index bf20638..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-!
-interface eth-h2
- ipv6 address fd00:200::5/64
- ipv6 address fd00:201::5/64
- ipv6 address fd00:300::5/64
- ipv6 address fd00:400::5/64
- ipv6 address fd01:200::5/64
-!
-interface eth-pe1
- ip address 192.0.2.5/24
- ipv6 address ::ffff:192.0.2.5/120
-!
-interface lo
- ip address 198.51.100.5/32
-!
diff --git a/tests/topotests/bgp_6vpe_ebgp_topo1/test_bgp_6vpe_ebgp_topo1.py b/tests/topotests/bgp_6vpe_ebgp_topo1/test_bgp_6vpe_ebgp_topo1.py
deleted file mode 100644 (file)
index 477cfa2..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-#!/usr/bin/env python
-# SPDX-License-Identifier: ISC
-
-#
-# Copyright (c) 2023 by 6WIND
-#
-
-"""
-Test the FRR BGP 6VPE functionality
-"""
-
-import os
-import sys
-import json
-from functools import partial
-import pytest
-
-# Save the Current Working Directory to find configuration files.
-CWD = os.path.dirname(os.path.realpath(__file__))
-sys.path.append(os.path.join(CWD, "../"))
-
-# pylint: disable=C0413
-# Import topogen and topotest helpers
-from lib import topotest
-from lib.topogen import Topogen, TopoRouter, get_topogen
-from lib.topolog import logger
-from lib.checkping import check_ping
-
-pytestmark = [pytest.mark.bgpd, pytest.mark.isisd]
-
-
-def build_topo(tgen):
-    """
-    +---+    +---+    +---+    +---+
-    | h1|----|pe1|----|pe2|----| h2|
-    +---+    +---+    +---+    +---+
-    """
-
-    def connect_routers(tgen, left, right):
-        pe = None
-        host = None
-        for rname in [left, right]:
-            if rname not in tgen.routers().keys():
-                tgen.add_router(rname)
-            if "pe" in rname:
-                pe = tgen.gears[rname]
-            if "h" in rname:
-                host = tgen.gears[rname]
-
-        switch = tgen.add_switch("s-{}-{}".format(left, right))
-        switch.add_link(tgen.gears[left], nodeif="eth-{}".format(right))
-        switch.add_link(tgen.gears[right], nodeif="eth-{}".format(left))
-
-        if pe and host:
-            pe.cmd("ip link add vrf1 type vrf table 10")
-            pe.cmd("ip link set vrf1 up")
-            pe.cmd("ip link set dev eth-{} master vrf1".format(host.name))
-
-        if "p" in left and "p" in right:
-            # PE <-> P or P <-> P
-            tgen.gears[left].run("sysctl -w net.mpls.conf.eth-{}.input=1".format(right))
-            tgen.gears[right].run("sysctl -w net.mpls.conf.eth-{}.input=1".format(left))
-
-    connect_routers(tgen, "h1", "pe1")
-    connect_routers(tgen, "pe1", "pe2")
-    connect_routers(tgen, "pe2", "h2")
-
-
-def setup_module(mod):
-    "Sets up the pytest environment"
-
-    tgen = Topogen(build_topo, mod.__name__)
-    tgen.start_topology()
-    logger.info("setup_module")
-
-    for rname, router in tgen.routers().items():
-        router.load_config(
-            TopoRouter.RD_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname))
-        )
-        if "h" in rname:
-            # hosts
-            continue
-
-        router.load_config(
-            TopoRouter.RD_ISIS, os.path.join(CWD, "{}/isisd.conf".format(rname))
-        )
-
-        router.load_config(
-            TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))
-        )
-
-    # Initialize all routers.
-    tgen.start_router()
-
-
-def teardown_module(_mod):
-    "Teardown the pytest environment"
-    tgen = get_topogen()
-    tgen.stop_topology()
-
-
-def test_bgp_convergence():
-    "Assert that BGP is converging."
-    tgen = get_topogen()
-    if tgen.routers_have_failure():
-        pytest.skip(tgen.errors)
-
-    logger.info("waiting for bgp peers to go up")
-
-    router_list = ["pe1", "pe2"]
-
-    for name in router_list:
-        router = tgen.gears[name]
-        ref_file = "{}/{}/bgp_summary.json".format(CWD, router.name)
-        expected = json.loads(open(ref_file).read())
-        test_func = partial(
-            topotest.router_json_cmp, router, "show bgp summary json", expected
-        )
-        _, res = topotest.run_and_expect(test_func, None, count=90, wait=1)
-        assertmsg = "{}: bgp did not converge".format(router.name)
-        assert res is None, assertmsg
-
-
-def test_bgp_ipv6_vpn():
-    "Assert that BGP is exchanging BGP route."
-    tgen = get_topogen()
-    if tgen.routers_have_failure():
-        pytest.skip(tgen.errors)
-
-    logger.info("waiting for bgp peers exchanging UPDATES")
-
-    router_list = ["pe1", "pe2"]
-
-    for name in router_list:
-        router = tgen.gears[name]
-        ref_file = "{}/{}/bgp_vrf_ipv6.json".format(CWD, router.name)
-        expected = json.loads(open(ref_file).read())
-        test_func = partial(
-            topotest.router_json_cmp,
-            router,
-            "show bgp vrf vrf1 ipv6 unicast json",
-            expected,
-        )
-        _, res = topotest.run_and_expect(test_func, None, count=30, wait=1)
-        assertmsg = "{}: BGP UPDATE exchange failure".format(router.name)
-        assert res is None, assertmsg
-
-
-def test_zebra_ipv6_installed():
-    "Assert that routes are installed."
-    tgen = get_topogen()
-    if tgen.routers_have_failure():
-        pytest.skip(tgen.errors)
-    pe1 = tgen.gears["pe1"]
-    logger.info("check ipv6 routes installed on pe1")
-
-    ref_file = "{}/{}/ipv6_routes_vrf.json".format(CWD, pe1.name)
-    expected = json.loads(open(ref_file).read())
-    test_func = partial(
-        topotest.router_json_cmp, pe1, "show ipv6 route vrf vrf1 json", expected
-    )
-    _, res = topotest.run_and_expect(test_func, None, count=30, wait=1)
-    assertmsg = "{}: Zebra Installation failure on vrf vrf1".format(pe1.name)
-    assert res is None, assertmsg
-
-
-def test_bgp_ping6_ok():
-    "Check that h1 pings h2"
-    tgen = get_topogen()
-    if tgen.routers_have_failure():
-        pytest.skip(tgen.errors)
-
-    check_ping("h1", "fd00:200::6", True, 5, 1)
-
-
-if __name__ == "__main__":
-    args = ["-s"] + sys.argv[1:]
-    sys.exit(pytest.main(args))
diff --git a/tests/topotests/bgp_nexthop_mp_ipv4_6/test_nexthop_mp_ipv4_6.py b/tests/topotests/bgp_nexthop_mp_ipv4_6/test_nexthop_mp_ipv4_6.py
deleted file mode 100644 (file)
index e1c2808..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-#!/usr/bin/env python
-# SPDX-License-Identifier: ISC
-
-#
-# Copyright (c) 2024 by 6WIND
-#
-
-"""
-Test BGP nexthop conformity with IPv4,6 MP-BGP over IPv4 peering
-"""
-
-import os
-import sys
-import json
-from functools import partial
-import pytest
-
-# Save the Current Working Directory to find configuration files.
-CWD = os.path.dirname(os.path.realpath(__file__))
-sys.path.append(os.path.join(CWD, "../"))
-
-# pylint: disable=C0413
-# Import topogen and topotest helpers
-from lib import topotest
-from lib.topogen import Topogen, TopoRouter, get_topogen
-from lib.topolog import logger
-from lib.checkping import check_ping
-from lib.bgp import verify_bgp_convergence_from_running_config
-
-pytestmark = [pytest.mark.bgpd, pytest.mark.isisd]
-
-
-def build_topo(tgen):
-    r"""
-                 +---+
-                 | h1|
-                 +---+
-                   |
-                 +---+
-                 | r1|          AS 65100
-                 +---+
-                 /   \      _____________
-                /     \
-             +---+  +---+
-             | r2|  | r3|      rr1 is route-reflector
-             +---+  +---+        for r2 and r3
-                \     /
-                 \   /
-                 +---+
-                 |rr1|          AS 65000
-                 +---+
-                /   \
-               /     \
-             +---+  +---+
-             | r4|  | r5|    iBGP full-mesh between
-             +---+  +---+      rr1, r4, r5 and r6
-                \     /
-                 \   /
-                 +---+
-                 | r6|
-                 +---+
-                   |       _____________
-                   |
-                   |       +---+
-                 [sw1]-----|rs1|    AS 65200
-                  /\       +---+   rs1: route-server
-                 /  \
-                /    \     _____________
-             +---+  +---+
-             | r7|  | r8|        AS 65700 (r7)
-             +---+  +---+        AS 65800 (r8)
-               |      |
-             +---+  +---+
-             | h2|  | h3|
-             +---+  +---+
-    """
-
-    def connect_routers(tgen, left, right):
-        for rname in [left, right]:
-            if rname not in tgen.routers().keys():
-                tgen.add_router(rname)
-
-        switch = tgen.add_switch("s-{}-{}".format(left, right))
-        switch.add_link(tgen.gears[left], nodeif="eth-{}".format(right))
-        switch.add_link(tgen.gears[right], nodeif="eth-{}".format(left))
-
-    def connect_switchs(tgen, rname, switch):
-        if rname not in tgen.routers().keys():
-            tgen.add_router(rname)
-
-        switch.add_link(tgen.gears[rname], nodeif="eth-{}".format(switch.name))
-
-    connect_routers(tgen, "h1", "r1")
-    connect_routers(tgen, "r1", "r2")
-    connect_routers(tgen, "r1", "r3")
-    connect_routers(tgen, "r2", "rr1")
-    connect_routers(tgen, "r3", "rr1")
-    connect_routers(tgen, "rr1", "r4")
-    connect_routers(tgen, "rr1", "r5")
-    connect_routers(tgen, "r4", "r6")
-    connect_routers(tgen, "r5", "r6")
-
-    sw1 = tgen.add_switch("sw1")
-    connect_switchs(tgen, "r6", sw1)
-    connect_switchs(tgen, "rs1", sw1)
-    connect_switchs(tgen, "r7", sw1)
-    connect_switchs(tgen, "r8", sw1)
-
-    connect_routers(tgen, "r7", "h2")
-    connect_routers(tgen, "r8", "h3")
-
-
-def setup_module(mod):
-    "Sets up the pytest environment"
-
-    tgen = Topogen(build_topo, mod.__name__)
-    tgen.start_topology()
-    logger.info("setup_module")
-
-    for rname, router in tgen.routers().items():
-        router.load_config(
-            TopoRouter.RD_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname))
-        )
-        if "h" in rname:
-            # hosts
-            continue
-
-        router.load_config(
-            TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))
-        )
-
-        if rname in ["r1", "r7", "r8", "rs1"]:
-            # external routers
-            continue
-
-        router.load_config(
-            TopoRouter.RD_ISIS, os.path.join(CWD, "{}/isisd.conf".format(rname))
-        )
-
-    # Initialize all routers.
-    tgen.start_router()
-
-
-def teardown_module(_mod):
-    "Teardown the pytest environment"
-    tgen = get_topogen()
-    tgen.stop_topology()
-
-
-def test_bgp_convergence():
-    "Assert that BGP is converging."
-    tgen = get_topogen()
-    if tgen.routers_have_failure():
-        pytest.skip(tgen.errors)
-
-    logger.info("waiting for bgp peers to go up")
-
-    for rname in tgen.routers().keys():
-        if "h" in rname:
-            # hosts
-            continue
-        result = verify_bgp_convergence_from_running_config(tgen, dut=rname)
-        assert result is True, "BGP is not converging on {}".format(rname)
-
-
-def test_bgp_ipv4_nexthop_step1():
-    "Assert that BGP has correct ipv4 nexthops."
-    tgen = get_topogen()
-    if tgen.routers_have_failure():
-        pytest.skip(tgen.errors)
-
-    for rname, router in tgen.routers().items():
-        if "h" in rname:
-            # hosts
-            continue
-        if "rs1" in rname:
-            continue
-        ref_file = "{}/{}/bgp_ipv4.json".format(CWD, rname)
-        expected = json.loads(open(ref_file).read())
-        test_func = partial(
-            topotest.router_json_cmp,
-            router,
-            "show bgp ipv4 unicast json",
-            expected,
-        )
-        _, res = topotest.run_and_expect(test_func, None, count=30, wait=1)
-        assertmsg = "{}: BGP IPv4 Nexthop failure".format(rname)
-        assert res is None, assertmsg
-
-
-def test_bgp_ipv6_nexthop_step1():
-    "Assert that BGP has correct ipv6 nexthops."
-    tgen = get_topogen()
-    if tgen.routers_have_failure():
-        pytest.skip(tgen.errors)
-
-    for rname, router in tgen.routers().items():
-        if "h" in rname:
-            # hosts
-            continue
-        if "rs1" in rname:
-            continue
-        ref_file = "{}/{}/bgp_ipv6_step1.json".format(CWD, rname)
-        expected = json.loads(open(ref_file).read())
-        test_func = partial(
-            topotest.router_json_cmp,
-            router,
-            "show bgp ipv6 unicast json",
-            expected,
-        )
-        _, res = topotest.run_and_expect(test_func, None, count=30, wait=1)
-        assertmsg = "{}: BGP IPv6 Nexthop failure".format(rname)
-        assert res is None, assertmsg
-
-
-def test_bgp_ping_ok_step1():
-    "Check that h1 pings h2 and h3"
-    tgen = get_topogen()
-    if tgen.routers_have_failure():
-        pytest.skip(tgen.errors)
-
-    check_ping("h1", "192.168.7.1", True, 5, 1)
-    check_ping("h1", "fd00:700::1", True, 5, 1)
-    check_ping("h1", "192.168.8.1", True, 5, 1)
-    check_ping("h1", "fd00:800::1", True, 5, 1)
-
-
-def test_bgp_ipv6_nexthop_step2():
-    """
-    Remove IPv6 global on r1 and r7
-    Assert that BGP has correct ipv6 nexthops.
-    """
-
-    tgen = get_topogen()
-    if tgen.routers_have_failure():
-        pytest.skip(tgen.errors)
-
-    tgen.gears["r1"].vtysh_cmd(
-        """
-configure
-interface eth-r2
- no ipv6 address fd00:0:1::1/64
-!
-interface eth-r3
- no ipv6 address fd00:0:2::1/64
-"""
-    )
-
-    for rname, router in tgen.routers().items():
-        if "h" in rname:
-            # hosts
-            continue
-        if "rs1" in rname:
-            continue
-        ref_file = "{}/{}/bgp_ipv6_step2.json".format(CWD, rname)
-        expected = json.loads(open(ref_file).read())
-        test_func = partial(
-            topotest.router_json_cmp,
-            router,
-            "show bgp ipv6 unicast json",
-            expected,
-        )
-        _, res = topotest.run_and_expect(test_func, None, count=30, wait=1)
-        assertmsg = "{}: BGP IPv6 Nexthop failure".format(rname)
-        assert res is None, assertmsg
-
-
-def test_bgp_ping_ok_step2():
-    "Check that h1 pings h2 and h3"
-    tgen = get_topogen()
-    if tgen.routers_have_failure():
-        pytest.skip(tgen.errors)
-
-    check_ping("h1", "192.168.7.1", True, 5, 1)
-    check_ping("h1", "fd00:700::1", True, 5, 1)
-    check_ping("h1", "192.168.8.1", True, 5, 1)
-    check_ping("h1", "fd00:800::1", True, 5, 1)
-
-
-if __name__ == "__main__":
-    args = ["-s"] + sys.argv[1:]
-    sys.exit(pytest.main(args))