svn commit: r219739 - head/sbin/dhclient

Hajimu UMEMOTO ume at FreeBSD.org
Fri Mar 18 12:23:21 UTC 2011


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
 	;;
 


More information about the svn-src-head mailing list