debian, rhel, xenserver: Ability to collect ovs-ctl logs.
[sliver-openvswitch.git] / utilities / ovs-lib.in
index 04ab85a..d010abf 100644 (file)
@@ -28,8 +28,24 @@ datadir=${OVS_PKGDATADIR-'@pkgdatadir@'}        # /usr/share/openvswitch
 bindir=${OVS_BINDIR-'@bindir@'}                 # /usr/bin
 sbindir=${OVS_SBINDIR-'@sbindir@'}              # /usr/sbin
 
+# /etc/openvswitch or /var/lib/openvswitch
+if test X"$OVS_DBDIR" != X; then
+    dbdir=$OVS_DBDIR
+elif test X"$OVS_SYSCONFDIR" != X; then
+    dbdir=$OVS_SYSCONFDIR/openvswitch
+else
+    dbdir='@DBDIR@'
+fi
+
+ovs_ctl () {
+    echo "`date -u`:$@" >> "${logdir}/ovs-ctl.log"
+    "${datadir}/scripts/ovs-ctl" "$@" 2>&1 | tee -a "${logdir}/ovs-ctl.log"
+}
+
 VERSION='@VERSION@'
 
+DAEMON_CWD=/
+
 LC_ALL=C; export LC_ALL
 
 ## ------------- ##
@@ -91,6 +107,7 @@ start_daemon () {
     wrapper=$2
     shift; shift
     daemon=$1
+    strace=""
 
     # drop core files in a sensible place
     test -d "$DAEMON_CWD" || install -d -m 755 -o root -g root "$DAEMON_CWD"
@@ -118,11 +135,19 @@ start_daemon () {
             ;;
         strace)
             if (strace -V) > /dev/null 2>&1; then
-                set strace -tt -T -s 256 -D -ff -o "$logdir/$daemon.strace.log" "$@"
+                strace="strace -tt -T -s 256 -ff"
+                if (strace -DV) > /dev/null 2>&1; then
+                    # Has the -D option.
+                    set $strace -D -o "$logdir/$daemon.strace.log" "$@"
+                    strace=""
+                fi
             else
                 log_failure_msg "strace not installed, running $daemon without it"
             fi
             ;;
+        glibc)
+            set env MALLOC_CHECK_=2 MALLOC_PERTURB_=165 "$@"
+            ;;
         '')
             ;;
         *)
@@ -136,9 +161,14 @@ start_daemon () {
     fi
 
     action "Starting $daemon" "$@"
+
+    if test X"$strace" != X; then
+        # Strace doesn't have the -D option so we attach after the fact.
+        setsid $strace -o "$logdir/$daemon.strace.log" \
+            -p `cat $rundir/$daemon.pid` > /dev/null 2>&1 &
+    fi
 }
 
-DAEMON_CWD=/
 stop_daemon () {
     if test -e "$rundir/$1.pid"; then
         if pid=`cat "$rundir/$1.pid"`; then