netdev-dpdk: fix mbuf leaks
[cascardo/ovs.git] / tutorial / ovs-sandbox
index 8aa2ddd..99cc3bb 100755 (executable)
@@ -28,7 +28,10 @@ run_xterm() {
 
 rungdb() {
     under_gdb=$1
+    gdb_run=$2
     shift
+    shift
+
     # Remove the --detach and to put the process under gdb control.
     # Also remove --vconsole:off to allow error message to show up
     # on the console.
@@ -36,7 +39,13 @@ rungdb() {
     if $under_gdb && [ "$DISPLAY" ]; then
         args=`echo $@ |sed s/--detach//g | sed s/--vconsole:off//g`
         xterm_title=$1
-        run_xterm $xterm_title gdb -ex run --args $args
+
+        gdb_cmd=""
+        if $gdb_run; then
+            gdb_cmd="-ex run"
+        fi
+
+        run_xterm $xterm_title gdb $gdb_cmd --args $args
     else
         run $@
     fi
@@ -44,8 +53,14 @@ rungdb() {
 
 gdb_vswitchd=false
 gdb_ovsdb=false
+gdb_vswitchd_ex=false
+gdb_ovsdb_ex=false
 gdb_ovn_northd=false
+gdb_ovn_northd_ex=false
 gdb_ovn_controller=false
+gdb_ovn_controller_ex=false
+gdb_ovn_controller_vtep=false
+gdb_ovn_controller_vtep_ex=false
 builddir=
 srcdir=
 schema=
@@ -96,6 +111,9 @@ These options force ovs-sandbox to use an installed Open vSwitch:
   -d, --gdb-ovsdb      run ovsdb-server under gdb
   --gdb-ovn-northd     run ovn-northd under gdb
   --gdb-ovn-controller run ovn-controller under gdb
+  --gdb-ovn-controller-vtep run ovn-controller-vtep under gdb
+  -R, --gdb-run        automatically start running the daemon in gdb
+                       for any daemon set to run under gdb
   -S, --schema=FILE    use FILE as vswitch.ovsschema
   -o, --ovn            enable OVN
 
@@ -134,9 +152,19 @@ EOF
             ;;
         -g|--gdb-v*)
             gdb_vswitchd=true
+            gdb_vswitchd_ex=false
+            ;;
+        -e|--gdb-ex-v*)
+            gdb_vswitchd=true
+            gdb_vswitchd_ex=true
             ;;
         -d|--gdb-ovsdb)
             gdb_ovsdb=true
+            gdb_ovsdb_ex=false
+            ;;
+        -r|--gdb-ex-o*)
+            gdb_ovsdb=true
+            gdb_ovsdb_ex=true
             ;;
         --gdb-ovn-northd)
             gdb_ovn_northd=true
@@ -144,9 +172,19 @@ EOF
         --gdb-ovn-controller)
             gdb_ovn_controller=true
             ;;
+        --gdb-ovn-controller-vtep)
+            gdb_ovn_controller_vtep=true
+            ;;
         -o|--ovn)
             ovn=true
             ;;
+        -R|--gdb-run)
+            gdb_vswitchd_ex=true
+            gdb_ovsdb_ex=true
+            gdb_ovn_northd_ex=true
+            gdb_ovn_controller_ex=true
+            gdb_ovn_controller_vtep_ex=true
+            ;;
         -*)
             echo "unrecognized option $option (use --help for help)" >&2
             exit 1
@@ -208,6 +246,11 @@ if $built; then
             echo >&2 'source directory not found, please use --srcdir'
             exit 1
         fi
+        vtep_schema=$srcdir/vtep/vtep.ovsschema
+        if test ! -e "$vtep_schema"; then
+            echo >&2 'source directory not found, please use --srcdir'
+            exit 1
+        fi
     fi
 
     # Put built tools early in $PATH.
@@ -215,9 +258,9 @@ if $built; then
         echo >&2 'build not found, please change set $builddir or change directory'
         exit 1
     fi
-    PATH=$builddir/ovsdb:$builddir/vswitchd:$builddir/utilities:$PATH
+    PATH=$builddir/ovsdb:$builddir/vswitchd:$builddir/utilities:$builddir/vtep:$PATH
     if $ovn; then
