selftests: forwarding: lib: Move smcrouted helpers here
router_multicast.sh has several helpers for work with smcrouted. Extract them to lib.sh so that other selftests can use them as well. Convert the helpers to defer in the process, because that simplifies the interface quite a bit. Therefore have router_multicast.sh invoke defer_scopes_cleanup() in its cleanup() function. Signed-off-by: Petr Machata <petrm@nvidia.com> Link: https://patch.msgid.link/410411c1a81225ce6e44542289b9c3ec21e5786c.1750113335.git.petrm@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
f8337efa4f
commit
2a719b7bac
@@ -37,6 +37,7 @@ declare -A NETIFS=(
|
||||
: "${TEAMD:=teamd}"
|
||||
: "${MCD:=smcrouted}"
|
||||
: "${MC_CLI:=smcroutectl}"
|
||||
: "${MCD_TABLE_NAME:=selftests}"
|
||||
|
||||
# Constants for netdevice bring-up:
|
||||
# Default time in seconds to wait for an interface to come up before giving up
|
||||
@@ -1757,6 +1758,38 @@ mc_send()
|
||||
msend -g $groups -I $if_name -c 1 > /dev/null 2>&1
|
||||
}
|
||||
|
||||
adf_mcd_start()
|
||||
{
|
||||
local table_name="$MCD_TABLE_NAME"
|
||||
local smcroutedir
|
||||
local pid
|
||||
local i
|
||||
|
||||
check_command "$MCD" || return 1
|
||||
check_command "$MC_CLI" || return 1
|
||||
|
||||
smcroutedir=$(mktemp -d)
|
||||
defer rm -rf "$smcroutedir"
|
||||
|
||||
for ((i = 1; i <= NUM_NETIFS; ++i)); do
|
||||
echo "phyint ${NETIFS[p$i]} enable" >> \
|
||||
"$smcroutedir/$table_name.conf"
|
||||
done
|
||||
|
||||
"$MCD" -N -I "$table_name" -f "$smcroutedir/$table_name.conf" \
|
||||
-P "$smcroutedir/$table_name.pid"
|
||||
busywait "$BUSYWAIT_TIMEOUT" test -e "$smcroutedir/$table_name.pid"
|
||||
pid=$(cat "$smcroutedir/$table_name.pid")
|
||||
defer kill_process "$pid"
|
||||
}
|
||||
|
||||
mc_cli()
|
||||
{
|
||||
local table_name="$MCD_TABLE_NAME"
|
||||
|
||||
"$MC_CLI" -I "$table_name" "$@"
|
||||
}
|
||||
|
||||
start_ip_monitor()
|
||||
{
|
||||
local mtype=$1; shift
|
||||
|
||||
@@ -33,10 +33,6 @@ NUM_NETIFS=6
|
||||
source lib.sh
|
||||
source tc_common.sh
|
||||
|
||||
require_command $MCD
|
||||
require_command $MC_CLI
|
||||
table_name=selftests
|
||||
|
||||
h1_create()
|
||||
{
|
||||
simple_if_init $h1 198.51.100.2/28 2001:db8:1::2/64
|
||||
@@ -149,25 +145,6 @@ router_destroy()
|
||||
ip link set dev $rp1 down
|
||||
}
|
||||
|
||||
start_mcd()
|
||||
{
|
||||
SMCROUTEDIR="$(mktemp -d)"
|
||||
|
||||
for ((i = 1; i <= $NUM_NETIFS; ++i)); do
|
||||
echo "phyint ${NETIFS[p$i]} enable" >> \
|
||||
$SMCROUTEDIR/$table_name.conf
|
||||
done
|
||||
|
||||
$MCD -N -I $table_name -f $SMCROUTEDIR/$table_name.conf \
|
||||
-P $SMCROUTEDIR/$table_name.pid
|
||||
}
|
||||
|
||||
kill_mcd()
|
||||
{
|
||||
pkill $MCD
|
||||
rm -rf $SMCROUTEDIR
|
||||
}
|
||||
|
||||
setup_prepare()
|
||||
{
|
||||
h1=${NETIFS[p1]}
|
||||
@@ -179,7 +156,7 @@ setup_prepare()
|
||||
rp3=${NETIFS[p5]}
|
||||
h3=${NETIFS[p6]}
|
||||
|
||||
start_mcd
|
||||
adf_mcd_start || exit "$EXIT_STATUS"
|
||||
|
||||
vrf_prepare
|
||||
|
||||
@@ -206,7 +183,7 @@ cleanup()
|
||||
|
||||
vrf_cleanup
|
||||
|
||||
kill_mcd
|
||||
defer_scopes_cleanup
|
||||
}
|
||||
|
||||
create_mcast_sg()
|
||||
@@ -214,9 +191,9 @@ create_mcast_sg()
|
||||
local if_name=$1; shift
|
||||
local s_addr=$1; shift
|
||||
local mcast=$1; shift
|
||||
local dest_ifs=${@}
|
||||
local dest_ifs=("${@}")
|
||||
|
||||
$MC_CLI -I $table_name add $if_name $s_addr $mcast $dest_ifs
|
||||
mc_cli add "$if_name" "$s_addr" "$mcast" "${dest_ifs[@]}"
|
||||
}
|
||||
|
||||
delete_mcast_sg()
|
||||
@@ -224,9 +201,9 @@ delete_mcast_sg()
|
||||
local if_name=$1; shift
|
||||
local s_addr=$1; shift
|
||||
local mcast=$1; shift
|
||||
local dest_ifs=${@}
|
||||
local dest_ifs=("${@}")
|
||||
|
||||
$MC_CLI -I $table_name remove $if_name $s_addr $mcast $dest_ifs
|
||||
mc_cli remove "$if_name" "$s_addr" "$mcast" "${dest_ifs[@]}"
|
||||
}
|
||||
|
||||
mcast_v4()
|
||||
|
||||
Reference in New Issue
Block a user