f-stack/dpdk/examples/ipsec-secgw/test/common_defs_secgw.sh

67 lines
1.3 KiB
Bash

#!/bin/bash
# SPDX-License-Identifier: BSD-3-Clause
# check required parameters
SGW_REQ_VARS="SGW_PATH SGW_PORT_CFG SGW_WAIT_DEV"
for reqvar in ${SGW_REQ_VARS}
do
if [[ -z "${!reqvar}" ]]; then
echo "Required parameter ${reqvar} is empty"
exit 127
fi
done
# check if SGW_PATH point to an executable
if [[ ! -x ${SGW_PATH} ]]; then
echo "${SGW_PATH} is not executable"
exit 127
fi
# setup SGW_LCORE
SGW_LCORE=${SGW_LCORE:-0}
# setup config and output filenames
SGW_OUT_FILE=./ipsec-secgw.out1
SGW_CFG_FILE=$(mktemp)
# setup secgw parameters
SGW_CMD_EAL_PRM="--lcores=${SGW_LCORE} -n 4"
SGW_CMD_CFG="(0,0,${SGW_LCORE}),(1,0,${SGW_LCORE})"
SGW_CMD_PRM="-p 0x3 -u 1 -P --config=\"${SGW_CMD_CFG}\""
# start ipsec-secgw
secgw_start()
{
SGW_EXEC_FILE=$(mktemp)
cat <<EOF > ${SGW_EXEC_FILE}
stdbuf -o0 ${SGW_PATH} ${SGW_CMD_EAL_PRM} ${CRYPTO_DEV} \
${SGW_PORT_CFG} ${SGW_EAL_XPRM} \
-- ${SGW_CMD_PRM} ${SGW_CMD_XPRM} -f ${SGW_CFG_FILE} > \
${SGW_OUT_FILE} 2>&1 &
p=\$!
echo \$p
EOF
cat ${SGW_EXEC_FILE}
cat ${SGW_CFG_FILE}
SGW_PID=`/bin/bash -x ${SGW_EXEC_FILE}`
# wait till ipsec-secgw start properly
i=0
st=1
while [[ $i -ne 10 && $st -ne 0 ]]; do
sleep 1
ifconfig ${SGW_WAIT_DEV}
st=$?
let i++
done
}
# stop ipsec-secgw and cleanup
secgw_stop()
{
kill ${SGW_PID}
rm -f ${SGW_EXEC_FILE}
rm -f ${SGW_CFG_FILE}
}