#!/bin/sh
#
# zfs-share     This script will network share zfs filesystems and volumes.
#
# chkconfig:    2345 05 95
# description:  Run the `zfs share -a` or `zfs unshare -a` commands
#               for controlling iSCSI, NFS, or CIFS network shares.
# probe: true
#
### BEGIN INIT INFO
# Provides:          zfs-share
# Required-Start:    $local_fs $network $remote_fs zfs-mount
# Required-Stop:     $local_fs $network $remote_fs zfs-mount
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Should-Start:      iscsi iscsitarget istgt scst nfs samba samba4 zfs-mount zfs-zed
# Should-Stop:       iscsi iscsitarget istgt scst nfs samba samba4 zfs-mount zfs-zed
# Short-Description: Network share ZFS datasets and volumes.
# Description:       Run the `zfs share -a` or `zfs unshare -a` commands
#                    for controlling iSCSI, NFS, or CIFS network shares.
### END INIT INFO
#
# Released under the 2-clause BSD license.
#
# The original script that acted as a template for this script came from
# the Debian GNU/Linux kFreeBSD ZFS packages (which did not include a
# licensing stansa) in the commit dated Mar 24, 2011:
#   https://github.com/zfsonlinux/pkg-zfs/commit/80a3ae582b59c0250d7912ba794dca9e669e605a

# Source the common init script
. /etc/zfs/zfs-functions

# ----------------------------------------------------

do_start()
{
check_boolean "$ZFS_SHARE" || exit 0
check_module_loaded "zfs" || exit 0

log_info_msg "Sharing ZFS filesystems"
"$ZFS" share -a
evaluate_retval
}

do_stop()
{
check_boolean "$ZFS_UNSHARE" || exit 0
check_module_loaded "zfs" || exit 0

log_info_msg "Unsharing ZFS filesystems"
"$ZFS" unshare -a
evaluate_retval
}

# ----------------------------------------------------
case "$1" in
	start)
	  do_start
	  ;;
	stop)
	  do_stop
	  ;;
        force-reload|condrestart|reload|restart|status)
	  # no-op
	  ;;
	*)
	  [ -n "$1" ] && echo "Error: Unknown command $1."
	  echo "Usage: $0 {start|stop}"
	  exit 3
	  ;;
	esac

exit $?
