#! /bin/sh
#
# submitted by Morgon Kanter
# 

PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/vtund
CONFFILE=/etc/vtund-start.conf
PIDPREFIX=/var/run/vtund
  
test -f $DAEMON || exit 0
  
case "$1" in 
       start)
      # find all the defined tunnels
      egrep -v '^[:space:]*(#.*)?$' $CONFFILE | while true;
      do
          read i
          # no more lines available? done, then.
          if [ $? != 0 ] ; then break; fi
              SARGS=`echo $i|sed -ne 's/--server--\s*/-s -P /p'`;
              if [ -n "$SARGS" ];
              then
                 echo "Starting vtund server."
                  start-stop-daemon --start --exec $DAEMON --pidfile $PIDPREFIX.pid -- $SARGS;
              else
                  # split args into host and rest
                  HOST=`echo $i|cut -f 1 -d " "`;
                  TARGET=`echo $i|cut -f 2 -d " "`;
                  echo  "Starting vtund client $HOST to $TARGET.";
                  start-stop-daemon --start --exec $DAEMON --pidfile $PIDPREFIX.$HOST.pid -- $i;
 
              fi
          done
              ;;
       stop) 
          echo "Stopping vtund.";
          for i in $PIDPREFIX*;
          do
              start-stop-daemon --stop --pidfile $i; 
              rm -f $i;
          done
               ;;
       reload|force-reload)
          echo "Reloading vtund.";
          for i in $PIDPREFIX*;
          do
              start-stop-daemon --stop --signal 1 --pidfile $i; 
          done
              ;;
       restart) 
          $0 stop
          sleep 1;
          $0 start
          ;;
   *)
      echo "Usage: $0 {start|stop|restart|reload|force-reload}" >&2
       exit 1
               ;;
esac
exit 0
