1c078290aSJonathan Toppins#!/bin/sh 2c078290aSJonathan Toppins# SPDX-License-Identifier: GPL-2.0 3c078290aSJonathan Toppins 4c078290aSJonathan Toppins# Regression Test: 5c078290aSJonathan Toppins# Verify LACPDUs get transmitted after setting the MAC address of 6c078290aSJonathan Toppins# the bond. 7c078290aSJonathan Toppins# 8c078290aSJonathan Toppins# https://bugzilla.redhat.com/show_bug.cgi?id=2020773 9c078290aSJonathan Toppins# 10c078290aSJonathan Toppins# +---------+ 11c078290aSJonathan Toppins# | fab-br0 | 12c078290aSJonathan Toppins# +---------+ 13c078290aSJonathan Toppins# | 14c078290aSJonathan Toppins# +---------+ 15c078290aSJonathan Toppins# | fbond | 16c078290aSJonathan Toppins# +---------+ 17c078290aSJonathan Toppins# | | 18c078290aSJonathan Toppins# +------+ +------+ 19c078290aSJonathan Toppins# |veth1 | |veth2 | 20c078290aSJonathan Toppins# +------+ +------+ 21c078290aSJonathan Toppins# 22c078290aSJonathan Toppins# We use veths instead of physical interfaces 23c078290aSJonathan Toppins 24c078290aSJonathan Toppinsset -e 25c078290aSJonathan Toppinstmp=$(mktemp -q dump.XXXXXX) 26c078290aSJonathan Toppinscleanup() { 27c078290aSJonathan Toppins ip link del fab-br0 >/dev/null 2>&1 || : 28c078290aSJonathan Toppins ip link del fbond >/dev/null 2>&1 || : 29c078290aSJonathan Toppins ip link del veth1-bond >/dev/null 2>&1 || : 30c078290aSJonathan Toppins ip link del veth2-bond >/dev/null 2>&1 || : 31c078290aSJonathan Toppins modprobe -r bonding >/dev/null 2>&1 || : 32c078290aSJonathan Toppins rm -f -- ${tmp} 33c078290aSJonathan Toppins} 34c078290aSJonathan Toppins 35c078290aSJonathan Toppinstrap cleanup 0 1 2 36c078290aSJonathan Toppinscleanup 37c078290aSJonathan Toppinssleep 1 38c078290aSJonathan Toppins 39c078290aSJonathan Toppins# create the bridge 40c078290aSJonathan Toppinsip link add fab-br0 address 52:54:00:3B:7C:A6 mtu 1500 type bridge \ 41c078290aSJonathan Toppins forward_delay 15 42c078290aSJonathan Toppins 43c078290aSJonathan Toppins# create the bond 44c078290aSJonathan Toppinsip link add fbond type bond mode 4 miimon 200 xmit_hash_policy 1 \ 45c078290aSJonathan Toppins ad_actor_sys_prio 65535 lacp_rate fast 46c078290aSJonathan Toppins 47c078290aSJonathan Toppins# set bond address 48c078290aSJonathan Toppinsip link set fbond address 52:54:00:3B:7C:A6 49c078290aSJonathan Toppinsip link set fbond up 50c078290aSJonathan Toppins 51c078290aSJonathan Toppins# set again bond sysfs parameters 52c078290aSJonathan Toppinsip link set fbond type bond ad_actor_sys_prio 65535 53c078290aSJonathan Toppins 54c078290aSJonathan Toppins# create veths 55c078290aSJonathan Toppinsip link add name veth1-bond type veth peer name veth1-end 56c078290aSJonathan Toppinsip link add name veth2-bond type veth peer name veth2-end 57c078290aSJonathan Toppins 58c078290aSJonathan Toppins# add ports 59c078290aSJonathan Toppinsip link set fbond master fab-br0 60*be809424SHangbin Liuip link set veth1-bond master fbond 61*be809424SHangbin Liuip link set veth2-bond master fbond 62c078290aSJonathan Toppins 63c078290aSJonathan Toppins# bring up 64c078290aSJonathan Toppinsip link set veth1-end up 65c078290aSJonathan Toppinsip link set veth2-end up 66c078290aSJonathan Toppinsip link set fab-br0 up 67c078290aSJonathan Toppinsip link set fbond up 68c078290aSJonathan Toppinsip addr add dev fab-br0 10.0.0.3 69c078290aSJonathan Toppins 70c078290aSJonathan Toppinstcpdump -n -i veth1-end -e ether proto 0x8809 >${tmp} 2>&1 & 71c078290aSJonathan Toppinssleep 15 72c078290aSJonathan Toppinspkill tcpdump >/dev/null 2>&1 73c078290aSJonathan Toppinsrc=0 74c078290aSJonathan Toppinsnum=$(grep "packets captured" ${tmp} | awk '{print $1}') 75c078290aSJonathan Toppinsif test "$num" -gt 0; then 76c078290aSJonathan Toppins echo "PASS, captured ${num}" 77c078290aSJonathan Toppinselse 78c078290aSJonathan Toppins echo "FAIL" 79c078290aSJonathan Toppins rc=1 80c078290aSJonathan Toppinsfi 81c078290aSJonathan Toppinsexit $rc 82