Skip to content

Commit 246af95

Browse files
liuhangbinPaolo Abeni
authored andcommitted
selftests: bonding: add macvlan over bond testing
Add a macvlan over bonding test with mode active-backup, balance-tlb and balance-alb. ]# ./bond_macvlan.sh TEST: active-backup: IPv4: client->server [ OK ] TEST: active-backup: IPv6: client->server [ OK ] TEST: active-backup: IPv4: client->macvlan_1 [ OK ] TEST: active-backup: IPv6: client->macvlan_1 [ OK ] TEST: active-backup: IPv4: client->macvlan_2 [ OK ] TEST: active-backup: IPv6: client->macvlan_2 [ OK ] TEST: active-backup: IPv4: macvlan_1->macvlan_2 [ OK ] TEST: active-backup: IPv6: macvlan_1->macvlan_2 [ OK ] TEST: active-backup: IPv4: server->client [ OK ] TEST: active-backup: IPv6: server->client [ OK ] TEST: active-backup: IPv4: macvlan_1->client [ OK ] TEST: active-backup: IPv6: macvlan_1->client [ OK ] TEST: active-backup: IPv4: macvlan_2->client [ OK ] TEST: active-backup: IPv6: macvlan_2->client [ OK ] TEST: active-backup: IPv4: macvlan_2->macvlan_2 [ OK ] TEST: active-backup: IPv6: macvlan_2->macvlan_2 [ OK ] [...] TEST: balance-alb: IPv4: client->server [ OK ] TEST: balance-alb: IPv6: client->server [ OK ] TEST: balance-alb: IPv4: client->macvlan_1 [ OK ] TEST: balance-alb: IPv6: client->macvlan_1 [ OK ] TEST: balance-alb: IPv4: client->macvlan_2 [ OK ] TEST: balance-alb: IPv6: client->macvlan_2 [ OK ] TEST: balance-alb: IPv4: macvlan_1->macvlan_2 [ OK ] TEST: balance-alb: IPv6: macvlan_1->macvlan_2 [ OK ] TEST: balance-alb: IPv4: server->client [ OK ] TEST: balance-alb: IPv6: server->client [ OK ] TEST: balance-alb: IPv4: macvlan_1->client [ OK ] TEST: balance-alb: IPv6: macvlan_1->client [ OK ] TEST: balance-alb: IPv4: macvlan_2->client [ OK ] TEST: balance-alb: IPv6: macvlan_2->client [ OK ] TEST: balance-alb: IPv4: macvlan_2->macvlan_2 [ OK ] TEST: balance-alb: IPv6: macvlan_2->macvlan_2 [ OK ] Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
1 parent 27aa43f commit 246af95

File tree

2 files changed

+101
-1
lines changed

2 files changed

+101
-1
lines changed

tools/testing/selftests/drivers/net/bonding/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ TEST_PROGS := \
99
mode-1-recovery-updelay.sh \
1010
mode-2-recovery-updelay.sh \
1111
bond_options.sh \
12-
bond-eth-type-change.sh
12+
bond-eth-type-change.sh \
13+
bond_macvlan.sh
1314

