[ovs-dev] [PATCH 2/2] utilities: ovs-ctl.in: Allow passing DPDK options to ovs-vswitchd

Markos Chandras mchandras at suse.de
Fri Jul 1 09:31:26 UTC 2016


The ovs-ctl script is used to launch ovs-vswitchd among other things.
However it does not make it possible to pass DPDK options to the
daemon. We fix this by explicitly looking and extracting the DPDK
options from the command line which is then reconstructed so it can be
parsed by ovs-ctl as usual. The DPDK options are later passed to
ovs-vswitchd.

Signed-off-by: Markos Chandras <mchandras at suse.de>
---
 utilities/ovs-ctl.in | 34 ++++++++++++++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in
index 8ec825b..b4e7bf1 100755
--- a/utilities/ovs-ctl.in
+++ b/utilities/ovs-ctl.in
@@ -230,7 +230,12 @@ do_start_forwarding () {
         fi
 
         # Start ovs-vswitchd.
-        set ovs-vswitchd unix:"$DB_SOCK"
+        set ovs-vswitchd
+        # DPDK options are expected to be at the beginning of
+        # the command line arguments. Add '--' to mark the end
+        # of the DPDK options.
+        [ -n "$DPDK_OPTS" ] && set -- "$@" $DPDK_OPTS "--"
+        set "$@" unix:"$DB_SOCK"
         set "$@" -vconsole:emer -vsyslog:err -vfile:info
         if test X"$MLOCKALL" != Xno; then
             set "$@" --mlockall
@@ -485,6 +490,25 @@ enable_protocol () {
     fi
 }
 
+## ------------------ ##
+## parse-dpdk-cmdline ##
+## ------------------ ##
+parse_dpdk_cmdline () {
+    echo "${@}" | grep -q -- "--dpdk" || return
+
+    # The DPDK options can be passed anywhere on the command line when
+    # calling the ovs-ctl script so find out where they are.
+    if echo "${@}" | grep -q " -- "; then
+        # end of command line options found
+        DPDK_OPTS="$(echo ${@} | sed 's/^.*\(--dpdk.*\)\s* -- .*$/\1/')"
+        cmdline_args="$(echo ${@} | sed 's/\(^.*\)\(--dpdk.*\)\s* -- \(.*$\)/\1\3/')"
+    else
+        # no end of command line options found. DPDK options will be at the end
+        DPDK_OPTS="$(echo ${@} | sed 's/^.*\(--dpdk.*$\)/\1/')"
+        cmdline_args="$(echo ${@} | sed 's/\(^.*\)\(--dpdk.*$\)/\1/')"
+    fi
+}
+
 ## ---- ##
 ## main ##
 ## ---- ##
@@ -530,13 +554,15 @@ set_defaults () {
         SYSTEM_TYPE=unknown
         SYSTEM_VERSION=unknown
     fi
+
+    DPDK_OPTS=
 }
 
 usage () {
     set_defaults
     cat <<EOF
 $0: controls Open vSwitch daemons
-usage: $0 [OPTIONS] COMMAND
+usage: $0 [[OVS_VSWITCHD DPDK OPTIONS] --] [OPTIONS] COMMAND
 
 This program is intended to be invoked internally by Open vSwitch startup
 scripts.  System administrators should not normally invoke it directly.
@@ -624,7 +650,11 @@ daemons () {
 
 set_defaults
 extra_ids=
+cmdline_args="${@}"
 command=
+parse_dpdk_cmdline "${cmdline_args}"
+set -- ${cmdline_args}
+
 for arg
 do
     case $arg in
-- 
2.8.4




More information about the dev mailing list