#!/bin/sh
#
# Copyright(c) 2009 Intel Corporation. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms and conditions of the GNU General Public License,
# version 2, as published by the Free Software Foundation.
#
# This program is distributed in the hope it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
# more details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
#
# Maintained at www.Open-FCoE.org
#
#
# chkconfig: 2345 92 19
# description: OpenFC and FCoE: Fibre Channel over Ethernet SAN setup

PATH=/sbin:/bin:/usr/sbin:/usr/bin

HBA=
FCOEADM=fcoeadm
FCOE_CONF=/etc/fcoe/open-fcoe.conf

# validates the ifname
fcoe_gethba() {
	HBA=
	if [ ! -e $FCOE_CONF ]
	then
		echo "Open-fcoe config file $FCOE_CONF not found!"
		return
	fi
	# get HBA=
	HBA=`grep -v "#" $FCOE_CONF | grep "HBA=" | cut -f2 -d=`
	if ! ifconfig $HBA &> /dev/null
	then
		echo "HBA $HBA not found in $FCOE_CONF!"
		HBA=
	fi
}
# check fcoeadm
which $FCOEADM > /dev/null 2>&1
if [ "$?" -eq "1" ]
then
	echo "$0: $FCOEADM command not installed" >&2
	exit 1
fi

# Switch on start / stop argument
case "$1" in
start)

	# start fcmon
	lsmod | grep fcoe &> /dev/null
	if [ "$?" -eq "1" ]
	then
		modprobe -q fcoe 2> /dev/null
		if [ "$?" -eq "1" ]
		then
			echo "Failed to load FCoE driver module!"
			exit 1
		fi
	fi
	# get HBA from conf
	fcoe_gethba
	if [ -z "$HBA" ]
	then
		echo "Please setup the config file $FCOE_CONF first!"
		exit 1
	else
		$FCOEADM --create $HBA >&2
	fi
	;;

stop)
	lsmod | grep fcoe &> /dev/null
	if [ "$?" -eq "1" ]
	then
		echo "Open-FCoE driver module not loaded!"
		exit 1
	fi
	fcoe_gethba
	if [ -n "$HBA" ]
	then
		$FCOEADM --destroy $HBA >&2
	fi
	;;

status)
	lsmod | grep fcoe &> /dev/null
	if [ "$?" -eq "1" ]
	then
		echo "Open-FCoE driver module not loaded!"
		exit 1
	fi
	fcoe_gethba
	$FCOEADM --query $HBA >&2
	;;

restart | reload)
	$0 stop
	$0 start
	;;

save)
	;;

*)
	echo "Usage: $0 {start|stop|reload|restart|status}" >&2
	exit 1
	;;
esac
