Submitted By: Dan Nicholson (dnicholson at linuxfromscratch dot org)
Date: 2007-01-14
Initial Package Version: 3.0.5
Origin: Upstream
Description: Fixes client fixes issues with always regenerating
             /etc/resolv.conf whether the DNS server has changed or not.

diff -pNur dhcp-3.0.5.orig/client/scripts/linux dhcp-3.0.5/client/scripts/linux
--- dhcp-3.0.5.orig/client/scripts/linux	2002-11-14 17:09:09.000000000 -0800
+++ dhcp-3.0.5/client/scripts/linux	2006-12-21 09:41:31.000000000 -0800
@@ -23,12 +23,22 @@
 # of the $1 in its args.
 
 make_resolv_conf() {
-  if [ "x$new_domain_name" != x ] && [ x"$new_domain_name_servers" != x ]; then
-    echo search $new_domain_name >/etc/resolv.conf
-    chmod 644 /etc/resolv.conf
+  if [ x"$new_domain_name_servers" != x ]; then
+    cat /dev/null > /etc/resolv.conf.dhclient
+    chmod 644 /etc/resolv.conf.dhclient
+    if [ x"$new_domain_search" != x ]; then
+      echo search $new_domain_search >> /etc/resolv.conf.dhclient
+    elif [ x"$new_domain_name" != x ]; then
+      # Note that the DHCP 'Domain Name Option' is really just a domain
+      # name, and that this practice of using the domain name option as
+      # a search path is both nonstandard and deprecated.
+      echo search $new_domain_name >> /etc/resolv.conf.dhclient
+    fi
     for nameserver in $new_domain_name_servers; do
-      echo nameserver $nameserver >>/etc/resolv.conf
+      echo nameserver $nameserver >>/etc/resolv.conf.dhclient
     done
+
+    mv /etc/resolv.conf.dhclient /etc/resolv.conf
   fi
 }
 
