Now that we're fiddling with netcfg and dhcp3 anyway... We currently carry the dhclient-script in netcfg, while that script should logically belong in dhcp3-client-udeb. It's clear that we need a simplified script and that we want to use 'ip' instead of 'ifconfig', but it is not clear why that script shouldn't just be part of the dhcp3 source package. Attached a patch for dhcp3 that adds "our" dhclient-script to dhcp3-udeb in /sbin and drops the symlink from there to the file from netcfg (which is in /etc). This means there is no file conflict and we can just drop the script in netcfg once a new dhcp3 reaches testing. If there are no objections to this plan, I will submit the patch against dhcp3 in a few days. Notes - I thought about doing a whitespace cleanup, but it seemed better to keep the space indenting for easier comparison to the regular script. - The dhcp3-client package has two separate versions of the script: one for linux and one for kfreebsd. As we currently don't have separate scripts in the udeb either, I have not bothered about this, but the script probably will need to be adapted for kfreebsd at some point. Cheers, FJP
diff -u dhcp3-3.0.6.dfsg/debian/rules dhcp3-3.0.6.dfsg/debian/rules
--- dhcp3-3.0.6.dfsg/debian/rules
+++ dhcp3-3.0.6.dfsg/debian/rules
@@ -101,9 +101,9 @@
$(INSTALL_PROGRAM) -m 755 $(DESTDIR)/sbin/dhclient \
`pwd`/debian/dhcp3-client-udeb/sbin/
- # udeb needs the os-specific script too
- #cp `pwd`/debian/tmp/sbin/dhclient-script \
- # `pwd`/debian/dhcp3-client-udeb/sbin
+ # udeb needs simplified dhclient script
+ $(INSTALL_FILE) -m 755 `pwd`/debian/dhclient-script.udeb \
+ `pwd`/debian/dhcp3-client-udeb/sbin/dhclient-script
# Rename binaries so they do not conflict with the binaries in the
# v2 packages.
diff -u dhcp3-3.0.6.dfsg/debian/changelog dhcp3-3.0.6.dfsg/debian/changelog
--- dhcp3-3.0.6.dfsg/debian/changelog
+++ dhcp3-3.0.6.dfsg/debian/changelog
@@ -1,3 +1,9 @@
+dhcp3 (3.0.6.dfsg-2~fjp) UNRELEASED; urgency=low
+
+ * Add reduced dhclient-script for the udeb (previously included in netcfg)
+
+ -- Frans Pop <fjp@debian.org> Mon, 14 Jan 2008 06:35:37 +0100
+
dhcp3 (3.0.6.dfsg-1) unstable; urgency=low
* Repacked upstream tarball to exclude RFCs (closes: #438326)
reverted:
--- dhcp3-3.0.6.dfsg/debian/dhcp3-client-udeb.links
+++ dhcp3-3.0.6.dfsg.orig/debian/dhcp3-client-udeb.links
@@ -1 +0,0 @@
-etc/dhclient-script sbin/dhclient-script
only in patch2:
unchanged:
--- dhcp3-3.0.6.dfsg.orig/debian/dhclient-script.udeb
+++ dhcp3-3.0.6.dfsg/debian/dhclient-script.udeb
@@ -0,0 +1,113 @@
+#!/bin/sh
+
+set -e
+
+# reduced dhclient-script for the Debian installer
+# changes by Joshua Kwan <joshk@triplehelix.org>,
+# Bastian Blank <waldi@debian.org>
+
+# dhclient-script for Linux. Dan Halbert, March, 1997.
+# Updated for Linux 2.[12] by Brian J. Murrell, January 1999.
+# Modified for Debian. Matt Zimmerman and Eloy Paris, December 2003
+
+make_resolv_conf() {
+ if [ -n "$new_domain_name" ] || [ -n "$new_domain_name_servers" ]; then
+ local new_resolv_conf=/etc/resolv.conf.dhclient-new
+ rm -f $new_resolv_conf
+ if [ -n "$new_domain_name" ]; then
+ echo "search $new_domain_name" >>$new_resolv_conf
+ fi
+ for nameserver in $new_domain_name_servers; do
+ echo "nameserver $nameserver" >>$new_resolv_conf
+ done
+ mv $new_resolv_conf /etc/resolv.conf
+ fi
+}
+
+set_hostname() {
+ local current_hostname=$(cat /proc/sys/kernel/hostname)
+ if [ -z "$current_hostname" ] || [ "$current_hostname" = "(none)" ]; then
+ echo "$new_host_name" > /proc/sys/kernel/hostname
+ fi
+}
+
+if [ -n "$new_subnet_mask" ]; then
+ new_mask="/$(ptom $new_subnet_mask)"
+fi
+if [ -n "$old_subnet_mask" ]; then
+ old_mask="/$(ptom $old_subnet_mask)"
+fi
+
+if [ -n "$new_broadcast_address" ]; then
+ new_broadcast_arg="broadcast $new_broadcast_address"
+fi
+if [ -n "$old_broadcast_address" ]; then
+ old_broadcast_arg="broadcast $old_broadcast_address"
+fi
+
+# Execute the operation
+case "$reason" in
+ MEDIUM|ARPCHECK|ARPSEND)
+ # Do nothing
+ ;;
+ PREINIT)
+ ip link set $interface up
+
+ # We need to give the kernel some time to get the interface up.
+ sleep 1
+ ;;
+ BOUND|RENEW|REBIND|REBOOT)
+
+ set_hostname
+
+ if [ -n "$old_ip_address" ] && \
+ [ "$old_ip_address" != "$new_ip_address" ]; then
+ # IP address changed. Bringing down the interface will delete all routes,
+ # and clear the ARP cache.
+ ip addr del $old_ip_address$old_mask $old_broadcast_arg dev $interface
+ ip link set $interface down
+ fi
+
+ if [ -n "$new_interface_mtu" ]; then
+ ip link set $interface mtu $new_interface_mtu || true
+ fi
+
+ if [ -z "$old_ip_address" ] || [ "$old_ip_address" != "$new_ip_address" ] || \
+ [ "$reason" = "BOUND" ] || [ "$reason" = "REBOOT" ]; then
+
+ ip link set $interface up
+ ip addr flush dev $interface
+ ip addr add $new_ip_address$new_mask $new_broadcast_arg dev $interface
+
+ for router in $new_routers; do
+ ip route add default via $router
+ done
+ fi
+
+ make_resolv_conf
+
+ # Get the domain name into a file suitable for netcfg to read.
+ printf "$new_domain_name" > /tmp/domain_name
+
+ if [ -n "$new_ntp_servers" ]; then
+ printf "$new_ntp_servers" > /tmp/dhcp-ntp-servers
+ fi
+
+ ;;
+
+ EXPIRE|FAIL|RELEASE|STOP)
+ if [ -n "$old_ip_address" ]; then
+ # Shut down interface, which will delete routes and clear arp cache.
+ ip addr flush dev $interface
+ ip link set $interface down
+ fi
+
+ ;;
+
+ TIMEOUT)
+ ip link set $interface down
+
+ ;;
+esac
+
+exit 0
Attachment:
signature.asc
Description: This is a digitally signed message part.