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
58 # This option-parsing mechanism borrowed from a Autoconf-generated
59 # configure script under the following license:
61 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
62 # 2002, 2003, 2004, 2005, 2006, 2009, 2013 Free Software Foundation, Inc.
63 # This configure script is free software; the Free Software Foundation
64 # gives unlimited permission to copy, distribute and modify it.
66 # If the previous option needs an argument, assign it.
67 if test -n "$prev"; then
73 *=*) optarg=`expr "X$option" : '[^=]*=\(.*\)'` ;;
77 case $dashdash$option in
82 ovs-sandbox, for starting a sandboxed dummy Open vSwitch environment
85 If you run ovs-sandbox from an OVS build directory, it uses the OVS that
86 you built. Otherwise, if you have an installed Open vSwitch, it uses
87 the installed version.
89 These options force ovs-sandbox to use a particular OVS build:
90 -b, --builddir=DIR specify Open vSwitch build directory
91 -s, --srcdir=DIR specify Open vSwitch source directory
92 These options force ovs-sandbox to use an installed Open vSwitch:
93 -i, --installed use installed Open vSwitch
94 -g, --gdb-vswitchd run ovs-vswitchd under gdb
95 -d, --gdb-ovsdb run ovsdb-server under gdb
96 --gdb-ovn-nbd run ovn-nbd under gdb
97 -S, --schema=FILE use FILE as vswitch.ovsschema
101 -h, --help Print this usage message.
146 echo "unrecognized option $option (use --help for help)" >&2
150 echo "$option: non-option arguments not supported (use --help for help)" >&2
157 if $installed && $built; then
158 echo "sorry, conflicting options (use --help for help)" >&2
160 elif $installed || $built; then
162 elif test -e vswitchd/ovs-vswitchd; then
165 elif (ovs-vswitchd --version) >/dev/null 2>&1; then
168 echo "can't find an OVS build or install (use --help for help)" >&2
173 if test ! -e "$builddir"/vswitchd/ovs-vswitchd; then
174 echo "$builddir does not appear to be an OVS build directory" >&2
177 builddir=`cd $builddir && pwd`
183 if test ! -e "$srcdir"/WHY-OVS.md; then
184 srcdir=`cd $builddir/.. && pwd`
188 *) srcdir=`pwd`/$srcdir ;;
190 schema=$srcdir/vswitchd/vswitch.ovsschema
191 if test ! -e "$schema"; then
192 echo >&2 'source directory not found, please use --srcdir'
196 ovnsb_schema=$srcdir/ovn/ovn-sb.ovsschema
197 if test ! -e "$ovnsb_schema"; then
198 echo >&2 'source directory not found, please use --srcdir'
201 ovnnb_schema=$srcdir/ovn/ovn-nb.ovsschema
202 if test ! -e "$ovnnb_schema"; then
203 echo >&2 'source directory not found, please use --srcdir'
208 # Put built tools early in $PATH.
209 if test ! -e $builddir/vswitchd/ovs-vswitchd; then
210 echo >&2 'build not found, please change set $builddir or change directory'
213 PATH=$builddir/ovsdb:$builddir/vswitchd:$builddir/utilities:$PATH
215 PATH=$builddir/ovn:$PATH
222 /usr/local/share/openvswitch/vswitch.ovsschema \
223 /usr/share/openvswitch/vswitch.ovsschema \
225 if test -r $schema; then
231 *) schema=`pwd`/$schema ;;
233 if test ! -r "$schema"; then
234 echo "can't find vswitch.ovsschema, please specify --schema" >&2
238 echo "running with ovn is only supported from the build dir." >&2
246 sandbox=`cd sandbox && pwd`
248 # Set up environment for OVS programs to sandbox themselves.
249 OVS_RUNDIR=$sandbox; export OVS_RUNDIR
250 OVS_LOGDIR=$sandbox; export OVS_LOGDIR
251 OVS_DBDIR=$sandbox; export OVS_DBDIR
252 OVS_SYSCONFDIR=$sandbox; export OVS_SYSCONFDIR
255 # Easy access to OVS manpages.
256 (cd "$builddir" && ${MAKE} install-man mandir="$sandbox"/man)
257 MANPATH=$sandbox/man:; export MANPATH
261 trap 'kill `cat "$sandbox"/*.pid`' 0 1 2 3 13 14 15
263 # Create database and start ovsdb-server.
264 touch "$sandbox"/.conf.db.~lock~
265 run ovsdb-tool create conf.db "$schema"
268 touch "$sandbox"/.ovnsb.db.~lock~
269 touch "$sandbox"/.ovnnb.db.~lock~
270 run ovsdb-tool create ovnsb.db "$ovnsb_schema"
271 run ovsdb-tool create ovnnb.db "$ovnnb_schema"
272 ovsdb_server_args="ovnsb.db ovnnb.db conf.db"
274 rungdb $gdb_ovsdb ovsdb-server --detach --no-chdir --pidfile -vconsole:off --log-file \
275 --remote=punix:"$sandbox"/db.sock $ovsdb_server_args
277 # Start ovs-vswitchd.
278 rungdb $gdb_vswitchd ovs-vswitchd --detach --no-chdir --pidfile -vconsole:off --log-file \
279 --enable-dummy=override -vvconn -vnetdev_dummy
282 rungdb $gdb_ovn_nbd ovn-nbd --detach --no-chdir --pidfile -vconsole:off --log-file
289 ----------------------------------------------------------------------
290 You are running in a dummy Open vSwitch environment. You can use
291 ovs-vsctl, ovs-ofctl, ovs-appctl, and other tools to work with the
294 Log files, pidfiles, and the configuration database are in the
295 "sandbox" subdirectory.
297 Exit the shell to kill the running daemons.
300 status=0; $SHELL || status=$?
303 ----------------------------------------------------------------------