Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
fork
Configure Feed
Select the types of activity you want to include in your feed.
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