184 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4lib_dir=$(dirname $0)/../../../net/forwarding5 6ALL_TESTS="7 bridge_rif_add8 bridge_rif_nomaster9 bridge_rif_remaster10 bridge_rif_nomaster_addr11 bridge_rif_nomaster_port12 bridge_rif_remaster_port13"14 15NUM_NETIFS=216source $lib_dir/lib.sh17source $lib_dir/devlink_lib.sh18 19setup_prepare()20{21 swp1=${NETIFS[p1]}22 swp2=${NETIFS[p2]}23 24 team_create lag1 lacp25 ip link set dev lag1 addrgenmode none26 ip link set dev lag1 address $(mac_get $swp1)27 28 team_create lag2 lacp29 ip link set dev lag2 addrgenmode none30 ip link set dev lag2 address $(mac_get $swp2)31 32 ip link add name br1 type bridge vlan_filtering 133 ip link set dev br1 addrgenmode none34 ip link set dev br1 address $(mac_get lag1)35 ip link set dev br1 up36 37 ip link set dev lag1 master br138 39 ip link set dev $swp1 master lag140 ip link set dev $swp1 up41 42 ip link set dev $swp2 master lag243 ip link set dev $swp2 up44}45 46cleanup()47{48 pre_cleanup49 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 set dev lag1 nomaster58 ip link del dev lag159 60 ip link del dev br161}62 63bridge_rif_add()64{65 RET=066 67 local rifs_occ_t0=$(devlink_resource_occ_get rifs)68 __addr_add_del br1 add 192.0.2.2/2869 sleep 170 local rifs_occ_t1=$(devlink_resource_occ_get rifs)71 local expected_rifs=$((rifs_occ_t0 + 1))72 73 ((expected_rifs == rifs_occ_t1))74 check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"75 76 log_test "Add RIF for bridge on address addition"77}78 79bridge_rif_nomaster()80{81 RET=082 83 local rifs_occ_t0=$(devlink_resource_occ_get rifs)84 ip link set dev lag1 nomaster85 sleep 186 local rifs_occ_t1=$(devlink_resource_occ_get rifs)87 local expected_rifs=$((rifs_occ_t0 - 1))88 89 ((expected_rifs == rifs_occ_t1))90 check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"91 92 log_test "Drop RIF for bridge on LAG deslavement"93}94 95bridge_rif_remaster()96{97 RET=098 99 local rifs_occ_t0=$(devlink_resource_occ_get rifs)100 ip link set dev lag1 master br1101 sleep 1102 local rifs_occ_t1=$(devlink_resource_occ_get rifs)103 local expected_rifs=$((rifs_occ_t0 + 1))104 105 ((expected_rifs == rifs_occ_t1))106 check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"107 108 log_test "Add RIF for bridge on LAG reenslavement"109}110 111bridge_rif_nomaster_addr()112{113 local rifs_occ_t0=$(devlink_resource_occ_get rifs)114 115 # Adding an address while the LAG is enslaved shouldn't generate a RIF.116 __addr_add_del lag1 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 LAG from the bridge should drop RIF for the bridge (as125 # tested in bridge_rif_lag_nomaster), but since the LAG now has an126 # address, it should gain a RIF.127 ip link set dev lag1 nomaster128 sleep 1129 local rifs_occ_t2=$(devlink_resource_occ_get rifs)130 local expected_rifs=$((rifs_occ_t0))131 132 ((expected_rifs == rifs_occ_t2))133 check_err $? "After deslaving: Expected $expected_rifs RIFs, $rifs_occ_t2 are used"134 135 log_test "Add RIF for LAG on deslavement from bridge"136 137 __addr_add_del lag1 del 192.0.2.65/28138 ip link set dev lag1 master br1139 sleep 1140}141 142bridge_rif_nomaster_port()143{144 RET=0145 146 local rifs_occ_t0=$(devlink_resource_occ_get rifs)147 ip link set dev $swp1 nomaster148 sleep 1149 local rifs_occ_t1=$(devlink_resource_occ_get rifs)150 local expected_rifs=$((rifs_occ_t0 - 1))151 152 ((expected_rifs == rifs_occ_t1))153 check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"154 155 log_test "Drop RIF for bridge on deslavement of port from LAG"156}157 158bridge_rif_remaster_port()159{160 RET=0161 162 local rifs_occ_t0=$(devlink_resource_occ_get rifs)163 ip link set dev $swp1 down164 ip link set dev $swp1 master lag1165 ip link set dev $swp1 up166 setup_wait_dev $swp1167 local rifs_occ_t1=$(devlink_resource_occ_get rifs)168 local expected_rifs=$((rifs_occ_t0 + 1))169 170 ((expected_rifs == rifs_occ_t1))171 check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used"172 173 log_test "Add RIF for bridge on reenslavement of port to LAG"174}175 176trap cleanup EXIT177 178setup_prepare179setup_wait180 181tests_run182 183exit $EXIT_STATUS184