From: Andrew Hewus Fresh Date: Sat, 30 Oct 2021 19:10:06 +0000 (-0700) Subject: Support for OpenBSD's resolvd via route messages X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=1d35a8527e5422967514dd1d47350ff2ede55903;p=users%2Fdwmw2%2Fvpnc-scripts.git Support for OpenBSD's resolvd via route messages This adds support for managing resolv.conf via resolvd(8), by sending nameserver messages with route(8) to add and remove nameservers. https://man.openbsd.org/resolvd.8 https://man.openbsd.org/route.8#nameserver --- diff --git a/vpnc-script b/vpnc-script index 237062e..0955008 100755 --- a/vpnc-script +++ b/vpnc-script @@ -192,6 +192,10 @@ elif [ -x /sbin/modify_resolvconf ]; then elif [ -x /usr/sbin/unbound-control ] && /usr/sbin/unbound-control status > /dev/null 2>&1; then MODIFYRESOLVCONF=modify_resolvconf_unbound RESTORERESOLVCONF=restore_resolvconf_unbound +elif [ -x /usr/sbin/rcctl ] && /usr/sbin/rcctl check resolvd >/dev/null; then + # OpenBSD's resolvd by sending route messages + MODIFYRESOLVCONF=modify_resolvconf_resolvd + RESTORERESOLVCONF=restore_resolvconf_resolvd else # Generic for any OS MODIFYRESOLVCONF=modify_resolvconf_generic RESTORERESOLVCONF=restore_resolvconf_generic @@ -899,6 +903,16 @@ restore_resolvconf_unbound() { fi } +# === resolv.conf handling via resolvd ========= + +modify_resolvconf_resolvd() { + /sbin/route nameserver $TUNDEV $INTERNAL_IP4_DNS $INTERNAL_IP6_DNS +} + +restore_resolvconf_resolvd() { + /sbin/route nameserver $TUNDEV +} + # ========= Toplevel state handling ======================================= do_pre_init() {