1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3 4lib_dir=$(dirname $0)/../../../net/forwarding 5 6ALL_TESTS=" 7 lag_rif_add 8 lag_rif_nomaster 9 lag_rif_remaster 10 lag_rif_nomaster_addr 11" 12 13NUM_NETIFS=2 14source $lib_dir/lib.sh 15source $lib_dir/devlink_lib.sh 16 17setup_prepare() 18{ 19 swp1=${NETIFS[p1]} 20 swp2=${NETIFS[p2]} 21 22 team_create lag1 lacp 23 ip link set dev lag1 addrgenmode none 24 ip link set dev lag1 address $(mac_get $swp1) 25 26 team_create lag2 lacp 27 ip link set dev lag2 addrgenmode none 28 ip link set dev lag2 address $(mac_get $swp2) 29 30 ip link set dev $swp1 master lag1 31 ip link set dev $swp1 up 32 33 ip link set dev $swp2 master lag2 34 ip link set dev $swp2 up 35 36 vlan_create lag1 100 37 ip link set dev lag1.100 addrgenmode none 38 39 vlan_create lag1 200 40 ip link set dev lag1.200 addrgenmode none 41} 42 43cleanup() 44{ 45 pre_cleanup 46 47 ip link del dev lag1.200 48 ip link del dev lag1.100 49 50 ip link set dev $swp2 nomaster 51 ip link set dev $swp2 down 52 53 ip link set dev $swp1 nomaster 54 ip link set dev $swp1 down 55 56 ip link del dev lag2 57 ip link del dev lag1 58} 59 60lag_rif_add() 61{ 62 RET=0 63 64 local rifs_occ_t0=$(devlink_resource_occ_get rifs) 65 __addr_add_del lag1.100 add 192.0.2.2/28 66 __addr_add_del lag1.200 add 192.0.2.18/28 67 sleep 1 68 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=0 80 81 local rifs_occ_t0=$(devlink_resource_occ_get rifs) 82 ip link set dev $swp1 nomaster 83 sleep 1 84 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=0 96 97 local rifs_occ_t0=$(devlink_resource_occ_get rifs) 98 ip link set dev $swp1 down 99 ip link set dev $swp1 master lag1 100 ip link set dev $swp1 up 101 setup_wait_dev $swp1 102 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/28 117 sleep 1 118 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 (as 125 # tested in lag_rif_nomaster), but since the port now has an address, it 126 # should gain a RIF. 127 ip link set dev $swp1 nomaster 128 sleep 1 129 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/28 136 log_test "Add RIF for port on deslavement from LAG" 137} 138 139trap cleanup EXIT 140 141setup_prepare 142setup_wait 143 144tests_run 145 146exit $EXIT_STATUS 147