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 23*9150820cSHangbin LiuREQUIRE_MZ=no 24*9150820cSHangbin LiuNUM_NETIFS=0 25*9150820cSHangbin Liulib_dir=$(dirname "$0") 26*9150820cSHangbin Liusource "$lib_dir"/../../../net/forwarding/lib.sh 27c078290aSJonathan Toppins 28c078290aSJonathan Toppinsset -e 29c078290aSJonathan Toppinscleanup() { 30c078290aSJonathan Toppins ip link del fab-br0 >/dev/null 2>&1 || : 31c078290aSJonathan Toppins ip link del fbond >/dev/null 2>&1 || : 32c078290aSJonathan Toppins ip link del veth1-bond >/dev/null 2>&1 || : 33c078290aSJonathan Toppins ip link del veth2-bond >/dev/null 2>&1 || : 34c078290aSJonathan Toppins} 35c078290aSJonathan Toppins 36c078290aSJonathan Toppinstrap cleanup 0 1 2 37c078290aSJonathan Toppinscleanup 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 60be809424SHangbin Liuip link set veth1-bond master fbond 61be809424SHangbin 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 Toppinsrc=0 71*9150820cSHangbin Liutc qdisc add dev veth1-end clsact 72*9150820cSHangbin Liutc filter add dev veth1-end ingress protocol 0x8809 pref 1 handle 101 flower skip_hw action pass 73*9150820cSHangbin Liuif slowwait_for_counter 15 2 \ 74*9150820cSHangbin Liu tc_rule_handle_stats_get "dev veth1-end ingress" 101 ".packets" "" &> /dev/null; then 75*9150820cSHangbin Liu echo "PASS, captured 2" 76c078290aSJonathan Toppinselse 77c078290aSJonathan Toppins echo "FAIL" 78c078290aSJonathan Toppins rc=1 79c078290aSJonathan Toppinsfi 80c078290aSJonathan Toppinsexit $rc 81