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
53 # This option-parsing mechanism borrowed from a Autoconf-generated
54 # configure script under the following license:
56 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
57 # 2002, 2003, 2004, 2005, 2006, 2009, 2013 Free Software Foundation, Inc.
58 # This configure script is free software; the Free Software Foundation
59 # gives unlimited permission to copy, distribute and modify it.
61 # If the previous option needs an argument, assign it.
62 if test -n "$prev"; then
68 *=*) optarg=`expr "X$option" : '[^=]*=\(.*\)'` ;;
72 case $dashdash$option in
77 ovs-sandbox, for starting a sandboxed dummy Open vSwitch environment
80 If you run ovs-sandbox from an OVS build directory, it uses the OVS that
81 you built. Otherwise, if you have an installed Open vSwitch, it uses
82 the installed version.
84 These options force ovs-sandbox to use a particular OVS build:
85 -b, --builddir=DIR specify Open vSwitch build directory
86 -s, --srcdir=DIR specify Open vSwitch source directory
87 These options force ovs-sandbox to use an installed Open vSwitch:
88 -i, --installed use installed Open vSwitch
89 -g, --gdb-vswitchd run ovs-vswitchd under gdb
90 -S, --schema=FILE use FILE as vswitch.ovsschema
93 -h, --help Print this usage message.
129 echo "unrecognized option $option (use --help for help)" >&2
133 echo "$option: non-option arguments not supported (use --help for help)" >&2
140 if $installed && $built; then
141 echo "sorry, conflicting options (use --help for help)" >&2
143 elif $installed || $built; then
145 elif test -e vswitchd/ovs-vswitchd; then
148 elif (ovs-vswitchd --version) >/dev/null 2>&1; then
151 echo "can't find an OVS build or install (use --help for help)" >&2
156 if test ! -e "$builddir"/vswitchd/ovs-vswitchd; then
157 echo "$builddir does not appear to be an OVS build directory" >&2
160 builddir=`cd $builddir && pwd`
166 if test ! -e "$srcdir"/WHY-OVS.md; then
167 srcdir=`cd $builddir/.. && pwd`
171 *) srcdir=`pwd`/$srcdir ;;
173 schema=$srcdir/vswitchd/vswitch.ovsschema
174 if test ! -e "$schema"; then
175 echo >&2 'source directory not found, please use --srcdir'
179 # Put built tools early in $PATH.
180 if test ! -e $builddir/vswitchd/ovs-vswitchd; then
181 echo >&2 'build not found, please change set $builddir or change directory'
184 PATH=$builddir/ovsdb:$builddir/vswitchd:$builddir/utilities:$PATH
190 /usr/local/share/openvswitch/vswitch.ovsschema \
191 /usr/share/openvswitch/vswitch.ovsschema \
193 if test -r $schema; then
199 *) schema=`pwd`/$schema ;;
201 if test ! -r "$schema"; then
202 echo "can't find vswitch.ovsschema, please specify --schema" >&2
210 sandbox=`cd sandbox && pwd`
212 # Set up environment for OVS programs to sandbox themselves.
213 OVS_RUNDIR=$sandbox; export OVS_RUNDIR
214 OVS_LOGDIR=$sandbox; export OVS_LOGDIR
215 OVS_DBDIR=$sandbox; export OVS_DBDIR
216 OVS_SYSCONFDIR=$sandbox; export OVS_SYSCONFDIR
219 # Easy access to OVS manpages.
220 (cd "$builddir" && ${MAKE} install-man mandir="$sandbox"/man)
221 MANPATH=$sandbox/man:; export MANPATH
225 trap 'kill `cat "$sandbox"/*.pid`' 0 1 2 3 13 14 15
227 # Create database and start ovsdb-server.
228 touch "$sandbox"/.conf.db.~lock~
229 run ovsdb-tool create conf.db "$schema"
230 run ovsdb-server --detach --no-chdir --pidfile -vconsole:off --log-file \
231 --remote=punix:"$sandbox"/db.sock
233 # Start ovs-vswitchd.
234 rungdb $gdb_vswitchd ovs-vswitchd --detach --no-chdir --pidfile -vconsole:off --log-file \
235 --enable-dummy=override -vvconn -vnetdev_dummy
241 ----------------------------------------------------------------------
242 You are running in a dummy Open vSwitch environment. You can use
243 ovs-vsctl, ovs-ofctl, ovs-appctl, and other tools to work with the
246 Log files, pidfiles, and the configuration database are in the
247 "sandbox" subdirectory.
249 Exit the shell to kill the running daemons.
252 status=0; $SHELL || status=$?
255 ----------------------------------------------------------------------