diff --git a/etc/rc.d/network b/etc/rc.d/network index 9f93f300accc..ef9d7255a979 100755 --- a/etc/rc.d/network +++ b/etc/rc.d/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." diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5 index b97f63efc810..e5a39381e2d6 100644 --- a/share/man/man5/rc.conf.5 +++ b/share/man/man5/rc.conf.5 @@ -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 21, 2020 .Dt RC.CONF 5 .Os .Sh NAME @@ -249,6 +249,30 @@ If empty or not set, then the contents of 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