#!/bin/sh
#
# /etc/init.d/conntrackd
#
# Maximilian Wilhelm <max@rfc2324.org>
#  -- Mon, 06 Nov 2006 18:39:07 +0100
#
# Roman I Khimov <khimov@altell.ru>
#  -- Tue, 27 Oct 2009 14:34:00 +0300

### BEGIN INIT INFO
# Provides:          conntrackd
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Description: Starts conntrackd
# short-description: Starts conntrackd
### END INIT INFO

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

NAME="conntrackd"
DAEMON="/usr/sbin/conntrackd"
CONFIG="/etc/conntrackd/conntrackd.conf"
PIDFILE="/var/run/${NAME}.pid"


# Gracefully exit if there is no daemon (debian way of life)
if [ ! -x "${DAEMON}" ]; then
	exit 0
fi

# Check for config file
if [ ! -f /etc/conntrackd/conntrackd.conf ]; then
	echo "Error: There is no config file for $NAME" >&2
	exit 1;
fi

case "$1" in
  start)
        echo -n "Starting $NAME: "
	for i in nf_conntrack_netlink nf_conntrack_netbios_ns nf_conntrack_proto_dccp nf_conntrack_tftp \
		nf_conntrack_sane nf_conntrack_pptp nf_conntrack_irc nf_conntrack_amanda nf_conntrack_h323 \
		nf_conntrack_proto_udplite nf_conntrack_proto_gre nf_conntrack_proto_sctp nf_conntrack_ftp \
		nf_conntrack_sip; do
		modprobe $i >/dev/null 2>/dev/null &
	done
	start-stop-daemon --start --quiet --make-pidfile --pidfile "/var/run/${NAME}.pid" --background --exec "${DAEMON}"
	RET=$?
	if [ "$?" = "0" ]; then
		sleep 2
		# Sync with other server
		conntrackd -n
		echo "done."
	else
		echo "FAILED!"
	fi
	exit $RET
	;;
  stop)
        echo -n "Stopping $NAME:"
	start-stop-daemon --stop --quiet --oknodo --pidfile "/var/run/${NAME}.pid" && echo "done." || echo "FAILED!"
	;;
  status)
	echo -n "conntrackd "
	start-stop-daemon -q -K -t -x $DAEMON
	RET=$?
	if [ "$RET" = "0" ]; then
                PID=`cat $PIDFILE`
		echo "($PID) is running"
	else
		echo "is not running"
		exit $RET
	fi
	;;
  restart)
	$0 stop
	$0 start
	;;

  *)
	echo "Usage: /etc/init.d/conntrackd {start|stop|restart}"
	exit 1
esac

exit 0
