#!/bin/sh
#
# ietd - iSCSI Enterprise Target Daemon
#
# chkconfig: - 39 35
# description: Starts and stops the iSCSI target
# processname: ietd
# config:  /etc/ietd.conf
# pidfile: /var/run/ietd.pid

# Do not load RH compatibility interface.
WITHOUT_RC_COMPAT=1

# Source function library.
. /etc/init.d/functions

PIDFILE=/var/run/iscsi_trgt.pid
LOCKFILE=/var/lock/subsys/ietd
RETVAL=0

MEM_SIZE=1048576

configure_memsize()
{
    if [ -e /proc/sys/net/core/wmem_max ]; then
        echo ${MEM_SIZE} > /proc/sys/net/core/wmem_max
    fi

    if [ -e /proc/sys/net/core/rmem_max ]; then
        echo ${MEM_SIZE} > /proc/sys/net/core/rmem_max
    fi

    if [ -e /proc/sys/net/core/wmem_default ]; then
        echo ${MEM_SIZE} > /proc/sys/net/core/wmem_default
    fi

    if [ -e /proc/sys/net/core/rmem_default ]; then
        echo ${MEM_SIZE} > /proc/sys/net/core/rmem_default
    fi

    if [ -e /proc/sys/net/ipv4/tcp_mem ]; then
        echo "${MEM_SIZE} ${MEM_SIZE} ${MEM_SIZE}" > /proc/sys/net/ipv4/tcp_mem
    fi

    if [ -e  /proc/sys/net/ipv4/tcp_rmem ]; then
        echo "${MEM_SIZE} ${MEM_SIZE} ${MEM_SIZE}" > /proc/sys/net/ipv4/tcp_rmem
    fi

    if [ -e /proc/sys/net/ipv4/tcp_wmem ]; then
        echo "${MEM_SIZE} ${MEM_SIZE} ${MEM_SIZE}" > /proc/sys/net/ipv4/tcp_wmem
    fi
}

RETVAL=0

start()
{
	configure_memsize
	modprobe -q crc32c
	modprobe iscsi_trgt
	start_daemon --displayname "iSCSI target" --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user root -- ietd
	RETVAL=$?
	return $RETVAL
}
	
stop()
{
	ietadm --op delete >/dev/null 2>/dev/null
	stop_daemon --displayname "iSCSI target" --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user root -- ietd
	modprobe -r iscsi_trgt 2>/dev/null
	RETVAL=$?
	modprobe -r crc32c 2>/dev/null
	return $RETVAL
}

restart()
{
        stop
	sleep 1
        start
}

condrestart()
{
	if [ -e "$LOCKFILE" ]; then
                    restart
	fi
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  condrestart)
        condrestart
        ;;
  status)
        status --displayname "iSCSI target" --pidfile "$PIDFILE" --expect-user root -- ietd
        RETVAL=$?
        ;;
  *)
	msg_usage "${0##*/} {start|stop|restart|condrestart|status}"
        RETVAL=1
esac

exit 0
