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
30 # Remove the --detach and to put the process under gdb control.
31 # Also remove --vconsole:off to allow error message to show up
33 # Use "DISPLAY" variable to determine out if X is supported
34 if $under_gdb && [ "$DISPLAY" ]; then
35 args=`echo $@ |sed s/--detach//g | sed s/--vconsole:off//g`
36 run_xterm gdb --args $args
50 # This option-parsing mechanism borrowed from a Autoconf-generated
51 # configure script under the following license:
53 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
54 # 2002, 2003, 2004, 2005, 2006, 2009, 2013 Free Software Foundation, Inc.
55 # This configure script is free software; the Free Software Foundation
56 # gives unlimited permission to copy, distribute and modify it.
58 # If the previous option needs an argument, assign it.
59 if test -n "$prev"; then
65 *=*) optarg=`expr "X$option" : '[^=]*=\(.*\)'` ;;
69 case $dashdash$option in
74 ovs-sandbox, for starting a sandboxed dummy Open vSwitch environment
77 If you run ovs-sandbox from an OVS build directory, it uses the OVS that
78 you built. Otherwise, if you have an installed Open vSwitch, it uses
79 the installed version.
81 These options force ovs-sandbox to use a particular OVS build:
82 -b, --builddir=DIR specify Open vSwitch build directory
83 -s, --srcdir=DIR specify Open vSwitch source directory
84 These options force ovs-sandbox to use an installed Open vSwitch:
85 -i, --installed use installed Open vSwitch
86 -g, --gdb-vswitchd run ovs-vswitchd under gdb
87 -S, --schema=FILE use FILE as vswitch.ovsschema
90 -h, --help Print this usage message.
126 echo "unrecognized option $option (use --help for help)" >&2
130 echo "$option: non-option arguments not supported (use --help for help)" >&2
137 if $installed && $built; then
138 echo "sorry, conflicting options (use --help for help)" >&2
140 elif $installed || $built; then
142 elif test -e vswitchd/ovs-vswitchd; then
145 elif (ovs-vswitchd --version) >/dev/null 2>&1; then
148 echo "can't find an OVS build or install (use --help for help)" >&2
153 if test ! -e "$builddir"/vswitchd/ovs-vswitchd; then
154 echo "$builddir does not appear to be an OVS build directory" >&2
157 builddir=`cd $builddir && pwd`
163 if test ! -e "$srcdir"/WHY-OVS.md; then
164 srcdir=`cd $builddir/.. && pwd`
168 *) srcdir=`pwd`/$srcdir ;;
170 schema=$srcdir/vswitchd/vswitch.ovsschema
171 if test ! -e "$schema"; then
172 echo >&2 'source directory not found, please use --srcdir'
176 # Put built tools early in $PATH.
177 if test ! -e $builddir/vswitchd/ovs-vswitchd; then
178 echo >&2 'build not found, please change set $builddir or change directory'
181 PATH=$builddir/ovsdb:$builddir/vswitchd:$builddir/utilities:$PATH
187 /usr/local/share/openvswitch/vswitch.ovsschema \
188 /usr/share/openvswitch/vswitch.ovsschema \
190 if test -r $schema; then
196 *) schema=`pwd`/$schema ;;
198 if test ! -r "$schema"; then
199 echo "can't find vswitch.ovsschema, please specify --schema" >&2
207 sandbox=`cd sandbox && pwd`
209 # Set up environment for OVS programs to sandbox themselves.
210 OVS_RUNDIR=$sandbox; export OVS_RUNDIR
211 OVS_LOGDIR=$sandbox; export OVS_LOGDIR
212 OVS_DBDIR=$sandbox; export OVS_DBDIR
213 OVS_SYSCONFDIR=$sandbox; export OVS_SYSCONFDIR
216 # Easy access to OVS manpages.
217 (cd "$builddir" && ${MAKE} install-man mandir="$sandbox"/man)
218 MANPATH=$sandbox/man:; export MANPATH
222 trap 'kill `cat "$sandbox"/*.pid`' 0 1 2 3 13 14 15
224 # Create database and start ovsdb-server.
225 touch "$sandbox"/.conf.db.~lock~
226 run ovsdb-tool create conf.db "$schema"
227 run ovsdb-server --detach --no-chdir --pidfile -vconsole:off --log-file \
228 --remote=punix:"$sandbox"/db.sock
230 # Start ovs-vswitchd.
231 rungdb $gdb_vswitchd ovs-vswitchd --detach --no-chdir --pidfile -vconsole:off --log-file \
232 --enable-dummy=override -vvconn -vnetdev_dummy
238 ----------------------------------------------------------------------
239 You are running in a dummy Open vSwitch environment. You can use
240 ovs-vsctl, ovs-ofctl, ovs-appctl, and other tools to work with the
243 Log files, pidfiles, and the configuration database are in the
244 "sandbox" subdirectory.
246 Exit the shell to kill the running daemons.
249 status=0; $SHELL || status=$?
252 ----------------------------------------------------------------------