Commit 2a719b7b authored by Petr Machata's avatar Petr Machata Committed by Jakub Kicinski
Browse files

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: default avatarPetr Machata <petrm@nvidia.com>
Link: https://patch.msgid.link/410411c1a81225ce6e44542289b9c3ec21e5786c.1750113335.git.petrm@nvidia.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent f8337efa
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -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
+6 −29
Original line number Diff line number Diff line
@@ -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()