[CFR] reflect resolv.conf update to running application

Matthew N. Dodd mdodd at FreeBSD.ORG
Sun Aug 28 06:25:13 GMT 2005


On Sat, 27 Aug 2005, Brooks Davis wrote:
> I'd like to see dhclient-script pull in /etc/rc.conf.

Attached.

-- 
10 40 80 C0 00 FF FF FF FF C0 00 00 00 00 10 AA AA 03 00 00 00 08 00
-------------- next part --------------
Index: sbin/dhclient/dhclient-script
===================================================================
RCS file: /home/cvs/src/sbin/dhclient/dhclient-script,v
retrieving revision 1.8
diff -u -u -r1.8 dhclient-script
--- sbin/dhclient/dhclient-script	26 Aug 2005 20:31:04 -0000	1.8
+++ sbin/dhclient/dhclient-script	28 Aug 2005 06:02:16 -0000
@@ -19,6 +19,9 @@
 #
 #
 
+. /etc/rc.subr
+load_rc_config dhclient-script
+
 NETSTAT=/usr/bin/netstat
 AWK=/usr/bin/awk
 HOSTNAME=/bin/hostname
@@ -127,6 +130,23 @@
 	fi
 }
 
+make_named_forwarders() {
+	if [ -z "$new_domain_name_servers" ]; then
+		return 1
+	fi
+
+	rm -f /var/run/named.forwarders
+	echo "	forwarders {" > /var/run/named.forwarders
+	for nameserver in $new_domain_name_servers; do
+		echo "		$nameserver;" >> /var/run/named.forwarders
+	done
+	echo "	};" >> /var/run/named.forwarders
+
+	cd /etc/namedb && make -f make-named.conf
+
+	return 0
+}
+
 add_new_resolv_conf() {
 	# XXX Old code did not create/update resolv.conf unless both
 	# $new_domain_name and $new_domain_name_servers were provided.  PR
@@ -238,7 +258,12 @@
 	if [ "$new_ip_address" != "$alias_ip_address" ]; then
 		add_new_alias
 	fi
-	add_new_resolv_conf
+	if checkyesno dhclient_script_resolv_conf; then
+		add_new_resolv_conf
+	fi
+	if checkyesno dhclient_script_named_forwarders; then
+		make_named_forwarders
+	fi
 	;;
 
 EXPIRE|FAIL)
@@ -266,8 +291,13 @@
 				add_new_alias
 			fi
 			add_new_routes
-			if add_new_resolv_conf; then
-				exit_with_hooks 0
+			if checkyesno dhclient_script_named_forwarders; then
+				make_named_forwarders
+			fi
+			if checkyesno dhclient_script_resolv_conf; then
+				if add_new_resolv_conf; then
+					exit_with_hooks 0
+				fi
 			fi
 		fi
 	fi
Index: etc/defaults/rc.conf
===================================================================
RCS file: /home/cvs/src/etc/defaults/rc.conf,v
retrieving revision 1.259
diff -u -u -r1.259 rc.conf
--- etc/defaults/rc.conf	24 Aug 2005 16:25:47 -0000	1.259
+++ etc/defaults/rc.conf	28 Aug 2005 05:46:18 -0000
@@ -93,6 +93,9 @@
 nisdomainname="NO"		# Set to NIS domain if using NIS (or NO).
 dhclient_program="/sbin/dhclient"	# Path to dhcp client program.
 dhclient_flags=""		# Additional flags to pass to dhcp client.
+dhclient_script_resolv_conf="YES"	# Update /etc/resolv.conf
+dhclient_script_named_forwarders="NO"	# Update /var/run/named.forwarders and
+					# rebuild /etc/namedb/named.conf
 background_dhclient="NO"	# Start dhcp client in the background.
 firewall_enable="NO"		# Set to YES to enable firewall functionality
 firewall_script="/etc/rc.firewall" # Which script to run to set up the firewall
Index: etc/namedb/Makefile
===================================================================
RCS file: /home/cvs/src/etc/namedb/Makefile,v
retrieving revision 1.4
diff -u -u -r1.4 Makefile
--- etc/namedb/Makefile	21 Dec 2004 08:46:50 -0000	1.4
+++ etc/namedb/Makefile	28 Aug 2005 06:14:50 -0000
@@ -1,7 +1,7 @@
-# $FreeBSD$
+# $FreeBSD: src/etc/namedb/Makefile,v 1.4 2004/12/21 08:46:50 ru Exp $
 
 FILES=	PROTO.localhost.rev PROTO.localhost-v6.rev named.conf named.root \
-	make-localhost
+	make-localhost make-named.conf
 NO_OBJ=
 FILESDIR= /etc/namedb
 FILESMODE= 644
Index: etc/namedb/make-named.conf
===================================================================
RCS file: etc/namedb/make-named.conf
diff -N etc/namedb/make-named.conf
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ etc/namedb/make-named.conf	28 Aug 2005 05:59:12 -0000
@@ -0,0 +1,17 @@
+# $FreeBSD$
+#
+
+#
+# Move /etc/named.conf to /etc/named.conf.in and add the following
+# lines to the options section.
+#
+#	forward only;
+# #include "/var/run/named.forwarders"
+#
+
+named.conf: named.conf.in /var/run/named.forwarders
+	cpp -P -C named.conf.in > $@
+	/etc/rc.d/named restart
+
+/var/run/named.forwarders:
+	@touch /var/run/named.forwarders


More information about the freebsd-arch mailing list