137 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4lib_dir=$(dirname $0)/../../../net/forwarding5 6ALL_TESTS="7 lag_rif_add8 lag_rif_nomaster9 lag_rif_remaster10 lag_rif_nomaster_addr11"12 13NUM_NETIFS=214source $lib_dir/lib.sh15source $lib_dir/devlink_lib.sh16 17setup_prepare()18{19 swp1=${NETIFS[p1]}20 swp2=${NETIFS[p2]}21 22 team_create lag1 lacp23 ip link set dev lag1 addrgenmode none24 ip link set dev lag1 address $(mac_get $swp1)25 26 team_create lag2 lacp27 ip link set dev lag2 addrgenmode none28 ip link set dev lag2 address $(mac_get $swp2)29 30 ip link set dev $swp1 master lag131 ip link set dev $swp1 up32 33 ip link set dev $swp2 master lag234 ip link set dev $swp2 up35}36 37cleanup()38{39 pre_cleanup40 41 ip link set dev $swp2 nomaster42 ip link set dev $swp2 down43 44 ip link set dev $swp1 nomaster45 ip link set dev $swp1 down46 47 ip link del dev lag248 ip link del dev lag149}50 51lag_rif_add()52{53 RET=054 55 local rifs_occ_t0=$(devlink_resource_occ_get rifs)56 __addr_add_del lag1 add 192.0.2.2/2857 sleep 158 local rifs_occ_t1=$(devlink_resource_occ_get rifs)59 local expected_rifs=$((rifs_occ_t0 + 1))60 61 ((expected_rifs == rifs_occ_t1))62 check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"63 64 log_test "Add RIF for LAG on address addition"65}66 67lag_rif_nomaster()68{69 RET=070 71 local rifs_occ_t0=$(devlink_resource_occ_get rifs)72 ip link set dev $swp1 nomaster73 sleep 174 local rifs_occ_t1=$(devlink_resource_occ_get rifs)75 local expected_rifs=$((rifs_occ_t0 - 1))76 77 ((expected_rifs == rifs_occ_t1))78 check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"79 80 log_test "Drop RIF for LAG on port deslavement"81}82 83lag_rif_remaster()84{85 RET=086 87 local rifs_occ_t0=$(devlink_resource_occ_get rifs)88 ip link set dev $swp1 down89 ip link set dev $swp1 master lag190 ip link set dev $swp1 up91 setup_wait_dev $swp192 local rifs_occ_t1=$(devlink_resource_occ_get rifs)93 local expected_rifs=$((rifs_occ_t0 + 1))94 95 ((expected_rifs == rifs_occ_t1))96 check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"97 98 log_test "Add RIF for LAG on port reenslavement"99}100 101lag_rif_nomaster_addr()102{103 local rifs_occ_t0=$(devlink_resource_occ_get rifs)104 105 # Adding an address while the port is LAG'd shouldn't generate a RIF.106 __addr_add_del $swp1 add 192.0.2.65/28107 sleep 1108 local rifs_occ_t1=$(devlink_resource_occ_get rifs)109 local expected_rifs=$((rifs_occ_t0))110 111 ((expected_rifs == rifs_occ_t1))112 check_err $? "After adding IP: Expected $expected_rifs RIFs, $rifs_occ_t1 are used"113 114 # Removing the port from LAG should drop RIF for the LAG (as tested in115 # lag_rif_nomaster), but since the port now has an address, it should116 # gain a RIF.117 ip link set dev $swp1 nomaster118 sleep 1119 local rifs_occ_t2=$(devlink_resource_occ_get rifs)120 local expected_rifs=$((rifs_occ_t0))121 122 ((expected_rifs == rifs_occ_t2))123 check_err $? "After deslaving: Expected $expected_rifs RIFs, $rifs_occ_t2 are used"124 125 __addr_add_del $swp1 del 192.0.2.65/28126 log_test "Add RIF for port on deslavement from LAG"127}128 129trap cleanup EXIT130 131setup_prepare132setup_wait133 134tests_run135 136exit $EXIT_STATUS137