#!/bin/sh
#
# Copyright(c) 2010-2011 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.
#
# chkconfig: - 21 80
#
# Maintained at www.Open-FCoE.org
### BEGIN INIT INFO
# Provides: fcoe
# Required-Start: network
# Required-Stop:
# Default-Start:
# Default-Stop:
# Short-Description: Open-FCoE Initiator
# Description: Open-FCoE Initiator
### END INIT INFO
CONFIG_DIR=/etc/fcoe
LOG_FILE="/var/log/fcoemon.log"
LOCKFILE="/var/lock/subsys/fcoe"
FCOEMON=/usr/sbin/fcoemon
FCOEADM=/usr/sbin/fcoeadm
FCOEMON_OPTS=
. /etc/init.d/functions
. $CONFIG_DIR/config
if [ "$USE_SYSLOG" = "yes" ] || [ "$USE_SYSLOG" = "YES" ]; then
FCOEMON_OPTS+=" --syslog"
fi
if [ "$DEBUG" = "yes" ] || [ "$DEBUG" = "YES" ]; then
FCOEMON_OPTS+=" --debug"
fi
test -x $FCOEADM || {
echo "$FCOEADM not installed";
if [ "$1" = "stop" ]; then exit 0;
else
failure
fi
}
test -x $FCOEMON || {
echo "$FCOEMON not installed";
if [ "$1" = "stop" ]; then exit 0;
else
failure
fi
}
start()
{
echo -n $"Starting FCoE initiator service: "
pid=$($FCOEADM -p 2> /dev/null)
if [ -z "$pid" ]; then
modprobe -q libfc
modprobe -q sg
modprobe -q -a $SUPPORTED_DRIVERS
daemon ${FCOEMON} ${FCOEMON_OPTS}
echo
touch ${LOCKFILE}
echo
else
echo "(already running)"
fi
}
stop()
{
local force=$1
pid=$($FCOEADM -p 2> /dev/null)
if [ "$force" == "force" ]
then
action "Destroying any active fcoe interface/s"
[ "$pid" ] && kill -HUP $pid
modprobe -r $SUPPORTED_DRIVERS libfc
else
[ "$pid" ] && kill -TERM $pid
fi
action $"Stopping FCoE initiator service: "
rm -f ${LOCKFILE}
}
status()
{
[ -f ${LOCKFILE} ] || { echo "$FCOEMON is stopped" ; return 3; }
status=0
pid=$($FCOEADM -p 2> /dev/null)
echo "$FCOEMON is running, pid=$pid"
interfaces=`$FCOEADM -i 2>&1 | \
awk '/Symbolic Name:/{print $6}' | \
sort | awk '{printf("%s ", $1)}'`
if [ -z "$interfaces" ]; then
echo "No interfaces created."
status=2
else
echo "Created interfaces: $interfaces"
fi
return $status
}
case "$1" in
start)
start
;;
stop)
stop $2
;;
restart)
stop $2
start
;;
force-reload)
stop force
start
;;
status)
status
exit $?
;;
condrestart|try-restart)
status || exit 0
$0 restart
;;
*)
echo -n "Usage: $0 {start|stop [force]|status|restart [force]|"
echo "force-reload|condrestart|try-restart}"
exit 1
;;
esac