-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
selftests/bonding: add a test for bonding lladdr target
This is a regression test for commit 592335a ("bonding: accept unsolicited NA message") and commit b7f1413 ("bonding: use unspecified address if no available link local address"). When the bond interface up and no available link local address, unspecified address(::) is used to send the NS message. The unsolicited NA message should also be accepted for validation. Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> Acked-by: Jonathan Toppins <jtoppins@redhat.com> Link: https://lore.kernel.org/r/20220920033047.173244-1-liuhangbin@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
- Loading branch information
Hangbin Liu
authored and
Jakub Kicinski
committed
Sep 20, 2022
1 parent
4633b39
commit 152e8ec
Showing
2 changed files
with
66 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
65 changes: 65 additions & 0 deletions
65
tools/testing/selftests/drivers/net/bonding/bond-lladdr-target.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
#!/bin/bash | ||
# SPDX-License-Identifier: GPL-2.0 | ||
|
||
# Regression Test: | ||
# Verify bond interface could up when set IPv6 link local address target. | ||
# | ||
# +----------------+ | ||
# | br0 | | ||
# | | | sw | ||
# | veth0 veth1 | | ||
# +---+-------+----+ | ||
# | | | ||
# +---+-------+----+ | ||
# | veth0 veth1 | | ||
# | | | host | ||
# | bond0 | | ||
# +----------------+ | ||
# | ||
# We use veths instead of physical interfaces | ||
sw="sw-$(mktemp -u XXXXXX)" | ||
host="ns-$(mktemp -u XXXXXX)" | ||
|
||
cleanup() | ||
{ | ||
ip netns del $sw | ||
ip netns del $host | ||
} | ||
|
||
trap cleanup 0 1 2 | ||
|
||
ip netns add $sw | ||
ip netns add $host | ||
|
||
ip -n $host link add veth0 type veth peer name veth0 netns $sw | ||
ip -n $host link add veth1 type veth peer name veth1 netns $sw | ||
|
||
ip -n $sw link add br0 type bridge | ||
ip -n $sw link set br0 up | ||
sw_lladdr=$(ip -n $sw addr show br0 | awk '/fe80/{print $2}' | cut -d'/' -f1) | ||
# sleep some time to make sure bridge lladdr pass DAD | ||
sleep 2 | ||
|
||
ip -n $host link add bond0 type bond mode 1 ns_ip6_target ${sw_lladdr} \ | ||
arp_validate 3 arp_interval 1000 | ||
# add a lladdr for bond to make sure there is a route to target | ||
ip -n $host addr add fe80::beef/64 dev bond0 | ||
ip -n $host link set bond0 up | ||
ip -n $host link set veth0 master bond0 | ||
ip -n $host link set veth1 master bond0 | ||
|
||
ip -n $sw link set veth0 master br0 | ||
ip -n $sw link set veth1 master br0 | ||
ip -n $sw link set veth0 up | ||
ip -n $sw link set veth1 up | ||
|
||
sleep 5 | ||
|
||
rc=0 | ||
if ip -n $host link show bond0 | grep -q LOWER_UP; then | ||
echo "PASS" | ||
else | ||
echo "FAIL" | ||
rc=1 | ||
fi | ||
exit $rc |