1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3 4# Regression Test: 5# Verify LACPDUs get transmitted after setting the MAC address of 6# the bond. 7# 8# https://bugzilla.redhat.com/show_bug.cgi?id=2020773 9# 10# +---------+ 11# | fab-br0 | 12# +---------+ 13# | 14# +---------+ 15# | fbond | 16# +---------+ 17# | | 18# +------+ +------+ 19# |veth1 | |veth2 | 20# +------+ +------+ 21# 22# We use veths instead of physical interfaces 23REQUIRE_MZ=no 24NUM_NETIFS=0 25lib_dir=$(dirname "$0") 26source "$lib_dir"/../../../net/forwarding/lib.sh 27 28set -e 29cleanup() { 30 ip link del fab-br0 >/dev/null 2>&1 || : 31 ip link del fbond >/dev/null 2>&1 || : 32 ip link del veth1-bond >/dev/null 2>&1 || : 33 ip link del veth2-bond >/dev/null 2>&1 || : 34} 35 36trap cleanup 0 1 2 37cleanup 38 39# create the bridge 40ip link add fab-br0 address 52:54:00:3B:7C:A6 mtu 1500 type bridge \ 41 forward_delay 15 42 43# create the bond 44ip link add fbond type bond mode 4 miimon 200 xmit_hash_policy 1 \ 45 ad_actor_sys_prio 65535 lacp_rate fast 46 47# set bond address 48ip link set fbond address 52:54:00:3B:7C:A6 49ip link set fbond up 50 51# set again bond sysfs parameters 52ip link set fbond type bond ad_actor_sys_prio 65535 53 54# create veths 55ip link add name veth1-bond type veth peer name veth1-end 56ip link add name veth2-bond type veth peer name veth2-end 57 58# add ports 59ip link set fbond master fab-br0 60ip link set veth1-bond master fbond 61ip link set veth2-bond master fbond 62 63# bring up 64ip link set veth1-end up 65ip link set veth2-end up 66ip link set fab-br0 up 67ip link set fbond up 68ip addr add dev fab-br0 10.0.0.3 69 70rc=0 71tc qdisc add dev veth1-end clsact 72tc filter add dev veth1-end ingress protocol 0x8809 pref 1 handle 101 flower skip_hw action pass 73if slowwait_for_counter 15 2 \ 74 tc_rule_handle_stats_get "dev veth1-end ingress" 101 ".packets" "" &> /dev/null; then 75 echo "PASS, captured 2" 76else 77 echo "FAIL" 78 rc=1 79fi 80exit $rc 81