Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/bsd/openresolv/dist Import openresolv-3.3.3



details:   https://anonhg.NetBSD.org/src/rev/5e9ad8f338b6
branches:  trunk
changeset: 749186:5e9ad8f338b6
user:      roy <roy%NetBSD.org@localhost>
date:      Sat Nov 21 02:40:54 2009 +0000

description:
Import openresolv-3.3.3

OK: core@, joerg@

diffstat:

 external/bsd/openresolv/dist/README               |   11 +
 external/bsd/openresolv/dist/dnsmasq.in           |  118 ++++++
 external/bsd/openresolv/dist/libc.in              |  162 ++++++++
 external/bsd/openresolv/dist/named.in             |   80 ++++
 external/bsd/openresolv/dist/resolvconf.8.in      |  227 ++++++++++++
 external/bsd/openresolv/dist/resolvconf.conf.5.in |  154 ++++++++
 external/bsd/openresolv/dist/resolvconf.in        |  401 ++++++++++++++++++++++
 external/bsd/openresolv/dist/unbound.in           |   67 +++
 8 files changed, 1220 insertions(+), 0 deletions(-)

diffs (truncated from 1252 to 300 lines):

diff -r 495c3b533c11 -r 5e9ad8f338b6 external/bsd/openresolv/dist/README
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/external/bsd/openresolv/dist/README       Sat Nov 21 02:40:54 2009 +0000
@@ -0,0 +1,11 @@
+openresolv is a resolvconf implementation which manages resolv.conf
+You can find the latest version at http://roy.marples.name/projects/openresolv
+It is written and maintained by Roy Marples <roy%marples.name@localhost>
+
+This resolvconf implementation, along with its subscribers, work with a
+POSIX compliant shell and userland utilities. It is designed to work without
+tools such as sed as it *has* to work without /usr being available.
+
+On systems where resolvconf is expected to be used before /var/run is available
+for writing, you can configure openresolv to write somewhere else, like say a
+ramdisk.
diff -r 495c3b533c11 -r 5e9ad8f338b6 external/bsd/openresolv/dist/dnsmasq.in
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/external/bsd/openresolv/dist/dnsmasq.in   Sat Nov 21 02:40:54 2009 +0000
@@ -0,0 +1,118 @@
+#!/bin/sh
+# Copyright (c) 2007-2009 Roy Marples
+# All rights reserved
+
+# dnsmasq subscriber for resolvconf
+
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+#       copyright notice, this list of conditions and the following
+#       disclaimer in the documentation and/or other materials provided
+#       with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+[ -f "@SYSCONFDIR@"/resolvconf.conf ] || exit 0
+. "@SYSCONFDIR@/resolvconf.conf" || exit 1
+[ -z "$dnsmasq_conf" -o -z "$dnsmasq_resolv" ] && exit 0
+[ -z "$RESOLVCONF" ] && eval "$(@PREFIX@/sbin/resolvconf -v)"
+
+: ${dnsmasq_pid:=/var/run/dnsmasq.pid}
+: ${dnsmasq_restart:=@RESTARTCMD dnsmasq@}
+newconf="# Generated by resolvconf\n"
+newresolv="$newconf"
+
+# Using dbus means that we never have to restart the daemon
+# This is important as it means we should not drop DNS queries
+# whilst changing DNS options around. However, dbus support is optional
+# so we need to validate a few things first.
+# Check for DBus support in the binary
+dbus=false
+: ${dbus_pid:=/var/run/dbus/dbus.pid}
+[ -s "$dbus_pid" ] || dbus_pid=/var/run/dbus.pid
+[ -s "$dbus_pid" ] || dbus_pid=/var/run/dbus/pid
+if [ -s "$dbus_pid" -a -s "$dnsmasq_pid" ]; then
+       if dnsmasq --version 2>/dev/null | \
+               grep -q "^Compile time options.*[[:space:]]DBus[[:space:]]"
+       then
+               # Sanity - check that dnsmasq and dbus are running
+               if kill -0 $(cat "$dbus_pid") 2>/dev/null && \
+                       kill -0 $(cat "$dnsmasq_pid") 2>/dev/null
+               then
+                       dbus=true
+                       newconf="$newconf\n# Domain specific servers will"
+                       newconf="$newconf be sent over dbus\nenable-dbus\n"
+               fi
+       fi
+fi
+
+for n in $NAMESERVERS; do
+       newresolv="${newresolv}nameserver $n\n"
+done
+
+dbusdest=
+for d in $DOMAINS; do
+       dn="${d%%:*}"
+       ns="${d#*:}"
+       while [ -n "$ns" ]; do
+               if $dbus; then
+                       SIFS=${IFS-y} OIFS=$IFS
+                       IFS=.
+                       set -- ${ns%%,*}
+                       num="0x$(printf "%02x" $1 $2 $3 $4)"
+                       if [ "$SIFS" = yi ]; then
+                               unset IFS
+                       else
+                               IFS=$OIFS
+                       fi
+                       dbusdest="$dbusdest uint32:$(printf "%u" $num)"
+                       dbusdest="$dbusdest string:$dn"
+               else
+                       newconf="${newconf}server=/$dn/${ns%%,*}\n"
+               fi
+               [ "$ns" = "${ns#*,}" ] && break
+               ns="${ns#*,}"
+       done
+done
+
+changed=false
+if [ ! -f "$dnsmasq_conf" ] || \
+       [ "$(cat "$dnsmasq_conf")" != "$(printf "$newconf")" ]
+then
+       changed=true
+       printf "$newconf" >"$dnsmasq_conf"
+fi
+if [ -f "$dnsmasq_resolv" ]; then
+       if [ "$(cat "$dnsmasq_resolv")" != "$(printf "$newresolv")" ]; then
+               changed=true
+               printf "$newresolv" >"$dnsmasq_resolv"
+       fi
+else
+       # dnsmasq polls this file so no need to set changed=true
+       printf "$newresolv" >"$dnsmasq_resolv"
+fi
+
+if $changed; then
+       eval $dnsmasq_restart
+fi
+if $dbus; then
+       $restart || kill -HUP $(cat "$dnsmasq_pid")
+       # Send even if empty so old servers are cleared
+       dbus-send --system --dest=uk.org.thekelleys.dnsmasq \
+               /uk/org/thekelleys/dnsmasq uk.org.thekelleys.SetServers \
+               $dbusdest
+fi
diff -r 495c3b533c11 -r 5e9ad8f338b6 external/bsd/openresolv/dist/libc.in
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/external/bsd/openresolv/dist/libc.in      Sat Nov 21 02:40:54 2009 +0000
@@ -0,0 +1,162 @@
+#!/bin/sh
+# Copyright (c) 2007-2009 Roy Marples
+# All rights reserved
+
+# libc subscriber for resolvconf
+
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+#       copyright notice, this list of conditions and the following
+#       disclaimer in the documentation and/or other materials provided
+#       with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+SYSCONFDIR=@SYSCONFDIR@
+LIBEXECDIR=@LIBEXECDIR@
+VARDIR=@VARDIR@
+IFACEDIR="$VARDIR/interfaces"
+
+# sed may not be available, and this is faster on small files
+key_get_value()
+{
+       local key="$1" value= x= line=
+
+       shift
+       if [ $# -eq 0 ]; then
+               while read line; do
+                       case "$line" in
+                       "$key"*) echo "${line##$key}";;
+                       esac
+               done
+       else
+               for x; do
+                       while read line; do
+                               case "$line" in
+                               "$key"*) echo "${line##$key}";;
+                               esac
+                       done < "$x"
+               done
+       fi
+}
+
+# Support original resolvconf configuration layout
+# as well as the openresolv config file
+if [ -f "$SYSCONFDIR"/resolvconf.conf ]; then
+       . "$SYSCONFDIR"/resolvconf.conf
+elif [ -d "$SYSCONFDIR"/resolvconf ]; then
+       SYSCONFDIR="$SYSCONFDIR/resolvconf/resolv.conf.d"
+       base="$SYSCONFDIR/resolv.conf.d/base"
+       if [ -f "$base" ]; then
+               name_servers="$(key_get_value "nameserver " "$base")"
+               search_domains="$(key_get_value "search " "$base")"
+               if [ -z "$search_domains" ]; then
+                       search_domains="$(key_get_value "domain " "$base")"
+               fi
+               resolv_conf_options="$(key_get_value "options " "$base")"
+       fi
+       if [ -f "$SYSCONFDIR"/resolv.conf.d/head ]; then
+               resolv_conf_head="$(cat "${SYSCONFDIR}"/resolv.conf.d/head)"
+       fi
+       if [ -f "$SYSCONFDIR"/resolv.conf.d/tail ]; then
+               resolv_conf_tail="$(cat "$SYSCONFDIR"/resolv.conf.d/tail)"
+       fi
+fi
+: ${resolv_conf:=/etc/resolv.conf}
+: ${libc_restart:=@RESTARTCMD nscd@}
+: ${list_resolv:=@PREFIX@/sbin/resolvconf -l}
+if [ "${resolv_conf_head-x}" = x -a -f "$SYSCONFDIR"/resolv.conf.head ]; then
+       resolv_conf_head="$(cat "${SYSCONFDIR}"/resolv.conf.head)"
+fi
+if [ "${resolv_conf_tail-x}" = x -a -f "$SYSCONFDIR"/resolv.conf.tail ]; then
+       resolv_conf_tail="$(cat "$SYSCONFDIR"/resolv.conf.tail)"
+fi
+
+uniqify()
+{
+       local result=
+       while [ -n "$1" ]; do
+               case " $result " in
+               *" $1 "*);;
+               *) result="$result $1";;
+               esac
+               shift
+       done
+       echo "${result# *}"
+}
+
+case "${resolv_conf_passthrough:-NO}" in
+[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
+       newest=
+       for conf in "$IFACEDIR"/*; do
+               if [ -z "$newest" -o "$conf" -nt "$newest" ]; then
+                       newest="$conf"
+               fi
+       done
+       [ -z "$newest" ] && exit 0
+       newconf="$(cat "$newest")\n"
+       ;;
+*)
+       [ -z "$RESOLVCONF" ] && eval "$(@PREFIX@/sbin/resolvconf -v)"
+       newsearch="$(uniqify $search_domains $SEARCH)"
+       newns="$(uniqify $name_servers $NAMESERVERS)"
+
+       # Hold our new resolv.conf in a variable to save on temporary files
+       newconf="# Generated by resolvconf\n"
+       if [ -n "$resolv_conf_head" ]; then
+               newconf="$newconf$resolv_conf_head\n"
+       fi
+       [ -n "$newsearch" ] && newconf="${newconf}search $newsearch\n"
+       for n in $newns; do
+               newconf="${newconf}nameserver $n\n"
+       done
+
+       # Now get any configured options
+       opts="$resolv_conf_options${resolv_conf_options:+ }"
+       opts="$opts$($list_resolv | key_get_value "options ")"
+       if [ -n "$opts" ]; then
+               newconf="${newconf}options"
+               for opt in $(uniqify $opts); do
+                       newconf="${newconf} $opt"
+               done
+               newconf="$newconf\n"
+       fi
+
+       if [ -n "$resolv_conf_tail" ]; then
+               newconf="$newconf$resolv_conf_tail\n"
+       fi
+       ;;
+esac
+
+# Check if the file has actually changed or not
+if [ -e "$resolv_conf" ]; then
+       [ "$(cat "$resolv_conf")" = "$(printf "$newconf")" ] && exit 0
+fi
+
+# Create our resolv.conf now
+(umask 022; printf "$newconf" >"$resolv_conf")
+eval $libc_restart
+
+retval=0
+# Notify users of the resolver
+for script in "$LIBEXECDIR"/libc.d/*; do
+       if [ -f "$script" -a -x "$script" ]; then
+               "$script" "$@"
+               retval=$(($retval + $?))



Home | Main Index | Thread Index | Old Index