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