1415
TEST_FILES := \
1516
lag_lib.sh \
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
#!/bin/bash
2+
# SPDX-License-Identifier: GPL-2.0
3+
#
4+
# Test macvlan over balance-alb
5+
6+
lib_dir=$(dirname "$0")
7+
source ${lib_dir}/bond_topo_2d1c.sh
8+
9+
m1_ns="m1-$(mktemp -u XXXXXX)"
10+
m2_ns="m1-$(mktemp -u XXXXXX)"
11+
m1_ip4="192.0.2.11"
12+
m1_ip6="2001:db8::11"
13+
m2_ip4="192.0.2.12"
14+
m2_ip6="2001:db8::12"
15+
16+
cleanup()
17+
{
18+
ip -n ${m1_ns} link del macv0
19+
ip netns del ${m1_ns}
20+
ip -n ${m2_ns} link del macv0
21+
ip netns del ${m2_ns}
22+
23+
client_destroy
24+
server_destroy
25+
gateway_destroy
26+
}
27+
28+
check_connection()
29+
{
30+
local ns=${1}
31+
local target=${2}
32+
local message=${3:-"macvlan_over_bond"}
33+
RET=0
34+
35+
36+
ip netns exec ${ns} ping ${target} -c 4 -i 0.1 &>/dev/null
37+
check_err $? "ping failed"
38+
log_test "$mode: $message"
39+
}
40+
41+
macvlan_over_bond()
42+
{
43+
local param="$1"
44+
RET=0
45+
46+
# setup new bond mode
47+
bond_reset "${param}"
48+
49+
ip -n ${s_ns} link add link bond0 name macv0 type macvlan mode bridge
50+
ip -n ${s_ns} link set macv0 netns ${m1_ns}
51+
ip -n ${m1_ns} link set dev macv0 up
52+
ip -n ${m1_ns} addr add ${m1_ip4}/24 dev macv0
53+
ip -n ${m1_ns} addr add ${m1_ip6}/24 dev macv0
54+
55+
ip -n ${s_ns} link add link bond0 name macv0 type macvlan mode bridge
56+
ip -n ${s_ns} link set macv0 netns ${m2_ns}
57+
ip -n ${m2_ns} link set dev macv0 up
58+
ip -n ${m2_ns} addr add ${m2_ip4}/24 dev macv0
59+
ip -n ${m2_ns} addr add ${m2_ip6}/24 dev macv0
60+
61+
sleep 2
62+
63+
check_connection "${c_ns}" "${s_ip4}" "IPv4: client->server"
64+
check_connection "${c_ns}" "${s_ip6}" "IPv6: client->server"
65+
check_connection "${c_ns}" "${m1_ip4}" "IPv4: client->macvlan_1"
66+
check_connection "${c_ns}" "${m1_ip6}" "IPv6: client->macvlan_1"
67+
check_connection "${c_ns}" "${m2_ip4}" "IPv4: client->macvlan_2"
68+
check_connection "${c_ns}" "${m2_ip6}" "IPv6: client->macvlan_2"
69+
check_connection "${m1_ns}" "${m2_ip4}" "IPv4: macvlan_1->macvlan_2"
70+
check_connection "${m1_ns}" "${m2_ip6}" "IPv6: macvlan_1->macvlan_2"
71+
72+
73+
sleep 5
74+
75+
check_connection "${s_ns}" "${c_ip4}" "IPv4: server->client"
76+
check_connection "${s_ns}" "${c_ip6}" "IPv6: server->client"
77+
check_connection "${m1_ns}" "${c_ip4}" "IPv4: macvlan_1->client"
78+
check_connection "${m1_ns}" "${c_ip6}" "IPv6: macvlan_1->client"
79+
check_connection "${m2_ns}" "${c_ip4}" "IPv4: macvlan_2->client"
80+
check_connection "${m2_ns}" "${c_ip6}" "IPv6: macvlan_2->client"
81+
check_connection "${m2_ns}" "${m1_ip4}" "IPv4: macvlan_2->macvlan_2"
82+
check_connection "${m2_ns}" "${m1_ip6}" "IPv6: macvlan_2->macvlan_2"
83+
84+
ip -n ${c_ns} neigh flush dev eth0
85+
}
86+
87+
trap cleanup EXIT
88+
89+
setup_prepare
90+
ip netns add ${m1_ns}
91+
ip netns add ${m2_ns}
92+
93+
modes="active-backup balance-tlb balance-alb"
94+
95+
for mode in $modes; do
96+
macvlan_over_bond "mode $mode"
97+
done
98+
99+
exit $EXIT_STATUS

0 commit comments

Comments
 (0)