Thu Apr 23 13:43:42 2020 UTC ()
Pull up following revision(s) (requested by kim in ticket #1537):

	share/man/man5/rc.conf.5: revision 1.172
	etc/rc.d/network: revision 1.75

Allow rc.conf to setup resolv.conf via resolvconf(8).

This allows all static network config to be in rc.conf rather than
spread across files.


(martin)
diff -r1.71 -r1.71.8.1 src/etc/rc.d/network
diff -r1.166.6.1 -r1.166.6.2 src/share/man/man5/rc.conf.5

cvs diff -r1.71 -r1.71.8.1 src/etc/rc.d/network (expand / switch to context diff)
--- src/etc/rc.d/network 2016/03/06 18:50:06 1.71
+++ src/etc/rc.d/network 2020/04/23 13:43:42 1.71.8.1
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: network,v 1.71 2016/03/06 18:50:06 christos Exp $
+# $NetBSD: network,v 1.71.8.1 2020/04/23 13:43:42 martin Exp $
 #
 
 # PROVIDE: network
@@ -52,6 +52,7 @@
 	have_inet6 &&
 	network_start_ipv6_autoconf
 	network_wait_dad
+	network_start_resolv
 	network_start_local
 }
 
@@ -454,6 +455,32 @@
 	fi
 }
 
+network_start_resolv()
+{
+	resconf=
+
+	if [ -n "$dns_domain" ]; then
+		resconf="${resconf}domain $dns_domain$nl"
+	fi
+	if [ -n "$dns_search" ]; then
+		resconf="${resconf}search $dns_search$nl"
+	fi
+	for n in $dns_nameservers; do
+		resconf="${resconf}nameserver $n$nl"
+	done
+	if [ -n "$dns_sortlist" ]; then
+		resconf="${resconf}sortlist $dns_sortlist$nl"
+	fi
+	if [ -n "$dns_options" ]; then
+		resconf="${resconf}options $dns_options$nl"
+	fi
+	if [ -n "$resconf" ]; then
+		resconf="# Generated by /etc/rc.d/network$nl$resconf"
+		echo 'Configuring resolv.conf'
+		printf %s "$resconf" | resolvconf -m "${dns_metric:-0}" -a network
+	fi
+}
+
 network_start_local()
 {
 	# XXX this must die
@@ -467,6 +494,7 @@
 	echo "Stopping network."
 
 	network_stop_local
+	network_stop_resolv
 	network_stop_aliases
 	[ "$net_interfaces" != NO ] &&
 	network_stop_interfaces
@@ -479,6 +507,11 @@
 	if [ -s /etc/netstart.local ]; then
 		sh /etc/netstart.local stop
 	fi
+}
+
+network_stop_resolv()
+{
+	resolvconf -f -d network
 }
 
 network_stop_aliases()

cvs diff -r1.166.6.1 -r1.166.6.2 src/share/man/man5/rc.conf.5 (expand / switch to context diff)
--- src/share/man/man5/rc.conf.5 2019/05/14 11:33:43 1.166.6.1
+++ src/share/man/man5/rc.conf.5 2020/04/23 13:43:42 1.166.6.2
@@ -1,4 +1,4 @@
-.\"	$NetBSD: rc.conf.5,v 1.166.6.1 2019/05/14 11:33:43 martin Exp $
+.\"	$NetBSD: rc.conf.5,v 1.166.6.2 2020/04/23 13:43:42 martin Exp $
 .\"
 .\" Copyright (c) 1996 Matthew R. Green
 .\" All rights reserved.
@@ -55,7 +55,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd May 14, 2019
+.Dd April 23, 2020
 .Dt RC.CONF 5
 .Os
 .Sh NAME
@@ -249,6 +249,30 @@
 A space separated list of interface names.
 These interfaces will be configured down when going from multiuser to single-user
 mode or on system shutdown.
+.It Sy dns_domain
+A string.
+Sets domain in
+.Pa /etc/resolv.conf .
+.It Sy dns_search
+A string.
+Sets search in
+.Pa /etc/resolv.conf .
+.It Sy dns_nameservers
+A string of space seperated domain name servers.
+Sets nameserver for each value in
+.Pa /etc/resolv.conf .
+.It Sy dns_sortlist
+A string.
+Sets sortlist in
+.Pa /etc/resolv.conf .
+.It Sy dns_options
+A string.
+Sets options in
+.Pa /etc/resolv.conf .
+.It Sy dns_metric
+An unsigned integer.
+Sets the priority of the above DNS to other sources, lowest wins.
+Defaults to 0.
 .Pp
 This is important for some stateful interfaces, for example PPP over ISDN
 connections that cost money by connection time or PPPoE interfaces which