xref: /dpdk/examples/ipsec-secgw/test/common_defs_secgw.sh (revision 1dc48bce518de1d8cb73f961404a47311c4a248d)
19a18283aSMarcin Smoczynski#!/bin/bash
2*1dc48bceSStephen Hemminger# SPDX-License-Identifier: BSD-3-Clause
39a18283aSMarcin Smoczynski
49a18283aSMarcin Smoczynski# check required parameters
59a18283aSMarcin SmoczynskiSGW_REQ_VARS="SGW_PATH SGW_PORT_CFG SGW_WAIT_DEV"
69a18283aSMarcin Smoczynskifor reqvar in ${SGW_REQ_VARS}
79a18283aSMarcin Smoczynskido
89a18283aSMarcin Smoczynski	if [[ -z "${!reqvar}" ]]; then
99a18283aSMarcin Smoczynski		echo "Required parameter ${reqvar} is empty"
109a18283aSMarcin Smoczynski		exit 127
119a18283aSMarcin Smoczynski	fi
129a18283aSMarcin Smoczynskidone
139a18283aSMarcin Smoczynski
149a18283aSMarcin Smoczynski# check if SGW_PATH point to an executable
159a18283aSMarcin Smoczynskiif [[ ! -x ${SGW_PATH} ]]; then
169a18283aSMarcin Smoczynski	echo "${SGW_PATH} is not executable"
179a18283aSMarcin Smoczynski	exit 127
189a18283aSMarcin Smoczynskifi
199a18283aSMarcin Smoczynski
209a18283aSMarcin Smoczynski# setup SGW_LCORE
219a18283aSMarcin SmoczynskiSGW_LCORE=${SGW_LCORE:-0}
229a18283aSMarcin Smoczynski
239a18283aSMarcin Smoczynski# setup config and output filenames
249a18283aSMarcin SmoczynskiSGW_OUT_FILE=./ipsec-secgw.out1
259a18283aSMarcin SmoczynskiSGW_CFG_FILE=$(mktemp)
269a18283aSMarcin Smoczynski
279a18283aSMarcin Smoczynski# setup secgw parameters
289a18283aSMarcin SmoczynskiSGW_CMD_EAL_PRM="--lcores=${SGW_LCORE} -n 4"
299a18283aSMarcin SmoczynskiSGW_CMD_CFG="(0,0,${SGW_LCORE}),(1,0,${SGW_LCORE})"
309a18283aSMarcin SmoczynskiSGW_CMD_PRM="-p 0x3 -u 1 -P --config=\"${SGW_CMD_CFG}\""
319a18283aSMarcin Smoczynski
329a18283aSMarcin Smoczynski# start ipsec-secgw
339a18283aSMarcin Smoczynskisecgw_start()
349a18283aSMarcin Smoczynski{
359a18283aSMarcin Smoczynski	SGW_EXEC_FILE=$(mktemp)
369a18283aSMarcin Smoczynski	cat <<EOF > ${SGW_EXEC_FILE}
379a18283aSMarcin Smoczynskistdbuf -o0 ${SGW_PATH} ${SGW_CMD_EAL_PRM} ${CRYPTO_DEV} \
389a18283aSMarcin Smoczynski${SGW_PORT_CFG} ${SGW_EAL_XPRM} \
399a18283aSMarcin Smoczynski-- ${SGW_CMD_PRM} ${SGW_CMD_XPRM} -f ${SGW_CFG_FILE} > \
409a18283aSMarcin Smoczynski${SGW_OUT_FILE} 2>&1 &
419a18283aSMarcin Smoczynskip=\$!
429a18283aSMarcin Smoczynskiecho \$p
439a18283aSMarcin SmoczynskiEOF
449a18283aSMarcin Smoczynski
459a18283aSMarcin Smoczynski	cat ${SGW_EXEC_FILE}
469a18283aSMarcin Smoczynski	cat ${SGW_CFG_FILE}
479a18283aSMarcin Smoczynski	SGW_PID=`/bin/bash -x ${SGW_EXEC_FILE}`
489a18283aSMarcin Smoczynski
499a18283aSMarcin Smoczynski	# wait till ipsec-secgw start properly
509a18283aSMarcin Smoczynski	i=0
519a18283aSMarcin Smoczynski	st=1
529a18283aSMarcin Smoczynski	while [[ $i -ne 10 && $st -ne 0 ]]; do
539a18283aSMarcin Smoczynski		sleep 1
549a18283aSMarcin Smoczynski		ifconfig ${SGW_WAIT_DEV}
559a18283aSMarcin Smoczynski		st=$?
569a18283aSMarcin Smoczynski		let i++
579a18283aSMarcin Smoczynski	done
589a18283aSMarcin Smoczynski}
599a18283aSMarcin Smoczynski
609a18283aSMarcin Smoczynski# stop ipsec-secgw and cleanup
619a18283aSMarcin Smoczynskisecgw_stop()
629a18283aSMarcin Smoczynski{
639a18283aSMarcin Smoczynski	kill ${SGW_PID}
649a18283aSMarcin Smoczynski	rm -f ${SGW_EXEC_FILE}
659a18283aSMarcin Smoczynski	rm -f ${SGW_CFG_FILE}
669a18283aSMarcin Smoczynski}
67