telemetry: move some functions to metrics library
[dpdk.git] / examples / ipsec-secgw / test / common_defs.sh
index 8dc574b..35cdd1c 100644 (file)
@@ -1,22 +1,11 @@
 #! /bin/bash
-
-#check that env vars are properly defined
-
-#check SGW_PATH
-if [[ -z "${SGW_PATH}" || ! -x ${SGW_PATH} ]]; then
-       echo "SGW_PATH is invalid"
-       exit 127
-fi
+# SPDX-License-Identifier: BSD-3-Clause
 
 #check ETH_DEV
 if [[ -z "${ETH_DEV}" ]]; then
        echo "ETH_DEV is invalid"
        exit 127
 fi
-
-#setup SGW_LCORE
-SGW_LCORE=${SGW_LCORE:-0}
-
 #check that REMOTE_HOST is reachable
 ssh ${REMOTE_HOST} echo
 st=$?
@@ -47,18 +36,57 @@ LOCAL_IPV6=fd12:3456:789a:0031:0000:0000:0000:0092
 DPDK_PATH=${RTE_SDK:-${PWD}}
 DPDK_BUILD=${RTE_TARGET:-x86_64-native-linux-gcc}
 
-SGW_OUT_FILE=./ipsec-secgw.out1
+# by default ipsec-secgw can't deal with multi-segment packets
+# make sure our local/remote host wouldn't generate fragmented packets
+# if reassmebly option is not enabled
+DEF_MTU_LEN=1400
+DEF_PING_LEN=1200
 
-SGW_CMD_EAL_PRM="--lcores=${SGW_LCORE} -n 4 ${ETH_DEV}"
-SGW_CMD_CFG="(0,0,${SGW_LCORE}),(1,0,${SGW_LCORE})"
-SGW_CMD_PRM="-p 0x3 -u 1 -P --config=\"${SGW_CMD_CFG}\""
+#upsate operation mode based on env vars values
+select_mode()
+{
+       # select sync/async mode
+       if [[ -n "${CRYPTO_PRIM_TYPE}" && -n "${SGW_CMD_XPRM}" ]]; then
+               echo "${CRYPTO_PRIM_TYPE} is enabled"
+               SGW_CFG_XPRM="${SGW_CFG_XPRM} ${CRYPTO_PRIM_TYPE}"
+       fi
+
+       # check if fallback type is needed
+       if [[ "${MODE}" == *fallback* ]]; then
+               if [[ -n "${CRYPTO_FLBK_TYPE}" ]]; then
+                       echo "${CRYPTO_FLBK_TYPE} is enabled"
+               fi
+       fi
+
+       #make linux to generate fragmented packets
+       if [[ -n "${MULTI_SEG_TEST}" && -n "${SGW_CMD_XPRM}" ]]; then
+               echo "multi-segment test is enabled"
+               SGW_CMD_XPRM="${SGW_CMD_XPRM} ${MULTI_SEG_TEST}"
+               PING_LEN=5000
+               MTU_LEN=1500
+       else
+               if [[ -z "${MULTI_SEG_TEST}" && "${MODE}" == *fallback* ]]; then
+                       echo "MULTI_SEG_TEST environment variable needs to be \
+set for ${MODE} test"
+                       exit 127
+               fi
+               PING_LEN=${DEF_PING_LEN}
+               MTU_LEN=${DEF_MTU_LEN}
+       fi
+}
 
-SGW_CFG_FILE=$(mktemp)
+#setup mtu on local iface
+set_local_mtu()
+{
+       mtu=$1
+       ifconfig ${LOCAL_IFACE} mtu ${mtu}
+       sysctl -w net.ipv6.conf.${LOCAL_IFACE}.mtu=${mtu}
+}
 
 # configure local host/ifaces
 config_local_iface()
 {
-       ifconfig ${LOCAL_IFACE} ${LOCAL_IPV4}/24 mtu 1400 up
+       ifconfig ${LOCAL_IFACE} ${LOCAL_IPV4}/24 up
        ifconfig ${LOCAL_IFACE}
 
        ip neigh flush dev ${LOCAL_IFACE}
@@ -73,8 +101,6 @@ config6_local_iface()
        sysctl -w net.ipv6.conf.${LOCAL_IFACE}.disable_ipv6=0
        ip addr add  ${LOCAL_IPV6}/64 dev ${LOCAL_IFACE}
 
-       sysctl -w net.ipv6.conf.${LOCAL_IFACE}.mtu=1300
-
        ip -6 neigh add ${REMOTE_IPV6} dev ${LOCAL_IFACE} lladdr ${REMOTE_MAC}
        ip neigh show dev ${LOCAL_IFACE}
 }
@@ -126,37 +152,7 @@ config6_iface()
        config6_remote_iface
 }
 
-#start ipsec-secgw
-secgw_start()
-{
-       SGW_EXEC_FILE=$(mktemp)
-       cat <<EOF > ${SGW_EXEC_FILE}
-${SGW_PATH} ${SGW_CMD_EAL_PRM} ${CRYPTO_DEV} \
---vdev="net_tap0,mac=fixed" \
--- ${SGW_CMD_PRM} ${SGW_CMD_XPRM} -f ${SGW_CFG_FILE} > \
-${SGW_OUT_FILE} 2>&1 &
-p=\$!
-echo \$p
-EOF
-
-       cat ${SGW_EXEC_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 ${LOCAL_IFACE}
-               st=$?
-               let i++
-       done
-}
-
-#stop ipsec-secgw and cleanup
-secgw_stop()
-{
-       kill ${SGW_PID}
-       rm -f ${SGW_EXEC_FILE}
-       rm -f ${SGW_CFG_FILE}
-}
+# secgw application parameters setup
+SGW_PORT_CFG="--vdev=\"net_tap0,mac=fixed\" ${ETH_DEV}"
+SGW_WAIT_DEV="${LOCAL_IFACE}"
+. ${DIR}/common_defs_secgw.sh