diff -u dhclient-script dhclient-script-ubuntu:
--- dhclient-script 2007-07-30 12:00:44.000000000 -0400
+++ dhclient-script-ubuntu 2007-07-30 11:49:52.000000000 -0400
@@ -14,10 +14,32 @@
make_resolv_conf() {
if [ -n "$new_domain_name" -o -n "$new_domain_name_servers" ]; then
+ # Find out whether we are going to mount / rw
+ exec 9>&0 </etc/fstab
+ rootmode=rw
+ while read dev mnt type opts dump pass junk; do
+ [ "$mnt" != / ] && continue
+ case "$opts" in
+ ro|ro,*|*,ro|*,ro,*)
+ rootmode=ro
+ ;;
+ esac
+ done
+ exec 0>&9 9>&-
+
+ # Wait for /etc/resolv.conf to become writable
+ if [ "$rootmode" = "rw" ]; then
+ while [ ! -w /etc ]; do
+ sleep 0.1
+ done
+ fi
+
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
+ else # keep 'old' search/domain scope
+ egrep -i '^ *[:space:]*(search|domain)' /etc/resolv.conf >> $new_resolv_conf
fi
if [ -n "$new_domain_name_servers" ]; then
for nameserver in $new_domain_name_servers; do
@@ -161,6 +183,13 @@
ifconfig $interface inet $new_ip_address $new_subnet_arg \
$new_broadcast_arg $mtu_arg
+ # point to point
+ if [ "$new_subnet_mask" == "255.255.255.255" ]; then
+ for router in $new_routers; do
+ route add -host $router dev $interface
+ done
+ fi
+
for router in $new_routers; do
route add default dev $interface gw $router $metric_arg
done