1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3 4# +----------------------------+ 5# | H1 (vrf) | 6# | + $h1.10 | +----------------------+ 7# | | 192.0.2.1/28 | | H2 (vrf) | 8# | | 2001:db8:1::1/64 | | + $h2 | 9# | | | | | 192.0.2.130/28 | 10# | + $h1 | | | 2001:db8:2::2/64 | 11# +---|------------------------+ +--|-------------------+ 12# | | 13# +---|--------------------------------------------------|-------------------+ 14# | | router (main VRF) | | 15# | +-|--------------------------+ + $swp2 | 16# | | + $swp1 BR1 (802.1q) | 192.0.2.129/28 | 17# | +-----+----------------------+ 2001:db8:2::1/64 | 18# | | | 19# | + br1.10 | 20# | 192.0.2.2/28 | 21# | 2001:db8:1::2/64 | 22# +--------------------------------------------------------------------------+ 23 24ALL_TESTS=" 25 ping_ipv4 26 ping_ipv6 27 pvid_set_unset 28 ping_ipv4 29 ping_ipv6 30 pvid_set_move 31 ping_ipv4 32 ping_ipv6 33" 34NUM_NETIFS=4 35source lib.sh 36 37h1_create() 38{ 39 simple_if_init $h1 40 vlan_create $h1 10 v$h1 192.0.2.1/28 2001:db8:1::1/64 41 ip -4 route add 192.0.2.128/28 vrf v$h1 nexthop via 192.0.2.2 42 ip -6 route add 2001:db8:2::/64 vrf v$h1 nexthop via 2001:db8:1::2 43} 44 45h1_destroy() 46{ 47 ip -6 route del 2001:db8:2::/64 vrf v$h1 48 ip -4 route del 192.0.2.128/28 vrf v$h1 49 vlan_destroy $h1 10 50 simple_if_fini $h1 51} 52 53h2_create() 54{ 55 simple_if_init $h2 192.0.2.130/28 2001:db8:2::2/64 56 ip -4 route add 192.0.2.0/28 vrf v$h2 nexthop via 192.0.2.129 57 ip -6 route add 2001:db8:1::/64 vrf v$h2 nexthop via 2001:db8:2::1 58} 59 60h2_destroy() 61{ 62 ip -6 route del 2001:db8:1::/64 vrf v$h2 63 ip -4 route del 192.0.2.0/28 vrf v$h2 64 simple_if_fini $h2 192.0.2.130/28 2001:db8:2::2/64 65} 66 67router_create() 68{ 69 ip link add name br1 address $(mac_get $swp1) \ 70 type bridge vlan_filtering 1 vlan_default_pvid 0 71 ip link set dev br1 up 72 73 ip link set dev $swp1 master br1 74 ip link set dev $swp1 up 75 76 ip link set dev $swp2 up 77 __addr_add_del $swp2 add 192.0.2.129/28 2001:db8:2::1/64 78 79 bridge vlan add dev br1 vid 10 self 80 bridge vlan add dev $swp1 vid 10 81 vlan_create br1 10 "" 192.0.2.2/28 2001:db8:1::2/64 82} 83 84router_destroy() 85{ 86 vlan_destroy br1 10 87 bridge vlan del dev $swp1 vid 10 88 bridge vlan del dev br1 vid 10 self 89 90 __addr_add_del $swp2 del 192.0.2.129/28 2001:db8:2::1/64 91 ip link set dev $swp2 down 92 93 ip link set dev $swp1 down 94 ip link set dev $swp1 nomaster 95 96 ip link del dev br1 97} 98 99setup_prepare() 100{ 101 h1=${NETIFS[p1]} 102 swp1=${NETIFS[p2]} 103 104 swp2=${NETIFS[p3]} 105 h2=${NETIFS[p4]} 106 107 vrf_prepare 108 109 h1_create 110 h2_create 111 112 router_create 113 114 forwarding_enable 115} 116 117pvid_set_unset() 118{ 119 log_info "Set and unset PVID on VLAN 10" 120 121 bridge vlan add dev br1 vid 10 pvid self 122 sleep 1 123 bridge vlan add dev br1 vid 10 self 124} 125 126pvid_set_move() 127{ 128 log_info "Set PVID on VLAN 10, then move it to VLAN 20" 129 130 bridge vlan add dev br1 vid 10 pvid self 131 sleep 1 132 bridge vlan add dev br1 vid 20 pvid self 133} 134 135shuffle_vlan() 136{ 137 log_info "" 138} 139 140cleanup() 141{ 142 pre_cleanup 143 144 forwarding_restore 145 146 router_destroy 147 148 h2_destroy 149 h1_destroy 150 151 vrf_cleanup 152} 153 154ping_ipv4() 155{ 156 ping_test $h1 192.0.2.130 157} 158 159ping_ipv6() 160{ 161 ping6_test $h1 2001:db8:2::2 162} 163 164trap cleanup EXIT 165 166setup_prepare 167setup_wait 168 169tests_run 170 171exit $EXIT_STATUS 172