147 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 vlan_create lag1 10037 ip link set dev lag1.100 addrgenmode none38 39 vlan_create lag1 20040 ip link set dev lag1.200 addrgenmode none41}42 43cleanup()44{45 pre_cleanup46 47 ip link del dev lag1.20048 ip link del dev lag1.10049 50 ip link set dev $swp2 nomaster51 ip link set dev $swp2 down52 53 ip link set dev $swp1 nomaster54 ip link set dev $swp1 down55 56 ip link del dev lag257 ip link del dev lag158}59 60lag_rif_add()61{62 RET=063 64 local rifs_occ_t0=$(devlink_resource_occ_get rifs)65 __addr_add_del lag1.100 add 192.0.2.2/2866 __addr_add_del lag1.200 add 192.0.2.18/2867 sleep 168 local rifs_occ_t1=$(devlink_resource_occ_get rifs)69 local expected_rifs=$((rifs_occ_t0 + 2))70 71 ((expected_rifs == rifs_occ_t1))72 check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"73 74 log_test "Add RIFs for LAG VLANs on address addition"75}76 77lag_rif_nomaster()78{79 RET=080 81 local rifs_occ_t0=$(devlink_resource_occ_get rifs)82 ip link set dev $swp1 nomaster83 sleep 184 local rifs_occ_t1=$(devlink_resource_occ_get rifs)85 local expected_rifs=$((rifs_occ_t0 - 2))86 87 ((expected_rifs == rifs_occ_t1))88 check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"89 90 log_test "Drop RIFs for LAG VLANs on port deslavement"91}92 93lag_rif_remaster()94{95 RET=096 97 local rifs_occ_t0=$(devlink_resource_occ_get rifs)98 ip link set dev $swp1 down99 ip link set dev $swp1 master lag1100 ip link set dev $swp1 up101 setup_wait_dev $swp1102 local rifs_occ_t1=$(devlink_resource_occ_get rifs)103 local expected_rifs=$((rifs_occ_t0 + 2))104 105 ((expected_rifs == rifs_occ_t1))106 check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"107 108 log_test "Add RIFs for LAG VLANs on port reenslavement"109}110 111lag_rif_nomaster_addr()112{113 local rifs_occ_t0=$(devlink_resource_occ_get rifs)114 115 # Adding an address while the port is LAG'd shouldn't generate a RIF.116 __addr_add_del $swp1 add 192.0.2.65/28117 sleep 1118 local rifs_occ_t1=$(devlink_resource_occ_get rifs)119 local expected_rifs=$((rifs_occ_t0))120 121 ((expected_rifs == rifs_occ_t1))122 check_err $? "After adding IP: Expected $expected_rifs RIFs, $rifs_occ_t1 are used"123 124 # Removing the port from LAG should drop two RIFs for the LAG VLANs (as125 # tested in lag_rif_nomaster), but since the port now has an address, it126 # should gain a RIF.127 ip link set dev $swp1 nomaster128 sleep 1129 local rifs_occ_t2=$(devlink_resource_occ_get rifs)130 local expected_rifs=$((rifs_occ_t0 - 1))131 132 ((expected_rifs == rifs_occ_t2))133 check_err $? "After deslaving: Expected $expected_rifs RIFs, $rifs_occ_t2 are used"134 135 __addr_add_del $swp1 del 192.0.2.65/28136 log_test "Add RIF for port on deslavement from LAG"137}138 139trap cleanup EXIT140 141setup_prepare142setup_wait143 144tests_run145 146exit $EXIT_STATUS147