]> Git Repo - linux.git/blob - tools/testing/selftests/net/forwarding/router_bridge_vlan.sh
x86/kaslr: Expose and use the end of the physical memory address space
[linux.git] / tools / testing / selftests / net / forwarding / router_bridge_vlan.sh
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
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
41 "
42 NUM_NETIFS=4
43 source lib.sh
44
45 h1_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
58 h1_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
71 h2_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
81 h2_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
91 router_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
111 router_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
125 setup_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
143 config_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
152 config_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
161 cleanup()
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
175 vlan()
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
187 ping_ipv4()
188 {
189         ping_test $h1.555 192.0.2.130
190 }
191
192 ping_ipv6()
193 {
194         ping6_test $h1.555 2001:db8:2::2
195 }
196
197 ping_ipv4_fails()
198 {
199         ping_test_fails $h1.555 192.0.2.130 ": via 555"
200 }
201
202 ping_ipv6_fails()
203 {
204         ping6_test_fails $h1.555 2001:db8:2::2 ": via 555"
205 }
206
207 ping_ipv4_777()
208 {
209         ping_test $h1.777 192.0.2.146 ": via 777"
210 }
211
212 ping_ipv6_777()
213 {
214         ping6_test $h1.777 2001:db8:4::2 ": via 777"
215 }
216
217 trap cleanup EXIT
218
219 setup_prepare
220 setup_wait
221
222 tests_run
223
224 exit $EXIT_STATUS
This page took 0.046714 seconds and 4 git commands to generate.