1 #!/bin/bash 2 # SPDX-License-Identifier: GPL-2.0 3 # 4 # Test bond device handling of addr lists (dev->uc, mc) 5 # 6 7 ALL_TESTS=" 8 bond_cleanup_mode1 9 bond_cleanup_mode4 10 bond_listen_lacpdu_multicast_case_down 11 bond_listen_lacpdu_multicast_case_up 12 " 13 14 REQUIRE_MZ=no 15 NUM_NETIFS=0 16 lib_dir=$(dirname "$0") 17 source "$lib_dir"/../../../net/forwarding/lib.sh 18 19 source "$lib_dir"/lag_lib.sh 20 21 22 destroy() 23 { 24 local ifnames=(dummy1 dummy2 bond1 mv0) 25 local ifname 26 27 for ifname in "${ifnames[@]}"; do 28 ip link del "$ifname" &>/dev/null 29 done 30 } 31 32 cleanup() 33 { 34 pre_cleanup 35 36 destroy 37 } 38 39 40 # bond driver control paths vary between modes that have a primary slave 41 # (bond_uses_primary()) and others. Test both kinds of modes. 42 43 bond_cleanup_mode1() 44 { 45 RET=0 46 47 test_LAG_cleanup "bonding" "active-backup" 48 } 49 50 bond_cleanup_mode4() { 51 RET=0 52 53 test_LAG_cleanup "bonding" "802.3ad" 54 } 55 56 bond_listen_lacpdu_multicast() 57 { 58 # Initial state of bond device, up | down 59 local init_state=$1 60 local lacpdu_mc="01:80:c2:00:00:02" 61 62 ip link add dummy1 type dummy 63 ip link add bond1 "$init_state" type bond mode 802.3ad 64 ip link set dev dummy1 master bond1 65 if [ "$init_state" = "down" ]; then 66 ip link set dev bond1 up 67 fi 68 69 grep_bridge_fdb "$lacpdu_mc" bridge fdb show brport dummy1 >/dev/null 70 check_err $? "LACPDU multicast address not present on slave (1)" 71 72 ip link set dev bond1 down 73 74 not grep_bridge_fdb "$lacpdu_mc" bridge fdb show brport dummy1 >/dev/null 75 check_err $? "LACPDU multicast address still present on slave" 76 77 ip link set dev bond1 up 78 79 grep_bridge_fdb "$lacpdu_mc" bridge fdb show brport dummy1 >/dev/null 80 check_err $? "LACPDU multicast address not present on slave (2)" 81 82 cleanup 83 84 log_test "bonding LACPDU multicast address to slave (from bond $init_state)" 85 } 86 87 # The LACPDU mc addr is added by different paths depending on the initial state 88 # of the bond when enslaving a device. Test both cases. 89 90 bond_listen_lacpdu_multicast_case_down() 91 { 92 RET=0 93 94 bond_listen_lacpdu_multicast "down" 95 } 96 97 bond_listen_lacpdu_multicast_case_up() 98 { 99 RET=0 100 101 bond_listen_lacpdu_multicast "up" 102 } 103 104 105 trap cleanup EXIT 106 107 tests_run 108 109 exit "$EXIT_STATUS"
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.