#!@SHELL@
#
# zfs-share     This script will network share zfs filesystems and volumes.
#
# chkconfig:    2345 30 99
# 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_SRV@ samba samba4 zfs-mount zfs-zed
# Should-Stop:       iscsi iscsitarget istgt scst @NFS_SRV@ 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
. @sysconfdir@/zfs/zfs-functions

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

do_depend()
{
	after sysfs zfs-mount zfs-zed
	keyword -lxc -openvz -prefix -vserver
}

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

	check_module_loaded "zfs" || exit 0

	zfs_action "Sharing ZFS filesystems" "$ZFS" share -a
}

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

	check_module_loaded "zfs" || exit 0

	zfs_action "Unsharing ZFS filesystems" "$ZFS" unshare -a
}

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

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

	exit $?
else
	# Create wrapper functions since Gentoo don't use the case part.
	depend() { do_depend; }
	start() { do_start; }
	stop() { do_stop; }
fi
