#!/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 < ${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} }