-        PATH=$builddir/ovn:$builddir/ovn/controller:$builddir/ovn/northd:$PATH
+        PATH=$builddir/ovn/controller:$builddir/ovn/controller-vtep:$builddir/ovn/northd:$builddir/ovn/utilities:$PATH
     fi
     export PATH
 else
@@ -258,7 +301,7 @@ OVS_SYSCONFDIR=$sandbox; export OVS_SYSCONFDIR
 
 if $built; then
     # Easy access to OVS manpages.
-    (cd "$builddir" && ${MAKE} install-man mandir="$sandbox"/man)
+    (cd "$builddir" && ${MAKE-make} install-man mandir="$sandbox"/man)
     MANPATH=$sandbox/man:; export MANPATH
 fi
 
@@ -274,27 +317,40 @@ if $ovn; then
     touch "$sandbox"/.ovnnb.db.~lock~
     run ovsdb-tool create ovnsb.db "$ovnsb_schema"
     run ovsdb-tool create ovnnb.db "$ovnnb_schema"
-    ovsdb_server_args="ovnsb.db ovnnb.db conf.db"
+    run ovsdb-tool create vtep.db "$vtep_schema"
+    ovsdb_server_args="ovnsb.db ovnnb.db vtep.db conf.db"
 fi
-rungdb $gdb_ovsdb ovsdb-server --detach --no-chdir --pidfile -vconsole:off --log-file \
+rungdb $gdb_ovsdb $gdb_ovsdb_ex ovsdb-server --detach --no-chdir --pidfile -vconsole:off --log-file \
     --remote=punix:"$sandbox"/db.sock $ovsdb_server_args
 
+#Add a small delay to allow ovsdb-server to launch.
+sleep 0.1
+
+#Wait for ovsdb-server to finish launching.
+if test ! -e "$sandbox"/db.sock; then
+    echo -n "Waiting for ovsdb-server to start..."
+    while test ! -e "$sandbox"/db.sock; do
+        sleep 1;
+    done
+    echo "  Done"
+fi
+
 # Initialize database.
 run ovs-vsctl --no-wait -- init
 
 # Start ovs-vswitchd.
-rungdb $gdb_vswitchd ovs-vswitchd --detach --no-chdir --pidfile -vconsole:off --log-file \
+rungdb $gdb_vswitchd $gdb_vswitchd_ex ovs-vswitchd --detach --no-chdir --pidfile -vconsole:off --log-file \
     --enable-dummy=override -vvconn -vnetdev_dummy
 
 if $ovn; then
     ovs-vsctl set open . external-ids:system-id=56b18105-5706-46ef-80c4-ff20979ab068
     ovs-vsctl set open . external-ids:ovn-remote=unix:"$sandbox"/db.sock
-    ovs-vsctl set open . external-ids:ovn-encap-type=vxlan
+    ovs-vsctl set open . external-ids:ovn-encap-type=geneve
     ovs-vsctl set open . external-ids:ovn-encap-ip=127.0.0.1
-    ovs-vsctl add-br br-int
 
-    rungdb $gdb_ovn_northd ovn-northd --detach --no-chdir --pidfile -vconsole:off --log-file
-    rungdb $gdb_ovn_controller ovn-controller --detach --no-chdir --pidfile -vconsole:off --log-file
+    rungdb $gdb_ovn_northd $gdb_ovn_northd_ex ovn-northd --detach --no-chdir --pidfile -vconsole:off --log-file
+    rungdb $gdb_ovn_controller $gdb_ovn_controller_ex ovn-controller --detach --no-chdir --pidfile -vconsole:off --log-file
+    rungdb $gdb_ovn_controller_vtep $gdb_ovn_controller_vtep_ex ovn-controller-vtep --detach --no-chdir --pidfile -vconsole:off --log-file
 fi
 
 cat <<EOF
@@ -304,8 +360,16 @@ cat <<EOF
 ----------------------------------------------------------------------
 You are running in a dummy Open vSwitch environment.  You can use
 ovs-vsctl, ovs-ofctl, ovs-appctl, and other tools to work with the
-dummy switch.  
+dummy switch.
 
+EOF
+if $ovn; then cat << EOF
+This environment also has the OVN daemons and databases enabled.
+You can use ovn-nbctl and ovn-sbctl to interact with the OVN databases.
+
+EOF
+fi
+cat <<EOF
 Log files, pidfiles, and the configuration database are in the
 "sandbox" subdirectory.