Skip to content

Commit a14e9fa

Browse files
Nikolay Aleksandrovdavem330
authored andcommitted
selftests: forwarding: test for bridge port isolation
This test checks if the bridge port isolation feature works as expected by performing ping/ping6 tests between hosts that are isolated (should not work) and between an isolated and non-isolated hosts (should work). Same test is performed for flooding from and to isolated and non-isolated ports. Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 967450c commit a14e9fa

File tree

1 file changed

+151
-0
lines changed

1 file changed

+151
-0
lines changed
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
#!/bin/bash
2+
# SPDX-License-Identifier: GPL-2.0
3+
4+
ALL_TESTS="ping_ipv4 ping_ipv6 flooding"
5+
NUM_NETIFS=6
6+
CHECK_TC="yes"
7+
source lib.sh
8+
9+
h1_create()
10+
{
11+
simple_if_init $h1 192.0.2.1/24 2001:db8:1::1/64
12+
}
13+
14+
h1_destroy()
15+
{
16+
simple_if_fini $h1 192.0.2.1/24 2001:db8:1::1/64
17+
}
18+
19+
h2_create()
20+
{
21+
simple_if_init $h2 192.0.2.2/24 2001:db8:1::2/64
22+
}
23+
24+
h2_destroy()
25+
{
26+
simple_if_fini $h2 192.0.2.2/24 2001:db8:1::2/64
27+
}
28+
29+
h3_create()
30+
{
31+
simple_if_init $h3 192.0.2.3/24 2001:db8:1::3/64
32+
}
33+
34+
h3_destroy()
35+
{
36+
simple_if_fini $h3 192.0.2.3/24 2001:db8:1::3/64
37+
}
38+
39+
switch_create()
40+
{
41+
ip link add dev br0 type bridge
42+
43+
ip link set dev $swp1 master br0
44+
ip link set dev $swp2 master br0
45+
ip link set dev $swp3 master br0
46+
47+
ip link set dev $swp1 type bridge_slave isolated on
48+
check_err $? "Can't set isolation on port $swp1"
49+
ip link set dev $swp2 type bridge_slave isolated on
50+
check_err $? "Can't set isolation on port $swp2"
51+
ip link set dev $swp3 type bridge_slave isolated off
52+
check_err $? "Can't disable isolation on port $swp3"
53+
54+
ip link set dev br0 up
55+
ip link set dev $swp1 up
56+
ip link set dev $swp2 up
57+
ip link set dev $swp3 up
58+
}
59+
60+
switch_destroy()
61+
{
62+
ip link set dev $swp3 down
63+
ip link set dev $swp2 down
64+
ip link set dev $swp1 down
65+
66+
ip link del dev br0
67+
}
68+
69+
setup_prepare()
70+
{
71+
h1=${NETIFS[p1]}
72+
swp1=${NETIFS[p2]}
73+
74+
swp2=${NETIFS[p3]}
75+
h2=${NETIFS[p4]}
76+
77+
swp3=${NETIFS[p5]}
78+
h3=${NETIFS[p6]}
79+
80+
vrf_prepare
81+
82+
h1_create
83+
h2_create
84+
h3_create
85+
86+
switch_create
87+
}
88+
89+
cleanup()
90+
{
91+
pre_cleanup
92+
93+
switch_destroy
94+
95+
h3_destroy
96+
h2_destroy
97+
h1_destroy
98+
99+
vrf_cleanup
100+
}
101+
102+
ping_ipv4()
103+
{
104+
RET=0
105+
ping_do $h1 192.0.2.2
106+
check_fail $? "Ping worked when it should not have"
107+
108+
RET=0
109+
ping_do $h3 192.0.2.2
110+
check_err $? "Ping didn't work when it should have"
111+
112+
log_test "Isolated port ping"
113+
}
114+
115+
ping_ipv6()
116+
{
117+
RET=0
118+
ping6_do $h1 2001:db8:1::2
119+
check_fail $? "Ping6 worked when it should not have"
120+
121+
RET=0
122+
ping6_do $h3 2001:db8:1::2
123+
check_err $? "Ping6 didn't work when it should have"
124+
125+
log_test "Isolated port ping6"
126+
}
127+
128+
flooding()
129+
{
130+
local mac=de:ad:be:ef:13:37
131+
local ip=192.0.2.100
132+
133+
RET=0
134+
flood_test_do false $mac $ip $h1 $h2
135+
check_err $? "Packet was flooded when it should not have been"
136+
137+
RET=0
138+
flood_test_do true $mac $ip $h3 $h2
139+
check_err $? "Packet was not flooded when it should have been"
140+
141+
log_test "Isolated port flooding"
142+
}
143+
144+
trap cleanup EXIT
145+
146+
setup_prepare
147+
setup_wait
148+
149+
tests_run
150+
151+
exit $EXIT_STATUS

0 commit comments

Comments
 (0)