mirror of https://github.com/F-Stack/f-stack.git
67 lines
1.3 KiB
Bash
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}
|
|
}
|