[pkg-dhcp-devel] Bug#592539: First attempt

Rémy Sanchez debian-bug at hyperthese.net
Tue Nov 23 17:03:19 UTC 2010


 Since I need that script, I did create one from the original 
 isc-dhcp-server.init.d. You can use it in parallel to the old DHCP 
 version. You'll need to have your config file in /etc/dhcp/dhcpd6.conf 
 and the default file in /etc/default/isc-dhcp6-server (which has the 
 same syntax that the old one).

 As always, feedback is welcome to improve the script, and please tell 
 me if I can help integrating it to the package.

 By the way, IMHO this is _not_ a feature but a bug, since the binary 
 bundles with the support of a whole new protocol (DHCPv6) that you 
 cannot use by just configuring the server. Moreover, whith IPv4 
 depletion, it'd be nice to have the next stable Debian to properly 
 support IPv6, which is almost done since most of softwares do support 
 IPv6, and only some Debian wrappers are missing.</my 2 cents>

-- 
 Rémy Sanchez
-------------- next part --------------
#!/bin/sh 
#
#

### BEGIN INIT INFO
# Provides:          isc-dhcp6-server
# Required-Start:    $remote_fs $network $syslog
# Required-Stop:     $remote_fs $network $syslog
# Should-Start:      $local_fs slapd $named
# Should-Stop:       $local_fs slapd
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: DHCPv6 server
# Description:       Dynamic Host Configuration Protocol for IPv6 Server
### END INIT INFO

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

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

# It is not safe to start if we don't have a default configuration...
if [ ! -f /etc/default/isc-dhcp6-server ]; then
	echo "/etc/default/isc-dhcp6-server does not exist! - Aborting..."
	echo "Run 'dpkg-reconfigure isc-dhcp-server' to fix the problem."
	exit 0
fi

. /lib/lsb/init-functions

# Read init script configuration (so far only interfaces the daemon
# should listen on.)
[ -f /etc/default/isc-dhcp6-server ] && . /etc/default/isc-dhcp6-server

NAME=dhcpd
DESC="ISC DHCPv6 server"
DHCPDPID=/var/run/dhcpd6.pid
CONFFILE=/etc/dhcp/dhcpd6.conf

test_config()
{
	if ! /usr/sbin/dhcpd -t -6 -cf "$CONFFILE" -q > /dev/null 2>&1; then
		echo "dhcpd self-test failed. Please fix the config file."
		echo "The error was: "
		/usr/sbin/dhcpd -t -6 -cf "$CONFFILE"
		exit 1
	fi
}

# single arg is -v for messages, -q for none
check_status()
{
    if [ ! -r "$DHCPDPID" ]; then
	test "$1" != -v || echo "$NAME is not running."
	return 3
    fi
    if read pid < "$DHCPDPID" && ps -p "$pid" > /dev/null 2>&1; then
	test "$1" != -v || echo "$NAME is running."
	return 0
    else
	test "$1" != -v || echo "$NAME is not running but $DHCPDPID exists."
	return 1
    fi
}

case "$1" in
	start)
		test_config
		log_daemon_msg "Starting $DESC" "$NAME"
		start-stop-daemon --start --quiet --pidfile $DHCPDPID \
			--exec /usr/sbin/dhcpd -- -6 -q $INTERFACES
		sleep 2

		if check_status -q; then
			log_end_msg 0
		else
			log_failure_msg "check syslog for diagnostics."
			log_end_msg 1
			exit 1
		fi
		;;
	stop)
		log_daemon_msg "Stopping $DESC" "$NAME"
		start-stop-daemon --stop --quiet --pidfile $DHCPDPID
		log_end_msg $?
		rm -f "$DHCPDPID"
		;;
	restart | force-reload)
		test_config
		$0 stop
		sleep 2
		$0 start
		if [ "$?" != "0" ]; then
			exit 1
		fi
		;;
	status)
		echo -n "Status of $DESC: "
		check_status -v
		exit "$?"
		;;
	*)
		echo "Usage: $0 {start|stop|restart|force-reload|status}"
		exit 1 
esac

exit 0


More information about the pkg-dhcp-devel mailing list