191 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4# +------------------------+ +----------------------+5# | H1 (vrf) | | H2 (vrf) |6# | + $h1 | | + $h2 |7# | | 192.0.2.1/28 | | | 192.0.2.130/28 |8# | | 2001:db8:1::1/64 | | | 2001:db8:2::2/64 |9# | | | | | |10# +----|-------------------+ +--|-------------------+11# | |12# +----|--------------------------------------------------|-------------------+13# | SW | | |14# | +--|-----------------------------+ + $swp2 |15# | | + $swp1 BR1 (802.1q) | 192.0.2.129/28 |16# | | 192.0.2.2/28 | 2001:db8:2::1/64 |17# | | 2001:db8:1::1/64 | |18# | | | |19# | +--------------------------------+ |20# +---------------------------------------------------------------------------+21 22ALL_TESTS="23 ping_ipv424 ping_ipv625 config_remaster26 ping_ipv427 ping_ipv628 config_remove_pvid29 ping_ipv4_fails30 ping_ipv6_fails31 config_add_pvid32 ping_ipv433 ping_ipv634 config_late_pvid35 ping_ipv436 ping_ipv637"38NUM_NETIFS=439source lib.sh40 41h1_create()42{43 simple_if_init $h1 192.0.2.1/28 2001:db8:1::1/6444 ip -4 route add 192.0.2.128/28 vrf v$h1 nexthop via 192.0.2.245 ip -6 route add 2001:db8:2::/64 vrf v$h1 nexthop via 2001:db8:1::246}47 48h1_destroy()49{50 ip -6 route del 2001:db8:2::/64 vrf v$h151 ip -4 route del 192.0.2.128/28 vrf v$h152 simple_if_fini $h1 192.0.2.1/28 2001:db8:1::1/6453}54 55h2_create()56{57 simple_if_init $h2 192.0.2.130/28 2001:db8:2::2/6458 ip -4 route add 192.0.2.0/28 vrf v$h2 nexthop via 192.0.2.12959 ip -6 route add 2001:db8:1::/64 vrf v$h2 nexthop via 2001:db8:2::160}61 62h2_destroy()63{64 ip -6 route del 2001:db8:1::/64 vrf v$h265 ip -4 route del 192.0.2.0/28 vrf v$h266 simple_if_fini $h2 192.0.2.130/28 2001:db8:2::2/6467}68 69router_create()70{71 ip link add name br1 address $(mac_get $swp1) \72 type bridge vlan_filtering 173 ip link set dev br1 up74 75 ip link set dev $swp1 master br176 ip link set dev $swp1 up77 __addr_add_del br1 add 192.0.2.2/28 2001:db8:1::2/6478 79 ip link set dev $swp2 up80 __addr_add_del $swp2 add 192.0.2.129/28 2001:db8:2::1/6481}82 83router_destroy()84{85 __addr_add_del $swp2 del 192.0.2.129/28 2001:db8:2::1/6486 ip link set dev $swp2 down87 88 __addr_add_del br1 del 192.0.2.2/28 2001:db8:1::2/6489 ip link set dev $swp1 down90 ip link set dev $swp1 nomaster91 92 ip link del dev br193}94 95config_remaster()96{97 log_info "Remaster bridge slave"98 99 ip link set dev $swp1 nomaster100 sleep 2101 ip link set dev $swp1 master br1102}103 104config_remove_pvid()105{106 log_info "Remove PVID from the bridge"107 108 bridge vlan add dev br1 vid 1 self109 sleep 2110}111 112config_add_pvid()113{114 log_info "Add PVID to the bridge"115 116 bridge vlan add dev br1 vid 1 self pvid untagged117 sleep 2118}119 120config_late_pvid()121{122 log_info "Add bridge PVID after enslaving port"123 124 ip link set dev $swp1 nomaster125 ip link set dev br1 type bridge vlan_default_pvid 0126 sleep 2127 ip link set dev $swp1 master br1128 ip link set dev br1 type bridge vlan_default_pvid 1129}130 131setup_prepare()132{133 h1=${NETIFS[p1]}134 swp1=${NETIFS[p2]}135 136 swp2=${NETIFS[p3]}137 h2=${NETIFS[p4]}138 139 vrf_prepare140 141 h1_create142 h2_create143 144 router_create145 146 forwarding_enable147}148 149cleanup()150{151 pre_cleanup152 153 forwarding_restore154 155 router_destroy156 157 h2_destroy158 h1_destroy159 160 vrf_cleanup161}162 163ping_ipv4()164{165 ping_test $h1 192.0.2.130166}167 168ping_ipv6()169{170 ping6_test $h1 2001:db8:2::2171}172 173ping_ipv4_fails()174{175 ping_test_fails $h1 192.0.2.130176}177 178ping_ipv6_fails()179{180 ping6_test_fails $h1 2001:db8:2::2181}182 183trap cleanup EXIT184 185setup_prepare186setup_wait187 188tests_run189 190exit $EXIT_STATUS191