Commit dc5f94b1 authored by Hangbin Liu's avatar Hangbin Liu Committed by Jakub Kicinski
Browse files

selftests: bonding: add vlan over bond testing



Add a vlan over bond testing to make sure arp/ns target works.
Also change all the configs to mudules.

Signed-off-by: default avatarHangbin Liu <liuhangbin@gmail.com>
Link: https://patch.msgid.link/20250916080127.430626-2-liuhangbin@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent a8ba87f0
Loading
Loading
Loading
Loading
+58 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ ALL_TESTS="
	arp_validate
	num_grat_arp
	fail_over_mac
	vlan_over_bond
"

lib_dir=$(dirname "$0")
@@ -508,7 +509,64 @@ fail_over_mac()
	log_test "fail_over_mac 2" "failover: backup slave mac inherit"
	check_first_slave_random_mac
	log_test "fail_over_mac 2" "first slave mac random"
}

vlan_over_bond_arp()
{
	local mode="$1"
	RET=0

	bond_reset "mode $mode arp_interval 100 arp_ip_target 192.0.3.10"
	ip -n "${s_ns}" link add bond0.3 link bond0 type vlan id 3
	ip -n "${s_ns}" link set bond0.3 up
	ip -n "${s_ns}" addr add 192.0.3.1/24 dev bond0.3
	ip -n "${s_ns}" addr add 2001:db8::3:1/64 dev bond0.3

	slowwait_for_counter 5 5 tc_rule_handle_stats_get \
		"dev eth0.3 ingress" 101 ".packets" "-n ${c_ns}" &> /dev/null || RET=1
	log_test "vlan over bond arp" "$mode"
}

vlan_over_bond_ns()
{
	local mode="$1"
	RET=0

	if skip_ns; then
		log_test_skip "vlan_over_bond ns" "$mode"
		return 0
	fi

	bond_reset "mode $mode arp_interval 100 ns_ip6_target 2001:db8::3:10"
	ip -n "${s_ns}" link add bond0.3 link bond0 type vlan id 3
	ip -n "${s_ns}" link set bond0.3 up
	ip -n "${s_ns}" addr add 192.0.3.1/24 dev bond0.3
	ip -n "${s_ns}" addr add 2001:db8::3:1/64 dev bond0.3

	slowwait_for_counter 5 5 tc_rule_handle_stats_get \
		"dev eth0.3 ingress" 102 ".packets" "-n ${c_ns}" &> /dev/null || RET=1
	log_test "vlan over bond ns" "$mode"
}

vlan_over_bond()
{
	# add vlan 3 for client
	ip -n "${c_ns}" link add eth0.3 link eth0 type vlan id 3
	ip -n "${c_ns}" link set eth0.3 up
	ip -n "${c_ns}" addr add 192.0.3.10/24 dev eth0.3
	ip -n "${c_ns}" addr add 2001:db8::3:10/64 dev eth0.3

	# Add tc rule to check the vlan pkts
	tc -n "${c_ns}" qdisc add dev eth0.3 clsact
	tc -n "${c_ns}" filter add dev eth0.3 ingress protocol arp \
		handle 101 flower skip_hw arp_op request \
		arp_sip 192.0.3.1 arp_tip 192.0.3.10 action pass
	tc -n "${c_ns}" filter add dev eth0.3 ingress protocol ipv6 \
		handle 102 flower skip_hw ip_proto icmpv6 \
		type 135 src_ip 2001:db8::3:1 action pass

	vlan_over_bond_arp "active-backup"
	vlan_over_bond_ns "active-backup"
}

trap cleanup EXIT
+1 −0
Original line number Diff line number Diff line
@@ -10,3 +10,4 @@ CONFIG_NET_CLS_MATCHALL=m
CONFIG_NET_SCH_INGRESS=y
CONFIG_NLMON=y
CONFIG_VETH=y
CONFIG_VLAN_8021Q=m