Package: isc-dhcp-server
Version: 4.1.1-P1-15
Severity: normal
It appears to me like it's pretty hard to install isc-dhcp and set it
up according to the type of server one wants to use; e.g. setting it
up as a DHCPv6 server specifically, or having a DHCPv6 server
alongside a DHCPv4 server.
I think a little more could be done to facilitate such setups and
avoid people editing the isc-dhcp-server init script (and potentially
losing their changes in an update).
It's far from ideal I realize, but attached is a patch which attempts
to make this a little simpler: setting up a DHCPv6 server from there
is a matter of symlinking the init script or copying it to a new name
and editing a file /etc/default/<basename_of_init_script>. Setting up
the mode of the server (to serve v4 or v6 addresses) is set as an
additional option in that file.
-- System Information:
Debian Release: squeeze/sid
APT prefers natty-updates
APT policy: (500, 'natty-updates'), (500, 'natty-security'), (500, 'natty')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.37-12-generic (SMP w/4 CPU cores)
Locale: LANG=fr_CA.UTF-8, LC_CTYPE=fr_CA.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Mathieu Trudel-Lapierre <[email protected]>
Freenode: cyphermox, Jabber: [email protected]
4096R/EE018C93 1967 8F7D 03A1 8F38 732E FF82 C126 33E1 EE01 8C93
=== modified file 'debian/isc-dhcp-server.init.d'
--- debian/isc-dhcp-server.init.d 2010-11-09 17:40:49 +0000
+++ debian/isc-dhcp-server.init.d 2011-02-01 21:40:42 +0000
@@ -15,11 +15,12 @@
### END INIT INFO
PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DEFAULTS_FILE=/etc/default/`basename $0`
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-dhcp-server ]; then
+if [ ! -f $DEFAULTS_FILE ]; then
echo "/etc/default/isc-dhcp-server does not exist! - Aborting..."
echo "Run 'dpkg-reconfigure isc-dhcp-server' to fix the problem."
exit 0
@@ -28,8 +29,8 @@
. /lib/lsb/init-functions
# Read init script configuration (so far only interfaces the daemon
-# should listen on.)
-[ -f /etc/default/isc-dhcp-server ] && . /etc/default/isc-dhcp-server
+# should listen on and DHCP mode (v4 or v6).)
+[ -f $DEFAULTS_FILE ] && . $DEFAULTS_FILE
NAME=dhcpd
DESC="ISC DHCP server"
@@ -37,10 +38,10 @@
test_config()
{
- if ! /usr/sbin/dhcpd -t -q > /dev/null 2>&1; then
+ if ! /usr/sbin/dhcpd $DHCPMODE -t -q > /dev/null 2>&1; then
echo "dhcpd self-test failed. Please fix the config file."
echo "The error was: "
- /usr/sbin/dhcpd -t
+ /usr/sbin/dhcpd $DHCPMODE -t
exit 1
fi
}
@@ -66,7 +67,7 @@
test_config
log_daemon_msg "Starting $DESC" "$NAME"
start-stop-daemon --start --quiet --pidfile $DHCPDPID \
- --exec /usr/sbin/dhcpd -- -q $INTERFACES
+ --exec /usr/sbin/dhcpd -- $DHCPMODE -q $INTERFACES
sleep 2
if check_status -q; then
=== modified file 'debian/isc-dhcp-server.postinst'
--- debian/isc-dhcp-server.postinst 2010-11-09 17:40:49 +0000
+++ debian/isc-dhcp-server.postinst 2011-02-01 21:40:42 +0000
@@ -43,6 +43,11 @@
# This is a POSIX shell fragment
#
+# DHCP mode to use:
+# -4 - standard IPv4 DHCP (default)
+# -6 - DHCPv6
+DHCPMODE="-4"
+
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES=""
@@ -82,6 +87,12 @@
fi
fi
+# ISC DHCP 4 introduces DHCPv6. That also means we need to ship an extra
+# lease file.
+if [ ! -e /var/lib/dhcp/dhcpd6.leases ]; then
+ touch /var/lib/dhcp/dhcpd6.leases
+fi
+
[ -x /sbin/restorecon ] && restorecon /var/lib/dhcp/dhcpd.leases
init_script_error_handler()
=== modified file 'debian/isc-dhcp-server.postrm'
--- debian/isc-dhcp-server.postrm 2010-06-15 23:20:30 +0000
+++ debian/isc-dhcp-server.postrm 2011-02-01 21:40:42 +0000
@@ -12,6 +12,7 @@
purge)
# Remove database
rm -f /var/lib/dhcp/dhcpd.leases /var/lib/dhcp/dhcpd.leases~
+ rm -f /var/lib/dhcp/dhcpd6.leases /var/lib/dhcp/dhcpd6.leases~
# Remove database directory
if [ -d /var/lib/dhcp ]; then