diff -ur client.orig/scripts/bsdos client/scripts/bsdos
--- client.orig/scripts/bsdos	2006-09-07 18:53:10.476329752 +0100
+++ client/scripts/bsdos	2006-09-07 19:19:53.000000000 +0100
@@ -1,21 +1,22 @@
 #!/bin/sh
 
 make_resolv_conf() {
-  if [ x"$new_domain_name_servers" != x ]; then
-    cat /dev/null > /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
+  if [ x$PEER_DNS = x ] || [ x$PEER_DNS = xyes ]; then
+    if [ "x$new_domain_name" != x ] || [ "x$new_domain_name_servers" != x ]; then
+      conf="# Generated by dhclient for interface $interface\n"
+      if [ "x$new_domain_name" != x ]; then
+        conf="${conf}search $new_domain_name\n"
+      fi
+      for nameserver in $new_domain_name_servers; do
+        conf="${conf}nameserver $nameserver\n"
+      done
+      if [ -x /sbin/resolvconf ]; then
+        printf "$conf" | resolvconf -a "$interface"
+      else
+        printf "$conf" > /etc/resolv.conf
+        chmod 644 /etc/resolv.conf
+      fi
     fi
-    for nameserver in $new_domain_name_servers; do
-      echo nameserver $nameserver >> /etc/resolv.conf.dhclient
-    done
-
-    mv /etc/resolv.conf.dhclient /etc/resolv.conf
   fi
   # If we're making confs, may as well make an ntp.conf too
   make_ntp_conf
diff -ur client.orig/scripts/freebsd client/scripts/freebsd
--- client.orig/scripts/freebsd	2006-09-07 18:53:10.476329752 +0100
+++ client/scripts/freebsd	2006-09-07 19:19:32.000000000 +0100
@@ -11,38 +11,20 @@
 fi
 
 make_resolv_conf() {
-  if [ x"$new_domain_name_servers" != x ]; then
-    ( cat /dev/null > /etc/resolv.conf.dhclient )
-    exit_status=$?
-    if [ $exit_status -ne 0 ]; then
-      $LOGGER "Unable to create /etc/resolv.conf.dhclient: Error $exit_status"
-    else
-      if [ "x$new_domain_search" != x ]; then
-	( echo search $new_domain_search >> /etc/resolv.conf.dhclient )
-	exit_status=$?
-      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 )
-	exit_status=$?
+  if [ x$PEER_DNS = x ] || [ x$PEER_DNS = xyes ]; then
+    if [ "x$new_domain_name" != x ] || [ "x$new_domain_name_servers" != x ]; then
+      conf="# Generated by dhclient for interface $interface\n"
+      if [ "x$new_domain_name" != x ]; then
+        conf="${conf}search $new_domain_name\n"
       fi
       for nameserver in $new_domain_name_servers; do
-	if [ $exit_status -ne 0 ]; then
-	  break
-	fi
-	( echo nameserver $nameserver >>/etc/resolv.conf.dhclient )
-	exit_status=$?
+        conf="${conf}nameserver $nameserver\n"
       done
-
-      # If there were no errors, attempt to mv the new file into place.
-      if [ $exit_status -eq 0 ]; then
-	( mv /etc/resolv.conf.dhclient /etc/resolv.conf )
-	exit_status = $?
-      fi
-
-      if [ $exit_status -ne 0 ]; then
-	$LOGGER "Error while writing new /etc/resolv.conf."
+      if [ -x /sbin/resolvconf ]; then
+        printf "$conf" | resolvconf -a "$interface"
+      else
+        printf "$conf" > /etc/resolv.conf
+        chmod 644 /etc/resolv.conf
       fi
     fi
   fi
diff -ur client.orig/scripts/linux client/scripts/linux
--- client.orig/scripts/linux	2006-09-07 18:53:10.476329752 +0100
+++ client/scripts/linux	2006-09-07 19:18:57.000000000 +0100
@@ -23,22 +23,22 @@
 # of the $1 in its args.
 
 make_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
+  if [ x$PEER_DNS = x ] || [ x$PEER_DNS = xyes ]; then
+    if [ "x$new_domain_name" != x ] || [ "x$new_domain_name_servers" != x ]; then
+      conf="# Generated by dhclient for interface $interface\n"
+      if [ "x$new_domain_name" != x ]; then
+        conf="${conf}search $new_domain_name\n"
+      fi
+      for nameserver in $new_domain_name_servers; do
+        conf="${conf}nameserver $nameserver\n"
+      done
+      if [ -x /sbin/resolvconf ]; then
+        printf "$conf" | resolvconf -a "$interface"
+      else
+        printf "$conf" > /etc/resolv.conf
+        chmod 644 /etc/resolv.conf
+      fi
     fi
-    for nameserver in $new_domain_name_servers; do
-      echo nameserver $nameserver >>/etc/resolv.conf.dhclient
-    done
-
-    mv /etc/resolv.conf.dhclient /etc/resolv.conf
   fi
   # If we're making confs, may as well make an ntp.conf too
   make_ntp_conf
diff -ur client.orig/scripts/netbsd client/scripts/netbsd
--- client.orig/scripts/netbsd	2006-09-07 18:53:10.476329752 +0100
+++ client/scripts/netbsd	2006-09-07 19:20:10.000000000 +0100
@@ -1,21 +1,22 @@
 #!/bin/sh
 
 make_resolv_conf() {
-  if [ "x$new_domain_name" != x ] && [ x"$new_domain_name_servers" != x ]; then
-    cat /dev/null > /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
+  if [ x$PEER_DNS = x ] || [ x$PEER_DNS = xyes ]; then
+    if [ "x$new_domain_name" != x ] || [ "x$new_domain_name_servers" != x ]; then
+      conf="# Generated by dhclient for interface $interface\n"
+      if [ "x$new_domain_name" != x ]; then
+        conf="${conf}search $new_domain_name\n"
+      fi
+      for nameserver in $new_domain_name_servers; do
+        conf="${conf}nameserver $nameserver\n"
+      done
+      if [ -x /sbin/resolvconf ]; then
+        printf "$conf" | resolvconf -a "$interface"
+      else
+        printf "$conf" > /etc/resolv.conf
+        chmod 644 /etc/resolv.conf
+      fi
     fi
-    for nameserver in $new_domain_name_servers; do
-      echo nameserver $nameserver >>/etc/resolv.conf.dhclient
-    done
-
-    mv /etc/resolv.conf.dhclient /etc/resolv.conf
   fi
   # If we're making confs, may as well make an ntp.conf too
   make_ntp_conf
diff -ur client.orig/scripts/openbsd client/scripts/openbsd
--- client.orig/scripts/openbsd	2006-09-07 18:53:10.476329752 +0100
+++ client/scripts/openbsd	2006-09-07 19:20:38.000000000 +0100
@@ -1,21 +1,22 @@
 #!/bin/sh
 
 make_resolv_conf() {
-  if x"$new_domain_name_servers" != x ]; then
-    cat /dev/null > /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
+  if [ x$PEER_DNS = x ] || [ x$PEER_DNS = xyes ]; then
+    if [ "x$new_domain_name" != x ] || [ "x$new_domain_name_servers" != x ]; then
+      conf="# Generated by dhclient for interface $interface\n"
+      if [ "x$new_domain_name" != x ]; then
+        conf="${conf}search $new_domain_name\n"
+      fi
+      for nameserver in $new_domain_name_servers; do
+        conf="${conf}nameserver $nameserver\n"
+      done
+      if [ -x /sbin/resolvconf ]; then
+        printf "$conf" | resolvconf -a "$interface"
+      else
+        printf "$conf" > /etc/resolv.conf
+        chmod 644 /etc/resolv.conf
+      fi
     fi
-    for nameserver in $new_domain_name_servers; do
-      echo nameserver $nameserver >>/etc/resolv.conf.dhclient
-    done
-
-    mv /etc/ersolv.conf.dhclient /etc/resolv.conf
   fi
   # If we're making confs, may as well make an ntp.conf too
   make_ntp_conf
diff -ur client.orig/scripts/solaris client/scripts/solaris
--- client.orig/scripts/solaris	2006-09-07 18:53:10.476329752 +0100
+++ client/scripts/solaris	2006-09-07 19:21:12.000000000 +0100
@@ -1,21 +1,22 @@
 #!/bin/sh  
 
 make_resolv_conf() {
-  if [ x"$new_domain_name_servers" != x ]; then
-    cat /dev/null > /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
+  if [ x$PEER_DNS = x ] || [ x$PEER_DNS = xyes ]; then
+    if [ "x$new_domain_name" != x ] || [ "x$new_domain_name_servers" != x ]; then
+      conf="# Generated by dhclient for interface $interface\n"
+      if [ "x$new_domain_name" != x ]; then
+        conf="${conf}search $new_domain_name\n"
+      fi
+      for nameserver in $new_domain_name_servers; do
+        conf="${conf}nameserver $nameserver\n"
+      done
+      if [ -x /sbin/resolvconf ]; then
+        printf "$conf" | resolvconf -a "$interface"
+      else
+        printf "$conf" > /etc/resolv.conf
+        chmod 644 /etc/resolv.conf
+      fi
     fi
-    for nameserver in $new_domain_name_servers; do
-      echo nameserver $nameserver >>/etc/resolv.conf.dhclient
-    done
-
-    mv /etc/resolv.conf.dhclient /etc/resolv.conf
   fi
   # If we're making confs, may as well make an ntp.conf too
   make_ntp_conf