Module Name: src Committed By: roy Date: Fri Jul 27 15:31:02 UTC 2018
Modified Files: src/etc/rc.d: network src/share/man/man5: rc.conf.5 Log Message: 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. To generate a diff of this commit: cvs rdiff -u -r1.74 -r1.75 src/etc/rc.d/network cvs rdiff -u -r1.171 -r1.172 src/share/man/man5/rc.conf.5 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/etc/rc.d/network diff -u src/etc/rc.d/network:1.74 src/etc/rc.d/network:1.75 --- src/etc/rc.d/network:1.74 Fri Jun 29 12:34:15 2018 +++ src/etc/rc.d/network Fri Jul 27 15:31:02 2018 @@ -1,6 +1,6 @@ #!/bin/sh # -# $NetBSD: network,v 1.74 2018/06/29 12:34:15 roy Exp $ +# $NetBSD: network,v 1.75 2018/07/27 15:31:02 roy Exp $ # # PROVIDE: network @@ -52,6 +52,7 @@ network_start() have_inet6 && network_start_ipv6_autoconf network_wait_dad + network_start_resolv network_start_local } @@ -454,6 +455,32 @@ network_wait_dad() 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 @@ network_stop() echo "Stopping network." network_stop_local + network_stop_resolv network_stop_aliases [ "$net_interfaces" != NO ] && network_stop_interfaces @@ -481,6 +509,11 @@ network_stop_local() fi } +network_stop_resolv() +{ + resolvconf -f -d network +} + network_stop_aliases() { echo "Deleting aliases." Index: src/share/man/man5/rc.conf.5 diff -u src/share/man/man5/rc.conf.5:1.171 src/share/man/man5/rc.conf.5:1.172 --- src/share/man/man5/rc.conf.5:1.171 Fri Jul 13 21:46:58 2018 +++ src/share/man/man5/rc.conf.5 Fri Jul 27 15:31:02 2018 @@ -1,4 +1,4 @@ -.\" $NetBSD: rc.conf.5,v 1.171 2018/07/13 21:46:58 maya Exp $ +.\" $NetBSD: rc.conf.5,v 1.172 2018/07/27 15:31:02 roy 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 July 14, 2018 +.Dd July 27, 2018 .Dt RC.CONF 5 .Os .Sh NAME @@ -248,6 +248,30 @@ If empty or not set, then the contents o 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