~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/net/forwarding/router_bridge_vlan.sh

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php