File Index
Files and directories
Sign in
FILE

router_bridge.sh

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/net/forwarding/router_bridge.sh BASH
  1#!/bin/bash
  2# SPDX-License-Identifier: GPL-2.0
  3
  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_ipv4
 24	ping_ipv6
 25	config_remaster
 26	ping_ipv4
 27	ping_ipv6
 28	config_remove_pvid
 29	ping_ipv4_fails
 30	ping_ipv6_fails
 31	config_add_pvid
 32	ping_ipv4
 33	ping_ipv6
 34	config_late_pvid
 35	ping_ipv4
 36	ping_ipv6
 37"
 38NUM_NETIFS=4
 39source lib.sh
 40
 41h1_create()
 42{
 43	simple_if_init $h1 192.0.2.1/28 2001:db8:1::1/64
 44	ip -4 route add 192.0.2.128/28 vrf v$h1 nexthop via 192.0.2.2
 45	ip -6 route add 2001:db8:2::/64 vrf v$h1 nexthop via 2001:db8:1::2
 46}
 47
 48h1_destroy()
 49{
 50	ip -6 route del 2001:db8:2::/64 vrf v$h1
 51	ip -4 route del 192.0.2.128/28 vrf v$h1
 52	simple_if_fini $h1 192.0.2.1/28 2001:db8:1::1/64
 53}
 54
 55h2_create()
 56{
 57	simple_if_init $h2 192.0.2.130/28 2001:db8:2::2/64
 58	ip -4 route add 192.0.2.0/28 vrf v$h2 nexthop via 192.0.2.129
 59	ip -6 route add 2001:db8:1::/64 vrf v$h2 nexthop via 2001:db8:2::1
 60}
 61
 62h2_destroy()
 63{
 64	ip -6 route del 2001:db8:1::/64 vrf v$h2
 65	ip -4 route del 192.0.2.0/28 vrf v$h2
 66	simple_if_fini $h2 192.0.2.130/28 2001:db8:2::2/64
 67}
 68
 69router_create()
 70{
 71	ip link add name br1 address $(mac_get $swp1) \
 72		type bridge vlan_filtering 1
 73	ip link set dev br1 up
 74
 75	ip link set dev $swp1 master br1
 76	ip link set dev $swp1 up
 77	__addr_add_del br1 add 192.0.2.2/28 2001:db8:1::2/64
 78
 79	ip link set dev $swp2 up
 80	__addr_add_del $swp2 add 192.0.2.129/28 2001:db8:2::1/64
 81}
 82
 83router_destroy()
 84{
 85	__addr_add_del $swp2 del 192.0.2.129/28 2001:db8:2::1/64
 86	ip link set dev $swp2 down
 87
 88	__addr_add_del br1 del 192.0.2.2/28 2001:db8:1::2/64
 89	ip link set dev $swp1 down
 90	ip link set dev $swp1 nomaster
 91
 92	ip link del dev br1
 93}
 94
 95config_remaster()
 96{
 97	log_info "Remaster bridge slave"
 98
 99	ip link set dev $swp1 nomaster
100	sleep 2
101	ip link set dev $swp1 master br1
102}
103
104config_remove_pvid()
105{
106	log_info "Remove PVID from the bridge"
107
108	bridge vlan add dev br1 vid 1 self
109	sleep 2
110}
111
112config_add_pvid()
113{
114	log_info "Add PVID to the bridge"
115
116	bridge vlan add dev br1 vid 1 self pvid untagged
117	sleep 2
118}
119
120config_late_pvid()
121{
122	log_info "Add bridge PVID after enslaving port"
123
124	ip link set dev $swp1 nomaster
125	ip link set dev br1 type bridge vlan_default_pvid 0
126	sleep 2
127	ip link set dev $swp1 master br1
128	ip link set dev br1 type bridge vlan_default_pvid 1
129}
130
131setup_prepare()
132{
133	h1=${NETIFS[p1]}
134	swp1=${NETIFS[p2]}
135
136	swp2=${NETIFS[p3]}
137	h2=${NETIFS[p4]}
138
139	vrf_prepare
140
141	h1_create
142	h2_create
143
144	router_create
145
146	forwarding_enable
147}
148
149cleanup()
150{
151	pre_cleanup
152
153	forwarding_restore
154
155	router_destroy
156
157	h2_destroy
158	h1_destroy
159
160	vrf_cleanup
161}
162
163ping_ipv4()
164{
165	ping_test $h1 192.0.2.130
166}
167
168ping_ipv6()
169{
170	ping6_test $h1 2001:db8:2::2
171}
172
173ping_ipv4_fails()
174{
175	ping_test_fails $h1 192.0.2.130
176}
177
178ping_ipv6_fails()
179{
180	ping6_test_fails $h1 2001:db8:2::2
181}
182
183trap cleanup EXIT
184
185setup_prepare
186setup_wait
187
188tests_run
189
190exit $EXIT_STATUS
~/ Read-only file preview.