#!/bin/sh
#
# $Id: dhcp3-server.init.d,v 1.4 2003/07/13 19:12:41 mdz Exp $
#

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

test -f /usr/sbin/dhcpd3 || exit 0

. /lib/lsb/init-functions

# It is not safe to start if we don't have a default configuration...
if [ ! -f /etc/default/dhcp3-server ]; then
	usplash_write "QUIT"

	log_failure_msg "/etc/default/dhcp3-server does not exist! - Aborting..."
	log_failure_msg "Run 'dpkg-reconfigure dhcp3-server' to fix the problem."
	exit 0
fi

# Default config file
CONFIG_FILE=/etc/dhcp3/dhcpd.conf

# Allow ltsp to override
if [ -f /etc/ltsp/dhcpd.conf ]; then
	CONFIG_FILE=/etc/ltsp/dhcpd.conf
	break
fi

# Read init script configuration (so far only interfaces the daemon
# should listen on.)
. /etc/default/dhcp3-server

DHCPDPID=/var/run/dhcp3-server/dhcpd.pid

test_config()
{
	if ! /usr/sbin/dhcpd3 -t >& /dev/null; then
	        usplash_write "QUIT"
		
		log_failure_msg "dhcpd self-test..."
		log_end_msg 6
		/usr/sbin/dhcpd3 -t
		
		exit 1
	fi
}

case "$1" in
	start)
		test_config
		
                # allow dhcp server to write lease and pid file
                mkdir -p /var/run/dhcp3-server
                chown dhcpd:dhcpd /var/run/dhcp3-server
                [ -e /var/lib/dhcp3/dhcpd.leases ] || touch /var/lib/dhcp3/dhcpd.leases
                chown dhcpd:dhcpd /var/lib/dhcp3 /var/lib/dhcp3/dhcpd.leases
                if [ -e /var/lib/dhcp3/dhcpd.leases~ ]; then
                    chown dhcpd:dhcpd /var/lib/dhcp3/dhcpd.leases~
                fi

		log_begin_msg "Starting DHCP server..."
		start-stop-daemon --start --quiet --pidfile $DHCPDPID \
			--exec /usr/sbin/dhcpd3 -- -q $INTERFACES -pf $DHCPDPID \
			-cf $CONFIG_FILE
		sleep 2

		if [ -f "$DHCPDPID" ] && ps h `cat "$DHCPDPID"` >/dev/null; then
			log_end_msg 0
		else
			log_end_msg 1
		fi
		;;
	stop)
		log_begin_msg "Stopping DHCP server..."
		start-stop-daemon --stop --quiet --pidfile $DHCPDPID
		# remove PID file if it is still present
                if [ -e $DHCPDPID ] && ! ps h $(< $DHCPDPID) > /dev/null; then
                    rm -f $DHCPDPID
		    log_end_msg 0
		else
		    log_end_msg 1
                fi
		;;
	restart | force-reload)
		test_config
		$0 stop
		sleep 2
		$0 start
		if [ "$?" != "0" ]; then
			log_end_msg 1
			exit 1
		fi
		;;
	*)
		log_success_msg "Usage: /etc/init.d/dhcp3-server {start|stop|restart|force-reload}"
		exit 1 
esac

exit 0
