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