Skip to content

Commit 7184e7e

Browse files
committed
Merge branch 'bridge-iproute2-isolated-port-and-selftests'
Nikolay Aleksandrov says: ==================== bridge: iproute2 isolated port and selftests Add support to iproute2 for port isolation config and selftests for it. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents f744c4b + a14e9fa commit 7184e7e

File tree

2 files changed

+167
-6
lines changed

2 files changed

+167
-6
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

tools/testing/selftests/net/forwarding/lib.sh

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -659,30 +659,40 @@ multipath_eval()
659659
##############################################################################
660660
# Tests
661661

662-
ping_test()
662+
ping_do()
663663
{
664664
local if_name=$1
665665
local dip=$2
666666
local vrf_name
667667

668-
RET=0
669-
670668
vrf_name=$(master_name_get $if_name)
671669
ip vrf exec $vrf_name $PING $dip -c 10 -i 0.1 -w 2 &> /dev/null
670+
}
671+
672+
ping_test()
673+
{
674+
RET=0
675+
676+
ping_do $1 $2
672677
check_err $?
673678
log_test "ping"
674679
}
675680

676-
ping6_test()
681+
ping6_do()
677682
{
678683
local if_name=$1
679684
local dip=$2
680685
local vrf_name
681686

682-
RET=0
683-
684687
vrf_name=$(master_name_get $if_name)
685688
ip vrf exec $vrf_name $PING6 $dip -c 10 -i 0.1 -w 2 &> /dev/null
689+
}
690+
691+
ping6_test()
692+
{
693+
RET=0
694+
695+
ping6_do $1 $2
686696
check_err $?
687697
log_test "ping6"
688698
}

0 commit comments

Comments
 (0)