]>
git.proxmox.com Git - mirror_frr.git/blob - tests/topotests/bgp_vpn_5549_route_map/test_bgp_vpn_5549_route_map.py
2 # SPDX-License-Identifier: ISC
5 # Copyright (c) 2022 by
6 # Donatas Abraitis <donatas@opensourcerouting.org>
10 Check if we can override VPN underlay next-hop from PE1 to PE2.
19 CWD
= os
.path
.dirname(os
.path
.realpath(__file__
))
20 sys
.path
.append(os
.path
.join(CWD
, "../"))
22 # pylint: disable=C0413
23 from lib
import topotest
24 from lib
.topogen
import Topogen
, TopoRouter
, get_topogen
25 from lib
.common_config
import step
27 pytestmark
= [pytest
.mark
.bgpd
]
31 tgen
.add_router("cpe1")
32 tgen
.add_router("cpe2")
33 tgen
.add_router("pe1")
34 tgen
.add_router("pe2")
36 switch
= tgen
.add_switch("s1")
37 switch
.add_link(tgen
.gears
["cpe1"])
38 switch
.add_link(tgen
.gears
["pe1"])
40 switch
= tgen
.add_switch("s2")
41 switch
.add_link(tgen
.gears
["pe1"])
42 switch
.add_link(tgen
.gears
["pe2"])
44 switch
= tgen
.add_switch("s3")
45 switch
.add_link(tgen
.gears
["pe2"])
46 switch
.add_link(tgen
.gears
["cpe2"])
49 def setup_module(mod
):
50 tgen
= Topogen(build_topo
, mod
.__name
__)
53 pe1
= tgen
.gears
["pe1"]
54 pe2
= tgen
.gears
["pe2"]
56 pe1
.run("ip link add RED type vrf table 1001")
57 pe1
.run("ip link set up dev RED")
58 pe2
.run("ip link add RED type vrf table 1001")
59 pe2
.run("ip link set up dev RED")
60 pe1
.run("ip link set pe1-eth0 master RED")
61 pe2
.run("ip link set pe2-eth1 master RED")
63 pe1
.run("sysctl -w net.ipv4.ip_forward=1")
64 pe2
.run("sysctl -w net.ipv4.ip_forward=1")
65 pe1
.run("sysctl -w net.mpls.conf.pe1-eth0.input=1")
66 pe2
.run("sysctl -w net.mpls.conf.pe2-eth1.input=1")
68 router_list
= tgen
.routers()
70 for i
, (rname
, router
) in enumerate(router_list
.items(), 1):
72 TopoRouter
.RD_ZEBRA
, os
.path
.join(CWD
, "{}/zebra.conf".format(rname
))
75 TopoRouter
.RD_BGP
, os
.path
.join(CWD
, "{}/bgpd.conf".format(rname
))
78 TopoRouter
.RD_OSPF6
, os
.path
.join(CWD
, "{}/ospf6d.conf".format(rname
))
81 TopoRouter
.RD_LDP
, os
.path
.join(CWD
, "{}/ldpd.conf".format(rname
))
87 def teardown_module(mod
):
92 def test_bgp_vpn_5549():
95 pe2
= tgen
.gears
["pe2"]
97 if tgen
.routers_have_failure():
98 pytest
.skip(tgen
.errors
)
100 def _bgp_vpn_nexthop_changed():
101 output
= json
.loads(pe2
.vtysh_cmd("show bgp ipv4 vpn json"))
104 "routeDistinguishers": {
107 {"valid": True, "nexthops": [{"ip": "2001:db8::1"}]}
110 {"valid": True, "nexthops": [{"ip": "2001:db8:1::1"}]}
116 return topotest
.json_cmp(output
, expected
)
118 test_func
= functools
.partial(_bgp_vpn_nexthop_changed
)
119 _
, result
= topotest
.run_and_expect(test_func
, None, count
=60, wait
=0.5)
120 assert result
is None, "Failed overriding IPv6 next-hop for VPN underlay"
123 if __name__
== "__main__":
124 args
= ["-s"] + sys
.argv
[1:]
125 sys
.exit(pytest
.main(args
))