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 23 REQUIRE_MZ=no 24 NUM_NETIFS=0 25 lib_dir=$(dirname "$0") 26 source "$lib_dir"/../../../net/forwarding/lib.sh 27 28 set -e 29 cleanup() { 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 36 trap cleanup 0 1 2 37 cleanup 38 39 # create the bridge 40 ip link add fab-br0 address 52:54:00:3B:7C:A6 mtu 1500 type bridge \ 41 forward_delay 15 42 43 # create the bond 44 ip 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 48 ip link set fbond address 52:54:00:3B:7C:A6 49 ip link set fbond up 50 51 # set again bond sysfs parameters 52 ip link set fbond type bond ad_actor_sys_prio 65535 53 54 # create veths 55 ip link add name veth1-bond type veth peer name veth1-end 56 ip link add name veth2-bond type veth peer name veth2-end 57 58 # add ports 59 ip link set fbond master fab-br0 60 ip link set veth1-bond master fbond 61 ip link set veth2-bond master fbond 62 63 # bring up 64 ip link set veth1-end up 65 ip link set veth2-end up 66 ip link set fab-br0 up 67 ip link set fbond up 68 ip addr add dev fab-br0 10.0.0.3 69 70 rc=0 71 tc qdisc add dev veth1-end clsact 72 tc filter add dev veth1-end ingress protocol 0x8809 pref 1 handle 101 flower skip_hw action pass 73 if 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" 76 else 77 echo "FAIL" 78 rc=1 79 fi 80 exit $rc
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.