14308967dSPetr Machata#!/bin/bash 24308967dSPetr Machata# SPDX-License-Identifier: GPL-2.0 34308967dSPetr Machata 44308967dSPetr Machatalib_dir=$(dirname $0)/../../../net/forwarding 54308967dSPetr Machata 64308967dSPetr MachataALL_TESTS=" 74308967dSPetr Machata lag_rif_add 84308967dSPetr Machata lag_rif_nomaster 94308967dSPetr Machata lag_rif_remaster 104308967dSPetr Machata lag_rif_nomaster_addr 114308967dSPetr Machata" 124308967dSPetr Machata 13*7a649f39SAlessandro ZanniREQUIRE_TEAMD="yes" 144308967dSPetr MachataNUM_NETIFS=2 154308967dSPetr Machatasource $lib_dir/lib.sh 164308967dSPetr Machatasource $lib_dir/devlink_lib.sh 174308967dSPetr Machata 184308967dSPetr Machatasetup_prepare() 194308967dSPetr Machata{ 204308967dSPetr Machata swp1=${NETIFS[p1]} 214308967dSPetr Machata swp2=${NETIFS[p2]} 224308967dSPetr Machata 234308967dSPetr Machata team_create lag1 lacp 244308967dSPetr Machata ip link set dev lag1 addrgenmode none 254308967dSPetr Machata ip link set dev lag1 address $(mac_get $swp1) 264308967dSPetr Machata 274308967dSPetr Machata team_create lag2 lacp 284308967dSPetr Machata ip link set dev lag2 addrgenmode none 294308967dSPetr Machata ip link set dev lag2 address $(mac_get $swp2) 304308967dSPetr Machata 314308967dSPetr Machata ip link set dev $swp1 master lag1 324308967dSPetr Machata ip link set dev $swp1 up 334308967dSPetr Machata 344308967dSPetr Machata ip link set dev $swp2 master lag2 354308967dSPetr Machata ip link set dev $swp2 up 364308967dSPetr Machata} 374308967dSPetr Machata 384308967dSPetr Machatacleanup() 394308967dSPetr Machata{ 404308967dSPetr Machata pre_cleanup 414308967dSPetr Machata 424308967dSPetr Machata ip link set dev $swp2 nomaster 434308967dSPetr Machata ip link set dev $swp2 down 444308967dSPetr Machata 454308967dSPetr Machata ip link set dev $swp1 nomaster 464308967dSPetr Machata ip link set dev $swp1 down 474308967dSPetr Machata 484308967dSPetr Machata ip link del dev lag2 494308967dSPetr Machata ip link del dev lag1 504308967dSPetr Machata} 514308967dSPetr Machata 524308967dSPetr Machatalag_rif_add() 534308967dSPetr Machata{ 544308967dSPetr Machata RET=0 554308967dSPetr Machata 564308967dSPetr Machata local rifs_occ_t0=$(devlink_resource_occ_get rifs) 574308967dSPetr Machata __addr_add_del lag1 add 192.0.2.2/28 584308967dSPetr Machata sleep 1 594308967dSPetr Machata local rifs_occ_t1=$(devlink_resource_occ_get rifs) 604308967dSPetr Machata local expected_rifs=$((rifs_occ_t0 + 1)) 614308967dSPetr Machata 624308967dSPetr Machata ((expected_rifs == rifs_occ_t1)) 634308967dSPetr Machata check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used" 644308967dSPetr Machata 654308967dSPetr Machata log_test "Add RIF for LAG on address addition" 664308967dSPetr Machata} 674308967dSPetr Machata 684308967dSPetr Machatalag_rif_nomaster() 694308967dSPetr Machata{ 704308967dSPetr Machata RET=0 714308967dSPetr Machata 724308967dSPetr Machata local rifs_occ_t0=$(devlink_resource_occ_get rifs) 734308967dSPetr Machata ip link set dev $swp1 nomaster 744308967dSPetr Machata sleep 1 754308967dSPetr Machata local rifs_occ_t1=$(devlink_resource_occ_get rifs) 764308967dSPetr Machata local expected_rifs=$((rifs_occ_t0 - 1)) 774308967dSPetr Machata 784308967dSPetr Machata ((expected_rifs == rifs_occ_t1)) 794308967dSPetr Machata check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used" 804308967dSPetr Machata 814308967dSPetr Machata log_test "Drop RIF for LAG on port deslavement" 824308967dSPetr Machata} 834308967dSPetr Machata 844308967dSPetr Machatalag_rif_remaster() 854308967dSPetr Machata{ 864308967dSPetr Machata RET=0 874308967dSPetr Machata 884308967dSPetr Machata local rifs_occ_t0=$(devlink_resource_occ_get rifs) 894308967dSPetr Machata ip link set dev $swp1 down 904308967dSPetr Machata ip link set dev $swp1 master lag1 914308967dSPetr Machata ip link set dev $swp1 up 924308967dSPetr Machata setup_wait_dev $swp1 934308967dSPetr Machata local rifs_occ_t1=$(devlink_resource_occ_get rifs) 944308967dSPetr Machata local expected_rifs=$((rifs_occ_t0 + 1)) 954308967dSPetr Machata 964308967dSPetr Machata ((expected_rifs == rifs_occ_t1)) 974308967dSPetr Machata check_err $? "Expected $expected_rifs RIFs, $rifs_occ_t1 are used" 984308967dSPetr Machata 994308967dSPetr Machata log_test "Add RIF for LAG on port reenslavement" 1004308967dSPetr Machata} 1014308967dSPetr Machata 1024308967dSPetr Machatalag_rif_nomaster_addr() 1034308967dSPetr Machata{ 1044308967dSPetr Machata local rifs_occ_t0=$(devlink_resource_occ_get rifs) 1054308967dSPetr Machata 1064308967dSPetr Machata # Adding an address while the port is LAG'd shouldn't generate a RIF. 1074308967dSPetr Machata __addr_add_del $swp1 add 192.0.2.65/28 1084308967dSPetr Machata sleep 1 1094308967dSPetr Machata local rifs_occ_t1=$(devlink_resource_occ_get rifs) 1104308967dSPetr Machata local expected_rifs=$((rifs_occ_t0)) 1114308967dSPetr Machata 1124308967dSPetr Machata ((expected_rifs == rifs_occ_t1)) 1134308967dSPetr Machata check_err $? "After adding IP: Expected $expected_rifs RIFs, $rifs_occ_t1 are used" 1144308967dSPetr Machata 1154308967dSPetr Machata # Removing the port from LAG should drop RIF for the LAG (as tested in 1164308967dSPetr Machata # lag_rif_nomaster), but since the port now has an address, it should 1174308967dSPetr Machata # gain a RIF. 1184308967dSPetr Machata ip link set dev $swp1 nomaster 1194308967dSPetr Machata sleep 1 1204308967dSPetr Machata local rifs_occ_t2=$(devlink_resource_occ_get rifs) 1214308967dSPetr Machata local expected_rifs=$((rifs_occ_t0)) 1224308967dSPetr Machata 1234308967dSPetr Machata ((expected_rifs == rifs_occ_t2)) 1244308967dSPetr Machata check_err $? "After deslaving: Expected $expected_rifs RIFs, $rifs_occ_t2 are used" 1254308967dSPetr Machata 1264308967dSPetr Machata __addr_add_del $swp1 del 192.0.2.65/28 1274308967dSPetr Machata log_test "Add RIF for port on deslavement from LAG" 1284308967dSPetr Machata} 1294308967dSPetr Machata 1304308967dSPetr Machatatrap cleanup EXIT 1314308967dSPetr Machata 1324308967dSPetr Machatasetup_prepare 1334308967dSPetr Machatasetup_wait 1344308967dSPetr Machata 1354308967dSPetr Machatatests_run 1364308967dSPetr Machata 1374308967dSPetr Machataexit $EXIT_STATUS 138