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.sh
blob0182eb2abfa68ffc15a74ec7d72b976f6ebd5ff6
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0
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 # +---------------------------------------------------------------------------+
22 ALL_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
38 NUM_NETIFS=4
39 source lib.sh
41 h1_create()
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
48 h1_destroy()
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
55 h2_create()
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
62 h2_destroy()
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
69 router_create()
71 ip link add name br1 address $(mac_get $swp1) \
72 type bridge vlan_filtering 1
73 ip link set dev br1 up
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
79 ip link set dev $swp2 up
80 __addr_add_del $swp2 add 192.0.2.129/28 2001:db8:2::1/64
83 router_destroy()
85 __addr_add_del $swp2 del 192.0.2.129/28 2001:db8:2::1/64
86 ip link set dev $swp2 down
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
92 ip link del dev br1
95 config_remaster()
97 log_info "Remaster bridge slave"
99 ip link set dev $swp1 nomaster
100 sleep 2
101 ip link set dev $swp1 master br1
104 config_remove_pvid()
106 log_info "Remove PVID from the bridge"
108 bridge vlan add dev br1 vid 1 self
109 sleep 2
112 config_add_pvid()
114 log_info "Add PVID to the bridge"
116 bridge vlan add dev br1 vid 1 self pvid untagged
117 sleep 2
120 config_late_pvid()
122 log_info "Add bridge PVID after enslaving port"
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
131 setup_prepare()
133 h1=${NETIFS[p1]}
134 swp1=${NETIFS[p2]}
136 swp2=${NETIFS[p3]}
137 h2=${NETIFS[p4]}
139 vrf_prepare
141 h1_create
142 h2_create
144 router_create
146 forwarding_enable
149 cleanup()
151 pre_cleanup
153 forwarding_restore
155 router_destroy
157 h2_destroy
158 h1_destroy
160 vrf_cleanup
163 ping_ipv4()
165 ping_test $h1 192.0.2.130
168 ping_ipv6()
170 ping6_test $h1 2001:db8:2::2
173 ping_ipv4_fails()
175 ping_test_fails $h1 192.0.2.130
178 ping_ipv6_fails()
180 ping6_test_fails $h1 2001:db8:2::2
183 trap cleanup EXIT
185 setup_prepare
186 setup_wait
188 tests_run
190 exit $EXIT_STATUS