Merge tag 'trace-printf-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[drm/drm-misc.git] / tools / testing / selftests / net / forwarding / router_bridge_vlan.sh
blobb76a4a707a5b3883bde4ceedaaeab6d548fc428d
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0
4 # +------------------------------------------------+ +----------------------+
5 # | H1 (vrf) | | H2 (vrf) |
6 # | + $h1.555 + $h1.777 | | + $h2 |
7 # | | 192.0.2.1/28 | 192.0.2.17/28 | | | 192.0.2.130/28 |
8 # | | 2001:db8:1::1/64 | 2001:db8:3::1/64 | | | 192.0.2.146/28 |
9 # | | .-----------------' | | | 2001:db8:2::2/64 |
10 # | |/ | | | 2001:db8:4::2/64 |
11 # | + $h1 | | | |
12 # +----|-------------------------------------------+ +--|-------------------+
13 # | |
14 # +----|--------------------------------------------------|-------------------+
15 # | SW | | |
16 # | +--|-------------------------------+ + $swp2 |
17 # | | + $swp1 | 192.0.2.129/28 |
18 # | | vid 555 777 | 192.0.2.145/28 |
19 # | | | 2001:db8:2::1/64 |
20 # | | + BR1 (802.1q) | 2001:db8:4::1/64 |
21 # | | vid 555 pvid untagged | |
22 # | | 192.0.2.2/28 | |
23 # | | 192.0.2.18/28 | |
24 # | | 2001:db8:1::2/64 | |
25 # | | 2001:db8:3::2/64 | |
26 # | +----------------------------------+ |
27 # +---------------------------------------------------------------------------+
29 ALL_TESTS="
30 ping_ipv4
31 ping_ipv6
32 vlan
33 config_777
34 ping_ipv4_fails
35 ping_ipv6_fails
36 ping_ipv4_777
37 ping_ipv6_777
38 config_555
39 ping_ipv4
40 ping_ipv6
42 NUM_NETIFS=4
43 source lib.sh
45 h1_create()
47 simple_if_init $h1
49 vlan_create $h1 555 v$h1 192.0.2.1/28 2001:db8:1::1/64
50 ip -4 route add 192.0.2.128/28 vrf v$h1 nexthop via 192.0.2.2
51 ip -6 route add 2001:db8:2::/64 vrf v$h1 nexthop via 2001:db8:1::2
53 vlan_create $h1 777 v$h1 192.0.2.17/28 2001:db8:3::1/64
54 ip -4 route add 192.0.2.144/28 vrf v$h1 nexthop via 192.0.2.18
55 ip -6 route add 2001:db8:4::/64 vrf v$h1 nexthop via 2001:db8:3::2
58 h1_destroy()
60 ip -6 route del 2001:db8:4::/64 vrf v$h1
61 ip -4 route del 192.0.2.144/28 vrf v$h1
62 vlan_destroy $h1 777
64 ip -6 route del 2001:db8:2::/64 vrf v$h1
65 ip -4 route del 192.0.2.128/28 vrf v$h1
66 vlan_destroy $h1 555
68 simple_if_fini $h1
71 h2_create()
73 simple_if_init $h2 192.0.2.130/28 2001:db8:2::2/64 \
74 192.0.2.146/28 2001:db8:4::2/64
75 ip -4 route add 192.0.2.0/28 vrf v$h2 nexthop via 192.0.2.129
76 ip -4 route add 192.0.2.16/28 vrf v$h2 nexthop via 192.0.2.145
77 ip -6 route add 2001:db8:1::/64 vrf v$h2 nexthop via 2001:db8:2::1
78 ip -6 route add 2001:db8:3::/64 vrf v$h2 nexthop via 2001:db8:4::1
81 h2_destroy()
83 ip -6 route del 2001:db8:3::/64 vrf v$h2
84 ip -6 route del 2001:db8:1::/64 vrf v$h2
85 ip -4 route del 192.0.2.16/28 vrf v$h2
86 ip -4 route del 192.0.2.0/28 vrf v$h2
87 simple_if_fini $h2 192.0.2.146/28 2001:db8:4::2/64 \
88 192.0.2.130/28 2001:db8:2::2/64
91 router_create()
93 ip link add name br1 type bridge vlan_filtering 1 vlan_default_pvid 0
94 ip link set dev br1 up
96 ip link set dev $swp1 master br1
97 ip link set dev $swp1 up
99 bridge vlan add dev br1 vid 555 self pvid untagged
100 bridge vlan add dev $swp1 vid 555
101 bridge vlan add dev $swp1 vid 777
103 __addr_add_del br1 add 192.0.2.2/28 2001:db8:1::2/64
104 __addr_add_del br1 add 192.0.2.18/28 2001:db8:3::2/64
106 ip link set dev $swp2 up
107 __addr_add_del $swp2 add 192.0.2.129/28 2001:db8:2::1/64
108 __addr_add_del $swp2 add 192.0.2.145/28 2001:db8:4::1/64
111 router_destroy()
113 __addr_add_del $swp2 del 192.0.2.145/28 2001:db8:4::1/64
114 __addr_add_del $swp2 del 192.0.2.129/28 2001:db8:2::1/64
115 ip link set dev $swp2 down
117 __addr_add_del br1 del 192.0.2.18/28 2001:db8:3::2/64
118 __addr_add_del br1 del 192.0.2.2/28 2001:db8:1::2/64
119 ip link set dev $swp1 down
120 ip link set dev $swp1 nomaster
122 ip link del dev br1
125 setup_prepare()
127 h1=${NETIFS[p1]}
128 swp1=${NETIFS[p2]}
130 swp2=${NETIFS[p3]}
131 h2=${NETIFS[p4]}
133 vrf_prepare
135 h1_create
136 h2_create
138 router_create
140 forwarding_enable
143 config_555()
145 log_info "Configure VLAN 555 as PVID"
147 bridge vlan add dev br1 vid 555 self pvid untagged
148 bridge vlan del dev br1 vid 777 self
149 sleep 2
152 config_777()
154 log_info "Configure VLAN 777 as PVID"
156 bridge vlan add dev br1 vid 777 self pvid untagged
157 bridge vlan del dev br1 vid 555 self
158 sleep 2
161 cleanup()
163 pre_cleanup
165 forwarding_restore
167 router_destroy
169 h2_destroy
170 h1_destroy
172 vrf_cleanup
175 vlan()
177 RET=0
179 bridge vlan add dev br1 vid 333 self
180 check_err $? "Can't add a non-PVID VLAN"
181 bridge vlan del dev br1 vid 333 self
182 check_err $? "Can't remove a non-PVID VLAN"
184 log_test "vlan"
187 ping_ipv4()
189 ping_test $h1.555 192.0.2.130
192 ping_ipv6()
194 ping6_test $h1.555 2001:db8:2::2
197 ping_ipv4_fails()
199 ping_test_fails $h1.555 192.0.2.130 ": via 555"
202 ping_ipv6_fails()
204 ping6_test_fails $h1.555 2001:db8:2::2 ": via 555"
207 ping_ipv4_777()
209 ping_test $h1.777 192.0.2.146 ": via 777"
212 ping_ipv6_777()
214 ping6_test $h1.777 2001:db8:4::2 ": via 777"
217 trap cleanup EXIT
219 setup_prepare
220 setup_wait
222 tests_run
224 exit $EXIT_STATUS