Skip to content

Commit 8d460ac

Browse files
committed
Merge branch 'ipvlan-support-bonding-events'
Etienne Champetier says: ==================== ipvlan: Support bonding events ==================== Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 676cfca + 08ac69b commit 8d460ac

File tree

5 files changed

+104
-100
lines changed

5 files changed

+104
-100
lines changed

drivers/net/ipvlan/ipvlan_main.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,12 @@ static int ipvlan_device_event(struct notifier_block *unused,
799799
case NETDEV_PRE_TYPE_CHANGE:
800800
/* Forbid underlying device to change its type. */
801801
return NOTIFY_BAD;
802+
803+
case NETDEV_NOTIFY_PEERS:
804+
case NETDEV_BONDING_FAILOVER:
805+
case NETDEV_RESEND_IGMP:
806+
list_for_each_entry(ipvlan, &port->ipvlans, pnode)
807+
call_netdevice_notifiers(event, ipvlan->dev);
802808
}
803809
return NOTIFY_DONE;
804810
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ TEST_PROGS := \
1010
mode-2-recovery-updelay.sh \
1111
bond_options.sh \
1212
bond-eth-type-change.sh \
13-
bond_macvlan.sh
13+
bond_macvlan_ipvlan.sh
1414

1515
TEST_FILES := \
1616
lag_lib.sh \

tools/testing/selftests/drivers/net/bonding/bond_macvlan.sh

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

tools/testing/selftests/drivers/net/bonding/config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ CONFIG_BRIDGE=y
33
CONFIG_DUMMY=y
44
CONFIG_IPV6=y
55
CONFIG_MACVLAN=y
6+
CONFIG_IPVLAN=y
67
CONFIG_NET_ACT_GACT=y
78
CONFIG_NET_CLS_FLOWER=y
89
CONFIG_NET_SCH_INGRESS=y

0 commit comments

Comments
 (0)