79 lines
2.5 KiB
Bash
79 lines
2.5 KiB
Bash
#!/bin/sh
|
|
|
|
if [ -z "${IF_OVS_TYPE}" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
ovs_vsctl() {
|
|
ovs-vsctl --timeout=5 "$@"
|
|
}
|
|
|
|
if (ovs_vsctl --version) > /dev/null 2>&1; then :; else
|
|
exit 0
|
|
fi
|
|
|
|
SERVICE_UNIT=/usr/lib/systemd/system/openvswitch-nonetwork.service
|
|
if [ -f $SERVICE_UNIT ] && [ -x /usr/bin/systemctl ]; then
|
|
if ! systemctl --quiet is-active openvswitch-nonetwork.service; then
|
|
systemctl start openvswitch-nonetwork.service
|
|
fi
|
|
else
|
|
if service openvswitch-switch status > /dev/null 2>&1; then
|
|
service openvswitch-switch start
|
|
fi
|
|
fi
|
|
|
|
DPDK_EXTRA=""
|
|
|
|
if [ "${MODE}" = "start" ]; then
|
|
eval OVS_EXTRA=\"${IF_OVS_EXTRA}\"
|
|
|
|
case "${IF_OVS_TYPE}" in
|
|
DPDKOVSPort)
|
|
DPDK_EXTRA="-- set Interface ${IF_DPDK_PORT} type=dpdk"
|
|
if [ -n "$IF_MULTIQ_THREADS" ]; then
|
|
DPDK_EXTRA="${DPDK_EXTRA} -- set Interface ${IF_DPDK_PORT} options:n_rxq=${IF_MULTIQ_THREADS}"
|
|
fi
|
|
if [ -n "$IF_MTU_REQUEST" ]; then
|
|
DPDK_EXTRA="${DPDK_EXTRA} -- set Interface ${IF_DPDK_PORT} mtu_request=${IF_MTU_REQUEST}"
|
|
fi
|
|
ovs_vsctl -- --may-exist add-port "${IF_OVS_BRIDGE}"\
|
|
"${IF_DPDK_PORT}" ${IF_OVS_OPTIONS} \
|
|
${DPDK_EXTRA} \
|
|
${OVS_EXTRA+-- $OVS_EXTRA}
|
|
;;
|
|
DPDKOVSBond)
|
|
for slave in ${IF_OVS_BONDS}; do
|
|
DPDK_EXTRA="${DPDK_EXTRA} -- set Interface ${slave} type=dpdk"
|
|
if [ -n "$IF_MULTIQ_THREADS" ]; then
|
|
DPDK_EXTRA="${DPDK_EXTRA} -- set Interface ${slave} options:n_rxq=${IF_MULTIQ_THREADS}"
|
|
fi
|
|
if [ -n "$IF_MTU_REQUEST" ]; then
|
|
DPDK_EXTRA="${DPDK_EXTRA} -- set Interface ${slave} mtu_request=${IF_MTU_REQUEST}"
|
|
fi
|
|
done
|
|
ovs_vsctl -- --fake-iface add-bond "${IF_OVS_BRIDGE}"\
|
|
"${IFACE}" ${IF_OVS_BONDS} ${IF_OVS_OPTIONS} \
|
|
${DPDK_EXTRA} \
|
|
${OVS_EXTRA+-- $OVS_EXTRA}
|
|
;;
|
|
*)
|
|
exit 0
|
|
;;
|
|
esac
|
|
elif [ "${MODE}" = "stop" ]; then
|
|
case "${IF_OVS_TYPE}" in
|
|
DPDKOVSPort)
|
|
ovs_vsctl -- --if-exists del-port "${IF_OVS_BRIDGE}" "${IF_DPDK_PORT}"
|
|
;;
|
|
DPDKOVSBond)
|
|
ovs_vsctl -- --if-exists del-port "${IF_OVS_BRIDGE}" "${IFACE}"
|
|
;;
|
|
*)
|
|
exit 0
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
exit 0
|