170 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4# +------------------------+ +----------------------+5# | H1 (vrf) | | H2 (vrf) |6# | + $h1.555 | | + $h2.777 |7# | | 192.0.2.1/28 | | | 192.0.2.18/28 |8# | | 2001:db8:1::1/64 | | | 2001:db8:2::2/64 |9# | | | | | |10# | + $h1 | | + $h2 |11# +----|-------------------+ +--|-------------------+12# | |13# +----|--------------------------------------------------|-------------------+14# | SW | | |15# | +--|--------------------------------------------------|-----------------+ |16# | | + $swp1 BR1 (802.1q) + $swp2 | |17# | | | |18# | +------+------------------------------------------+---------------------+ |19# | | | |20# | + br1.555 + br1.777 |21# | 192.0.2.2/28 192.0.2.17/28 |22# | 2001:db8:1::2/64 2001:db8:2::1/64 |23# +---------------------------------------------------------------------------+24 25ALL_TESTS="26 ping_ipv427 ping_ipv628 respin_config29 ping_ipv430 ping_ipv631"32NUM_NETIFS=433source lib.sh34 35h1_create()36{37 simple_if_init $h138 vlan_create $h1 555 v$h1 192.0.2.1/28 2001:db8:1::1/6439 ip -4 route add 192.0.2.16/28 vrf v$h1 nexthop via 192.0.2.240 ip -6 route add 2001:db8:2::/64 vrf v$h1 nexthop via 2001:db8:1::241}42 43h1_destroy()44{45 ip -6 route del 2001:db8:2::/64 vrf v$h146 ip -4 route del 192.0.2.16/28 vrf v$h147 vlan_destroy $h1 55548 simple_if_fini $h149}50 51h2_create()52{53 simple_if_init $h254 vlan_create $h2 777 v$h2 192.0.2.18/28 2001:db8:2::2/6455 ip -4 route add 192.0.2.0/28 vrf v$h2 nexthop via 192.0.2.1756 ip -6 route add 2001:db8:1::/64 vrf v$h2 nexthop via 2001:db8:2::157}58 59h2_destroy()60{61 ip -6 route del 2001:db8:1::/64 vrf v$h262 ip -4 route del 192.0.2.0/28 vrf v$h263 vlan_destroy $h2 77764 simple_if_fini $h265}66 67router_create()68{69 ip link add name br1 address $(mac_get $swp1) \70 type bridge vlan_filtering 171 ip link set dev br1 up72 73 ip link set dev $swp1 master br174 ip link set dev $swp2 master br175 ip link set dev $swp1 up76 ip link set dev $swp2 up77 78 bridge vlan add dev br1 vid 555 self79 bridge vlan add dev br1 vid 777 self80 bridge vlan add dev $swp1 vid 55581 bridge vlan add dev $swp2 vid 77782 83 vlan_create br1 555 "" 192.0.2.2/28 2001:db8:1::2/6484 vlan_create br1 777 "" 192.0.2.17/28 2001:db8:2::1/6485}86 87router_destroy()88{89 vlan_destroy br1 77790 vlan_destroy br1 55591 92 bridge vlan del dev $swp2 vid 77793 bridge vlan del dev $swp1 vid 55594 bridge vlan del dev br1 vid 777 self95 bridge vlan del dev br1 vid 555 self96 97 ip link set dev $swp2 down nomaster98 ip link set dev $swp1 down nomaster99 100 ip link set dev br1 down101 ip link del dev br1102}103 104setup_prepare()105{106 h1=${NETIFS[p1]}107 swp1=${NETIFS[p2]}108 109 swp2=${NETIFS[p3]}110 h2=${NETIFS[p4]}111 112 vrf_prepare113 114 h1_create115 h2_create116 117 router_create118 119 forwarding_enable120}121 122cleanup()123{124 pre_cleanup125 126 forwarding_restore127 128 router_destroy129 130 h2_destroy131 h1_destroy132 133 vrf_cleanup134}135 136ping_ipv4()137{138 ping_test $h1 192.0.2.18139}140 141ping_ipv6()142{143 ping6_test $h1 2001:db8:2::2144}145 146respin_config()147{148 log_info "Remaster bridge slave"149 150 ip link set dev $swp2 nomaster151 ip link set dev $swp1 nomaster152 153 sleep 2154 155 ip link set dev $swp1 master br1156 ip link set dev $swp2 master br1157 158 bridge vlan add dev $swp1 vid 555159 bridge vlan add dev $swp2 vid 777160}161 162trap cleanup EXIT163 164setup_prepare165setup_wait166 167tests_run168 169exit $EXIT_STATUS170