Author: ume
Date: Fri Mar 18 12:23:20 2011
New Revision: 219739
URL: http://svn.freebsd.org/changeset/base/219739

Log:
  Use resolvconf(8) to update /etc/resolv.conf.
  If you don't want to use resolvconf(8) to update /etc/resolv.conf,
  you can put resolvconf_enable="NO" into /etc/dhclient-enter-hooks.

Modified:
  head/sbin/dhclient/dhclient-script

Modified: head/sbin/dhclient/dhclient-script
==============================================================================
--- head/sbin/dhclient/dhclient-script  Fri Mar 18 12:18:52 2011        
(r219738)
+++ head/sbin/dhclient/dhclient-script  Fri Mar 18 12:23:20 2011        
(r219739)
@@ -216,29 +216,40 @@ add_new_resolv_conf() {
                        cat /etc/resolv.conf.tail >>$tmpres
                fi
 
-               # When resolv.conf is not changed actually, we don't
-               # need to update it.
-               # If /usr is not mounted yet, we cannot use cmp, then
-               # the following test fails.  In such case, we simply
-               # ignore an error and do update resolv.conf.
-               if cmp -s $tmpres /etc/resolv.conf; then
-                       rm -f $tmpres
-                       return 0
-               fi 2>/dev/null
-
-               # In case (e.g. during OpenBSD installs) /etc/resolv.conf
-               # is a symbolic link, take care to preserve the link and write
-               # the new data in the correct location.
+               case $resolvconf_enable in
+               # "no", "false", "off", or "0"
+               [Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0)
+                       # When resolv.conf is not changed actually, we don't
+                       # need to update it.
+                       # If /usr is not mounted yet, we cannot use cmp, then
+                       # the following test fails.  In such case, we simply
+                       # ignore an error and do update resolv.conf.
+                       if cmp -s $tmpres /etc/resolv.conf; then
+                               rm -f $tmpres
+                               return 0
+                       fi 2>/dev/null
+
+                       # In case (e.g. during OpenBSD installs)
+                       # /etc/resolv.conf is a symbolic link, take
+                       # care to preserve the link and write the new
+                       # data in the correct location.
 
-               if [ -f /etc/resolv.conf ]; then
-                       cat /etc/resolv.conf > /etc/resolv.conf.save
-               fi
-               cat $tmpres > /etc/resolv.conf
-               rm -f $tmpres
+                       if [ -f /etc/resolv.conf ]; then
+                               cat /etc/resolv.conf > /etc/resolv.conf.save
+                       fi
+                       cat $tmpres > /etc/resolv.conf
+
+                       # Try to ensure correct ownership and permissions.
+                       chown -RL root:wheel /etc/resolv.conf
+                       chmod -RL 644 /etc/resolv.conf
+                       ;;
 
-               # Try to ensure correct ownership and permissions.
-               chown -RL root:wheel /etc/resolv.conf
-               chmod -RL 644 /etc/resolv.conf
+               *)
+                       /sbin/resolvconf -a ${interface} < $tmpres
+                       ;;
+               esac
+
+               rm -f $tmpres
 
                return 0
        fi
@@ -296,6 +307,8 @@ if [ -f /etc/dhclient-enter-hooks ]; the
        fi
 fi
 
+: ${resolvconf_enable="YES"}
+
 case $reason in
 MEDIUM)
        eval "$IFCONFIG $interface $medium"
@@ -349,9 +362,17 @@ EXPIRE|FAIL)
        # XXX Why add alias we just deleted above?
        add_new_alias
        if is_default_interface; then
-               if [ -f /etc/resolv.conf.save ]; then
-                       cat /etc/resolv.conf.save > /etc/resolv.conf
-               fi
+               case $resolvconf_enable in
+               # "no", "false", "off", or "0"
+               [Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0)
+                       if [ -f /etc/resolv.conf.save ]; then
+                               cat /etc/resolv.conf.save > /etc/resolv.conf
+                       fi
+                       ;;
+               *)
+                       /sbin/resolvconf -d ${interface}
+                       ;;
+               esac
        fi
        ;;
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to