[CFR] reflect resolv.conf update to running application

Brooks Davis brooks at one-eyed-alien.net
Thu Sep 8 11:10:53 PDT 2005


On Sun, Aug 28, 2005 at 02:25:05AM -0400, Matthew N. Dodd wrote:
> On Sat, 27 Aug 2005, Brooks Davis wrote:
> >I'd like to see dhclient-script pull in /etc/rc.conf.
> 
> Attached.

I've looked this over and while I like the concept, I think the
implementation could be improved.  First, it looks like named.conf has
an include directive what is conveniently undocumented in the manpage,
but in the BIND 9 Administrator Reference Manual at:

http://www.bind9.net/manual/bind/9.3.1/Bv9ARM.ch06.html#AEN1534

so if it actually works, we should use that instead of rebuiling the
config file each time.  Second, the forwarders file should default to
living in the /var/run of the named chroot since we default to chrooted
operation these day.  Third, I think we need to kick the server with
"rndc reconfig" once the file is updated.

Thanks,
Brooks

> -- 
> 10 40 80 C0 00 FF FF FF FF C0 00 00 00 00 10 AA AA 03 00 00 00 08 00

> 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

-- 
Any statement of the form "X is the one, true Y" is FALSE.
PGP fingerprint 655D 519C 26A7 82E7 2529  9BF0 5D8E 8BE9 F238 1AD4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-arch/attachments/20050908/fadb0163/attachment.bin


More information about the freebsd-arch mailing list