Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/bonding: add a test for bonding lladdr target

This is a regression test for commit 592335a4164c ("bonding: accept
unsolicited NA message") and commit b7f14132bf58 ("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>

authored by

Hangbin Liu and committed by
Jakub Kicinski
152e8ec7 4633b391

+66
+1
tools/testing/selftests/drivers/net/bonding/Makefile
··· 2 2 # Makefile for net selftests 3 3 4 4 TEST_PROGS := bond-break-lacpdu-tx.sh 5 + TEST_PROGS += bond-lladdr-target.sh 5 6 6 7 include ../../../lib.mk
+65
tools/testing/selftests/drivers/net/bonding/bond-lladdr-target.sh
··· 1 + #!/bin/bash 2 + # SPDX-License-Identifier: GPL-2.0 3 + 4 + # Regression Test: 5 + # Verify bond interface could up when set IPv6 link local address target. 6 + # 7 + # +----------------+ 8 + # | br0 | 9 + # | | | sw 10 + # | veth0 veth1 | 11 + # +---+-------+----+ 12 + # | | 13 + # +---+-------+----+ 14 + # | veth0 veth1 | 15 + # | | | host 16 + # | bond0 | 17 + # +----------------+ 18 + # 19 + # We use veths instead of physical interfaces 20 + sw="sw-$(mktemp -u XXXXXX)" 21 + host="ns-$(mktemp -u XXXXXX)" 22 + 23 + cleanup() 24 + { 25 + ip netns del $sw 26 + ip netns del $host 27 + } 28 + 29 + trap cleanup 0 1 2 30 + 31 + ip netns add $sw 32 + ip netns add $host 33 + 34 + ip -n $host link add veth0 type veth peer name veth0 netns $sw 35 + ip -n $host link add veth1 type veth peer name veth1 netns $sw 36 + 37 + ip -n $sw link add br0 type bridge 38 + ip -n $sw link set br0 up 39 + sw_lladdr=$(ip -n $sw addr show br0 | awk '/fe80/{print $2}' | cut -d'/' -f1) 40 + # sleep some time to make sure bridge lladdr pass DAD 41 + sleep 2 42 + 43 + ip -n $host link add bond0 type bond mode 1 ns_ip6_target ${sw_lladdr} \ 44 + arp_validate 3 arp_interval 1000 45 + # add a lladdr for bond to make sure there is a route to target 46 + ip -n $host addr add fe80::beef/64 dev bond0 47 + ip -n $host link set bond0 up 48 + ip -n $host link set veth0 master bond0 49 + ip -n $host link set veth1 master bond0 50 + 51 + ip -n $sw link set veth0 master br0 52 + ip -n $sw link set veth1 master br0 53 + ip -n $sw link set veth0 up 54 + ip -n $sw link set veth1 up 55 + 56 + sleep 5 57 + 58 + rc=0 59 + if ip -n $host link show bond0 | grep -q LOWER_UP; then 60 + echo "PASS" 61 + else 62 + echo "FAIL" 63 + rc=1 64 + fi 65 + exit $rc