3 # Copyright (c) 2013 Nicira, Inc.
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at:
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
20 (cd "$sandbox" && "$@") || exit 1
26 run xterm -T "$title" -e "$@" &
32 # Remove the --detach and to put the process under gdb control.
33 # Also remove --vconsole:off to allow error message to show up
35 # Use "DISPLAY" variable to determine out if X is supported
36 if $under_gdb && [ "$DISPLAY" ]; then
37 args=`echo $@ |sed s/--detach//g | sed s/--vconsole:off//g`
39 run_xterm $xterm_title gdb --args $args
57 # This option-parsing mechanism borrowed from a Autoconf-generated
58 # configure script under the following license:
60 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
61 # 2002, 2003, 2004, 2005, 2006, 2009, 2013 Free Software Foundation, Inc.
62 # This configure script is free software; the Free Software Foundation
63 # gives unlimited permission to copy, distribute and modify it.
65 # If the previous option needs an argument, assign it.
66 if test -n "$prev"; then
72 *=*) optarg=`expr "X$option" : '[^=]*=\(.*\)'` ;;
76 case $dashdash$option in
81 ovs-sandbox, for starting a sandboxed dummy Open vSwitch environment
84 If you run ovs-sandbox from an OVS build directory, it uses the OVS that
85 you built. Otherwise, if you have an installed Open vSwitch, it uses
86 the installed version.
88 These options force ovs-sandbox to use a particular OVS build:
89 -b, --builddir=DIR specify Open vSwitch build directory
90 -s, --srcdir=DIR specify Open vSwitch source directory
91 These options force ovs-sandbox to use an installed Open vSwitch:
92 -i, --installed use installed Open vSwitch
93 -g, --gdb-vswitchd run ovs-vswitchd under gdb
94 -d, --gdb-ovsdb run ovsdb-server under gdb
95 -S, --schema=FILE use FILE as vswitch.ovsschema
99 -h, --help Print this usage message.
141 echo "unrecognized option $option (use --help for help)" >&2
145 echo "$option: non-option arguments not supported (use --help for help)" >&2
152 if $installed && $built; then
153 echo "sorry, conflicting options (use --help for help)" >&2
155 elif $installed || $built; then
157 elif test -e vswitchd/ovs-vswitchd; then
160 elif (ovs-vswitchd --version) >/dev/null 2>&1; then
163 echo "can't find an OVS build or install (use --help for help)" >&2
168 if test ! -e "$builddir"/vswitchd/ovs-vswitchd; then
169 echo "$builddir does not appear to be an OVS build directory" >&2
172 builddir=`cd $builddir && pwd`
178 if test ! -e "$srcdir"/WHY-OVS.md; then
179 srcdir=`cd $builddir/.. && pwd`
183 *) srcdir=`pwd`/$srcdir ;;
185 schema=$srcdir/vswitchd/vswitch.ovsschema
186 if test ! -e "$schema"; then
187 echo >&2 'source directory not found, please use --srcdir'
191 ovnschema=$srcdir/ovn/ovn.ovsschema
192 if test ! -e "$ovnschema"; then
193 echo >&2 'source directory not found, please use --srcdir'
196 ovnnbschema=$srcdir/ovn/ovn-nb.ovsschema
197 if test ! -e "$ovnnbschema"; then
198 echo >&2 'source directory not found, please use --srcdir'
203 # Put built tools early in $PATH.
204 if test ! -e $builddir/vswitchd/ovs-vswitchd; then
205 echo >&2 'build not found, please change set $builddir or change directory'
208 PATH=$builddir/ovsdb:$builddir/vswitchd:$builddir/utilities:$PATH
210 PATH=$builddir/ovn:$PATH
217 /usr/local/share/openvswitch/vswitch.ovsschema \
218 /usr/share/openvswitch/vswitch.ovsschema \
220 if test -r $schema; then
226 *) schema=`pwd`/$schema ;;
228 if test ! -r "$schema"; then
229 echo "can't find vswitch.ovsschema, please specify --schema" >&2
233 echo "running with ovn is only supported from the build dir." >&2
241 sandbox=`cd sandbox && pwd`
243 # Set up environment for OVS programs to sandbox themselves.
244 OVS_RUNDIR=$sandbox; export OVS_RUNDIR
245 OVS_LOGDIR=$sandbox; export OVS_LOGDIR
246 OVS_DBDIR=$sandbox; export OVS_DBDIR
247 OVS_SYSCONFDIR=$sandbox; export OVS_SYSCONFDIR
250 # Easy access to OVS manpages.
251 (cd "$builddir" && ${MAKE} install-man mandir="$sandbox"/man)
252 MANPATH=$sandbox/man:; export MANPATH
256 trap 'kill `cat "$sandbox"/*.pid`' 0 1 2 3 13 14 15
258 # Create database and start ovsdb-server.
259 touch "$sandbox"/.conf.db.~lock~
260 run ovsdb-tool create conf.db "$schema"
263 touch "$sandbox"/.ovn.db.~lock~
264 touch "$sandbox"/.ovnnb.db.~lock~
265 run ovsdb-tool create ovn.db "$ovnschema"
266 run ovsdb-tool create ovnnb.db "$ovnnbschema"
267 ovsdb_server_args="ovn.db ovnnb.db conf.db"
269 rungdb $gdb_ovsdb ovsdb-server --detach --no-chdir --pidfile -vconsole:off --log-file \
270 --remote=punix:"$sandbox"/db.sock $ovsdb_server_args
272 # Start ovs-vswitchd.
273 rungdb $gdb_vswitchd ovs-vswitchd --detach --no-chdir --pidfile -vconsole:off --log-file \
274 --enable-dummy=override -vvconn -vnetdev_dummy
280 ----------------------------------------------------------------------
281 You are running in a dummy Open vSwitch environment. You can use
282 ovs-vsctl, ovs-ofctl, ovs-appctl, and other tools to work with the
285 Log files, pidfiles, and the configuration database are in the
286 "sandbox" subdirectory.
288 Exit the shell to kill the running daemons.
291 status=0; $SHELL || status=$?
294 ----------------------------------------------------------------------