switch = tgen.add_switch("s4")
switch.add_link(tgen.gears["r2"])
+ switch = tgen.add_switch("s5")
+ switch.add_link(tgen.gears["r1"])
+
+ switch = tgen.add_switch("s6")
+ switch.add_link(tgen.gears["r2"])
+
+ switch = tgen.add_switch("s7")
+ switch.add_link(tgen.gears["r1"])
+
+ switch = tgen.add_switch("s8")
+ switch.add_link(tgen.gears["r2"])
+
def _populate_iface():
tgen = get_topogen()
"ip link set dev vrf1 up",
"ip link set dev {0}-eth1 master vrf1",
"echo 1 > /proc/sys/net/mpls/conf/vrf1/input",
- ]
- cmds_list_extra = [
"ip link add vrf2 type vrf table 20",
"ip link set dev vrf2 up",
"ip link set dev {0}-eth2 master vrf2",
"echo 1 > /proc/sys/net/mpls/conf/vrf2/input",
+ "ip link add vrf3 type vrf table 30",
+ "ip link set dev vrf3 up",
+ "ip link set dev {0}-eth3 master vrf3",
+ "echo 1 > /proc/sys/net/mpls/conf/vrf3/input",
+ "ip link add vrf4 type vrf table 40",
+ "ip link set dev vrf4 up",
+ "ip link set dev {0}-eth4 master vrf4",
+ "echo 1 > /proc/sys/net/mpls/conf/vrf4/input",
]
for cmd in cmds_list:
output = tgen.net["r2"].cmd(cmd.format("r2", "2", "1"))
logger.info("output: " + output)
- for cmd in cmds_list_extra:
- input = cmd.format("r2", "2", "1")
- logger.info("input: " + cmd)
- output = tgen.net["r2"].cmd(cmd.format("r2", "2", "1"))
- logger.info("output: " + output)
-
def setup_module(mod):
"Sets up the pytest environment"
check_show_bgp_ipv4_vpn("r2", "ipv4_vpn_routes_all.json")
+def test_bgp_no_retain_step3():
+ """
+ Apply and check no bgp retain route-target all on r1
+ """
+ rname = "r1"
+
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+
+ router = tgen.gears["r1"]
+ router.vtysh_cmd(
+ "configure\nrouter bgp 65500\naddress-family ipv4 vpn\nno bgp retain route-target all\n"
+ )
+
+ check_show_bgp_ipv4_vpn(rname, "ipv4_vpn_routes_no_retain_init.json")
+ check_show_bgp_ipv4_vpn("r2", "ipv4_vpn_routes_all.json")
+
+
+def test_bgp_no_retain_add_vrf2_step4():
+ """
+ Add vrf2 on r1 and check bgp vpnv4 table
+ """
+
+ rname = "r1"
+ cfg = """
+configure
+router bgp 65500 vrf vrf2
+ bgp router-id 192.0.2.1
+ address-family ipv4 unicast
+ redistribute connected
+ label vpn export 102
+ rd vpn export 192.0.2.1:200
+ rt vpn import 192.0.2.2:200
+ import vpn
+ exit-address-family
+!
+"""
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+
+ router = tgen.gears[rname]
+ router.vtysh_cmd(cfg)
+
+ check_show_bgp_ipv4_vpn(rname, "ipv4_vpn_routes_no_retain_init_plus_r2_vrf2.json")
+ check_show_bgp_ipv4_vpn("r2", "ipv4_vpn_routes_all.json")
+
+
+def test_bgp_no_retain_unimport_vrf2_step5():
+ """
+ Unimport to vrf2 on r1 and check bgp vpnv4 table
+ """
+
+ rname = "r1"
+ cfg = """
+configure
+router bgp 65500 vrf vrf2
+ address-family ipv4 unicast
+ no import vpn
+ exit-address-family
+!
+"""
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+
+ router = tgen.gears[rname]
+ router.vtysh_cmd(cfg)
+
+ check_show_bgp_ipv4_vpn(rname, "ipv4_vpn_routes_no_retain_init.json")
+ check_show_bgp_ipv4_vpn("r2", "ipv4_vpn_routes_all.json")
+
+
+def test_bgp_no_retain_import_vrf2_step6():
+ """
+ Re-import to vrf2 on r1 and check bgp vpnv4 table
+ """
+
+ rname = "r1"
+ cfg = """
+configure
+router bgp 65500 vrf vrf2
+ address-family ipv4 unicast
+ import vpn
+ exit-address-family
+!
+"""
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+
+ router = tgen.gears[rname]
+ router.vtysh_cmd(cfg)
+
+ check_show_bgp_ipv4_vpn(rname, "ipv4_vpn_routes_no_retain_init_plus_r2_vrf2.json")
+ check_show_bgp_ipv4_vpn("r2", "ipv4_vpn_routes_all.json")
+
+
+def test_bgp_no_retain_import_vrf1_step7():
+ """
+ Import r2 vrf1 into r1 vrf2 and check bgp vpnv4 table
+ """
+
+ rname = "r1"
+ cfg = """
+configure
+router bgp 65500 vrf vrf2
+ address-family ipv4 unicast
+ rt vpn import 192.0.2.1:100
+ exit-address-family
+!
+"""
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+
+ router = tgen.gears[rname]
+ router.vtysh_cmd(cfg)
+
+ check_show_bgp_ipv4_vpn(rname, "ipv4_vpn_routes_no_retain_init.json")
+ check_show_bgp_ipv4_vpn("r2", "ipv4_vpn_routes_all.json")
+
+
+def test_bgp_no_retain_import_vrf3_step8():
+ """
+ Import r2 vrf3 into r1 vrf2 and check bgp vpnv4 table
+ """
+
+ rname = "r1"
+ cfg = """
+configure
+router bgp 65500 vrf vrf2
+ address-family ipv4 unicast
+ rt vpn import 192.0.2.2:300
+ exit-address-family
+!
+"""
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+
+ router = tgen.gears[rname]
+ router.vtysh_cmd(cfg)
+
+ check_show_bgp_ipv4_vpn(rname, "ipv4_vpn_routes_no_retain_init_plus_r2_vrf3.json")
+ check_show_bgp_ipv4_vpn("r2", "ipv4_vpn_routes_all.json")
+
+
+def test_bgp_no_retain_unimport_vrf3_step9():
+ """
+ Un-import r2 vrf3 into r1 vrf2 and check bgp vpnv4 table
+ """
+
+ rname = "r1"
+ cfg = """
+configure
+router bgp 65500 vrf vrf2
+ address-family ipv4 unicast
+ no rt vpn import 192.0.2.2:300
+ exit-address-family
+!
+"""
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+
+ router = tgen.gears[rname]
+ router.vtysh_cmd(cfg)
+
+ check_show_bgp_ipv4_vpn(rname, "ipv4_vpn_routes_no_retain_init.json")
+ check_show_bgp_ipv4_vpn("r2", "ipv4_vpn_routes_all.json")
+
+
+def test_bgp_no_retain_import_vrf3_step10():
+ """
+ Import r2 vrf3 into r1 vrf2 and check bgp vpnv4 table
+ """
+
+ rname = "r1"
+ cfg = """
+configure
+router bgp 65500 vrf vrf2
+ address-family ipv4 unicast
+ rt vpn import 192.0.2.2:300
+ exit-address-family
+!
+"""
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+
+ router = tgen.gears[rname]
+ router.vtysh_cmd(cfg)
+
+ check_show_bgp_ipv4_vpn(rname, "ipv4_vpn_routes_no_retain_init_plus_r2_vrf3.json")
+ check_show_bgp_ipv4_vpn("r2", "ipv4_vpn_routes_all.json")
+
+
+def test_bgp_no_retain_remove_vrf2_step11():
+ """
+ Import r2 vrf3 into r1 vrf2 and check bgp vpnv4 table
+ """
+
+ rname = "r1"
+ cfg = """
+configure
+no router bgp 65500 vrf vrf2
+"""
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+
+ router = tgen.gears[rname]
+ router.vtysh_cmd(cfg)
+
+ check_show_bgp_ipv4_vpn(rname, "ipv4_vpn_routes_no_retain_init.json")
+ check_show_bgp_ipv4_vpn("r2", "ipv4_vpn_routes_all.json")
+
+
+def test_bgp_retain_step12():
+ """
+ Configure retain and check bgp vpnv4 table
+ """
+
+ rname = "r1"
+ cfg = """
+configure
+router bgp 65500
+ address-family ipv4 vpn
+ bgp retain route-target all
+"""
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+
+ router = tgen.gears[rname]
+ router.vtysh_cmd(cfg)
+
+ check_show_bgp_ipv4_vpn(rname, "ipv4_vpn_routes_all.json")
+ check_show_bgp_ipv4_vpn("r2", "ipv4_vpn_routes_all.json")
+
+
def test_memory_leak():
"Run the memory leak test and report results."
tgen = get_topogen()