Path: blob/master/tools/testing/selftests/drivers/net/bonding/bond-lladdr-target.sh
26292 views
#!/bin/bash1# SPDX-License-Identifier: GPL-2.023# Regression Test:4# Verify bond interface could up when set IPv6 link local address target.5#6# +----------------+7# | br0 |8# | | | sw9# | veth0 veth1 |10# +---+-------+----+11# | |12# +---+-------+----+13# | veth0 veth1 |14# | | | host15# | bond0 |16# +----------------+17#18# We use veths instead of physical interfaces19REQUIRE_MZ=no20NUM_NETIFS=021lib_dir=$(dirname "$0")22source "$lib_dir"/../../../net/forwarding/lib.sh2324sw="sw-$(mktemp -u XXXXXX)"25host="ns-$(mktemp -u XXXXXX)"2627cleanup()28{29ip netns del $sw30ip netns del $host31}3233wait_lladdr_dad()34{35$@ | grep fe80 | grep -qv tentative36}3738wait_bond_up()39{40$@ | grep -q 'state UP'41}4243trap cleanup 0 1 24445ip netns add $sw46ip netns add $host4748ip -n $host link add veth0 type veth peer name veth0 netns $sw49ip -n $host link add veth1 type veth peer name veth1 netns $sw5051ip -n $sw link add br0 type bridge52ip -n $sw link set br0 up53sw_lladdr=$(ip -n $sw addr show br0 | awk '/fe80/{print $2}' | cut -d'/' -f1)54# wait some time to make sure bridge lladdr pass DAD55slowwait 2 wait_lladdr_dad ip -n $sw addr show br05657ip -n $host link add bond0 type bond mode 1 ns_ip6_target ${sw_lladdr} \58arp_validate 3 arp_interval 100059# add a lladdr for bond to make sure there is a route to target60ip -n $host addr add fe80::beef/64 dev bond061ip -n $host link set bond0 up62ip -n $host link set veth0 master bond063ip -n $host link set veth1 master bond06465ip -n $sw link set veth0 master br066ip -n $sw link set veth1 master br067ip -n $sw link set veth0 up68ip -n $sw link set veth1 up6970slowwait 5 wait_bond_up ip -n $host link show bond07172rc=073if ip -n $host link show bond0 | grep -q LOWER_UP; then74echo "PASS"75else76echo "FAIL"77rc=178fi79exit $rc808182