File Index
Files and directories
Sign in
FILE

router_bridge_vlan.sh

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/net/forwarding/router_bridge_vlan.sh BASH
  1#!/bin/bash
  2# SPDX-License-Identifier: GPL-2.0
  3
  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# +---------------------------------------------------------------------------+
 28
 29ALL_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
 41"
 42NUM_NETIFS=4
 43source lib.sh
 44
 45h1_create()
 46{
 47	simple_if_init $h1
 48
 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
 52
 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
 56}
 57
 58h1_destroy()
 59{
 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
 63
 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
 67
 68	simple_if_fini $h1
 69}
 70
 71h2_create()
 72{
 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
 79}
 80
 81h2_destroy()
 82{
 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
 89}
 90
 91router_create()
 92{
 93	ip link add name br1 type bridge vlan_filtering 1 vlan_default_pvid 0
 94	ip link set dev br1 up
 95
 96	ip link set dev $swp1 master br1
 97	ip link set dev $swp1 up
 98
 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
102
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
105
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
109}
110
111router_destroy()
112{
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
116
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
121
122	ip link del dev br1
123}
124
125setup_prepare()
126{
127	h1=${NETIFS[p1]}
128	swp1=${NETIFS[p2]}
129
130	swp2=${NETIFS[p3]}
131	h2=${NETIFS[p4]}
132
133	vrf_prepare
134
135	h1_create
136	h2_create
137
138	router_create
139
140	forwarding_enable
141}
142
143config_555()
144{
145	log_info "Configure VLAN 555 as PVID"
146
147	bridge vlan add dev br1 vid 555 self pvid untagged
148	bridge vlan del dev br1 vid 777 self
149	sleep 2
150}
151
152config_777()
153{
154	log_info "Configure VLAN 777 as PVID"
155
156	bridge vlan add dev br1 vid 777 self pvid untagged
157	bridge vlan del dev br1 vid 555 self
158	sleep 2
159}
160
161cleanup()
162{
163	pre_cleanup
164
165	forwarding_restore
166
167	router_destroy
168
169	h2_destroy
170	h1_destroy
171
172	vrf_cleanup
173}
174
175vlan()
176{
177	RET=0
178
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"
183
184	log_test "vlan"
185}
186
187ping_ipv4()
188{
189	ping_test $h1.555 192.0.2.130
190}
191
192ping_ipv6()
193{
194	ping6_test $h1.555 2001:db8:2::2
195}
196
197ping_ipv4_fails()
198{
199	ping_test_fails $h1.555 192.0.2.130 ": via 555"
200}
201
202ping_ipv6_fails()
203{
204	ping6_test_fails $h1.555 2001:db8:2::2 ": via 555"
205}
206
207ping_ipv4_777()
208{
209	ping_test $h1.777 192.0.2.146 ": via 777"
210}
211
212ping_ipv6_777()
213{
214	ping6_test $h1.777 2001:db8:4::2 ": via 777"
215}
216
217trap cleanup EXIT
218
219setup_prepare
220setup_wait
221
222tests_run
223
224exit $EXIT_STATUS
~/ Read-only file preview.