3 # Copyright (c) 2013, 2015 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 "$@" &
35 # Remove the --detach and to put the process under gdb control.
36 # Also remove --vconsole:off to allow error message to show up
38 # Use "DISPLAY" variable to determine out if X is supported
39 if $under_gdb && [ "$DISPLAY" ]; then
40 args
=`echo $@ |sed s/--detach//g | sed s/--vconsole:off//g`
48 run_xterm
$xterm_title gdb
$gdb_cmd --args $args
65 # This option-parsing mechanism borrowed from a Autoconf-generated
66 # configure script under the following license:
68 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
69 # 2002, 2003, 2004, 2005, 2006, 2009, 2013 Free Software Foundation, Inc.
70 # This configure script is free software; the Free Software Foundation
71 # gives unlimited permission to copy, distribute and modify it.
73 # If the previous option needs an argument, assign it.
74 if test -n "$prev"; then
80 *=*) optarg
=`expr "X$option" : '[^=]*=\(.*\)'` ;;
84 case $dashdash$option in
89 ovs-sandbox, for starting a sandboxed dummy Open vSwitch environment
92 If you run ovs-sandbox from an OVS build directory, it uses the OVS that
93 you built. Otherwise, if you have an installed Open vSwitch, it uses
94 the installed version.
96 These options force ovs-sandbox to use a particular OVS build:
97 -b, --builddir=DIR specify Open vSwitch build directory
98 -s, --srcdir=DIR specify Open vSwitch source directory
99 These options force ovs-sandbox to use an installed Open vSwitch:
100 -i, --installed use installed Open vSwitch
101 -g, --gdb-vswitchd run ovs-vswitchd under gdb
102 -d, --gdb-ovsdb run ovsdb-server under gdb
103 -S, --schema=FILE use FILE as vswitch.ovsschema
106 -h, --help Print this usage message.
140 gdb_vswitchd_ex
=false
155 echo "unrecognized option $option (use --help for help)" >&2
159 echo "$option: non-option arguments not supported (use --help for help)" >&2
166 if $installed && $built; then
167 echo "sorry, conflicting options (use --help for help)" >&2
169 elif $installed ||
$built; then
171 elif test -e vswitchd
/ovs-vswitchd
; then
174 elif (ovs-vswitchd
--version) >/dev
/null
2>&1; then
177 echo "can't find an OVS build or install (use --help for help)" >&2
182 if test ! -e "$builddir"/vswitchd
/ovs-vswitchd
; then
183 echo "$builddir does not appear to be an OVS build directory" >&2
186 builddir
=`cd $builddir && pwd`
192 if test ! -e "$srcdir"/WHY-OVS.md
; then
193 srcdir
=`cd $builddir/.. && pwd`
197 *) srcdir
=`pwd`/$srcdir ;;
199 schema
=$srcdir/vswitchd
/vswitch.ovsschema
200 if test ! -e "$schema"; then
201 echo >&2 'source directory not found, please use --srcdir'
205 # Put built tools early in $PATH.
206 if test ! -e $builddir/vswitchd
/ovs-vswitchd
; then
207 echo >&2 'build not found, please change set $builddir or change directory'
210 PATH
=$builddir/ovsdb
:$builddir/vswitchd
:$builddir/utilities
:$PATH
216 /usr
/local
/share
/openvswitch
/vswitch.ovsschema \
217 /usr
/share
/openvswitch
/vswitch.ovsschema \
219 if test -r $schema; then
225 *) schema
=`pwd`/$schema ;;
227 if test ! -r "$schema"; then
228 echo "can't find vswitch.ovsschema, please specify --schema" >&2
236 sandbox
=`cd sandbox && pwd`
238 # Set up environment for OVS programs to sandbox themselves.
239 OVS_RUNDIR
=$sandbox; export OVS_RUNDIR
240 OVS_LOGDIR
=$sandbox; export OVS_LOGDIR
241 OVS_DBDIR
=$sandbox; export OVS_DBDIR
242 OVS_SYSCONFDIR
=$sandbox; export OVS_SYSCONFDIR
245 # Easy access to OVS manpages.
246 (cd "$builddir" && ${MAKE} install-man mandir
="$sandbox"/man
)
247 MANPATH
=$sandbox/man
:; export MANPATH
251 trap 'kill `cat "$sandbox"/*.pid`' 0 1 2 3 13 14 15
253 # Create database and start ovsdb-server.
254 touch "$sandbox"/.conf.db.~lock~
255 run ovsdb-tool create conf.db
"$schema"
256 rungdb
$gdb_ovsdb $gdb_ovsdb_ex ovsdb-server
--detach --no-chdir --pidfile -vconsole:off
--log-file \
257 --remote=punix
:"$sandbox"/db.sock
259 #Add a small delay to allow ovsdb-server to launch.
262 #Wait for ovsdb-server to finish launching.
263 if test ! -e "$sandbox"/db.sock
; then
264 echo -n "Waiting for ovsdb-server to start..."
265 while test ! -e "$sandbox"/db.sock
; do
271 # Initialize database.
272 run ovs-vsctl
--no-wait -- init
274 # Start ovs-vswitchd.
275 rungdb
$gdb_vswitchd $gdb_vswitchd_ex ovs-vswitchd
--detach --no-chdir --pidfile -vconsole:off
--log-file \
276 --enable-dummy=override
-vvconn -vnetdev_dummy
282 ----------------------------------------------------------------------
283 You are running in a dummy Open vSwitch environment. You can use
284 ovs-vsctl, ovs-ofctl, ovs-appctl, and other tools to work with the
287 Log files, pidfiles, and the configuration database are in the
288 "sandbox" subdirectory.
290 Exit the shell to kill the running daemons.
293 status
=0; $SHELL || status
=$?
296 ----------------------------------------------------------------------