#! /bin/sh
### BEGIN INIT INFO
# Provides:          tgtd
# Required-Start:    $syslog $remote_fs
# Should-Start:
# Required-Stop:     $syslog $remote_fs
# Should-Stop:
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: Linux SCSI target daemon
# Description:       Linux SCSI target framework (tgt) aims to simplify various
#                    SCSI target driver (iSCSI, Fibre Channel, SRP, etc) creation and maintenance.
### END INIT INFO

TGTD_BIN=/usr/sbin/tgtd
test -x $TGTD_BIN || { echo "$TGTD_BIN not installed"; 
	if [ "$1" = "stop" ]; then exit 0;
	else exit 5; fi; }

TGTD_SYSCONFIG=/etc/sysconfig/tgt
test -r $TGTD_SYSCONFIG || { echo "$TGTD_SYSCONFIG not existing";
	if [ "$1" = "stop" ]; then exit 0;
	else exit 6; fi; }

. $TGTD_SYSCONFIG

TGTD_PARAMS="--iscsi portal=$BIND_ADDRESS:$BIND_PORT"
TGTD_CONFIG=/etc/tgt/targets.conf
PID_FILE=/var/run/tgtd.pid

. /lib/lsb/init-functions

case "$1" in
    start)
	echo -n "Starting Linux SCSI target daemon "
	/sbin/modprobe crc32c 2>/dev/null
	/sbin/modprobe scsi_tgt
	start_daemon -p $PID_FILE $TGTD_BIN $TGTD_PARAMS
	test -r $TGTD_CONFIG && /usr/sbin/tgt-admin -e -c $TGTD_CONFIG
	test $? -eq 0 && log_success_msg || log_failure_msg
	;;
    stop)
	echo -n "Shutting down Linux SCSI target daemon "
	/usr/sbin/tgt-admin --offline ALL
	/usr/sbin/tgt-admin --delete ALL
	killproc -p $PIDFILE -KILL $TGTD_BIN
	/sbin/modprobe -r scsi_tgt 2>/dev/null
	RETVAL=$?
	/sbin/modprobe -r crc32c 2>/dev/null
	if [ $RETVAL != "0" ]; then
	  log_failure_msg
	  exit 1
	fi
	log_success_msg
	;;
    restart)
	$0 stop
	$0 start
	;;
    status)
	echo -n "Checking for Linux SCSI target daemon "
	pidofproc -p $PID_FILE $TGTD_BIN
	test $? -eq 0 && log_success_msg || log_failure_msg
	;;
    *)
	echo "Usage: $0 {start|stop|status|restart}"
	exit 1
	;;
esac
