#!/bin/sh
#
# sfacctd	sFlow accounting daemon.
#
# chkconfig: - 90 10
# description:	sFlow accounting daemon \
#		it listens for sFlow packets v2, \
#                v4 and v5 on one or more interfaces (both IPv4 and IPv6); \
#                statistics may be either pushed to stdout, stored in a \
#                memory table or a PostgreSQL/MySQL/SQLite database.

# processname: sfacctd
# config: /etc/pmacct/pmacct.conf
# pidfile: /var/run/sfacctd.pid

### BEGIN INIT INFO
# Provides: sfacctd
# Required-start: $network $syslog
# Required-stop: $network $syslog
# Default-start: 2 3 4 5
# Default-stop: 0 1 6
# Short-Description: sFlow accounting daemon
### END INIT INFO

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

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

DAEMON=/usr/sbin/sfacctd
NAME=sfacctd
CONFDIR=/etc/pmacct

start()
{
	start_daemon --lockfile "$LOCKFILE" --expect-user root -- $DAEMON -D -F $PIDFILE -f "$CONFDIR/sfacctd.conf"
	RETVAL=$?
	return $RETVAL
}

stop()
{
    for P in $(ls /var/run/$NAME*); do
	N=$(echo "$P" | sed "s/\/var\/run\/$NAME\.pid//g")
	stop_daemon --displayname "$NAME$N" --pidfile "$P" --lockfile "$LOCKFILE" --expect-user root -- sfacctd
	RETVAL=$?
	if [ ! $RETVAL = 0 ]; then
	    RETVAL2=$RETVAL
	fi
    done
    return $RETVAL2
}

restart()
{
        stop
        sleep 3
        start
}

stat()
{
    for P in $(ls /var/run/$NAME*); do
	N=$(echo "$P" | sed "s/\/var\/run\/$NAME\.pid//g")
	status --displayname "$NAME$N" --pidfile "$P" --expect-user root -- sfacctd
	RETVAL=$?
	if [ ! $RETVAL = 0 ]; then
	    RETVAL2=$RETVAL
	fi
    done
    return $RETVAL
}

# See how we were called.
case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	reload|restart)
		restart
		;;
	condstop)
		if [ -e "$LOCKFILE*" ]; then
			stop
		fi
		;;
	condrestart)
		if [ -e "$LOCKFILE*" ]; then
			restart
		fi
		;;
	condreload)
		if [ -e "$LOCKFILE*" ]; then
			restart
		fi
		;;
	status)
		stat
		;;
	*)
		msg_usage "${0##*/} {start|stop|reload|restart|condstop|condrestart|condreload|status}"
		RETVAL=1
esac

exit $RETVAL
