#!/bin/sh
-# Copyright 2006 Gentoo Foundation
# Copyright 2007 Roy Marples
# All rights reserved
# This allows dnsmasq to forward domains for a specific VPN domain to the
# VPN nameserver and everything else to the standard name servers.
-# A sample dnsmasq config that works as above is like so
+# A sample dnsmasq config that works as above is like so.
+# NOTE: The loopback interface on some systems maybe lo0.
#domain-needed
#interface=lo
#resolv-file=/etc/dnsmasq-resolv.conf
#conf-file=/etc/dnsmasq-resolvconf.conf
# The last step is to configure dns configuration for /etc/resolv.conf
-# for the lo interface. In Gentoo we set it up like so in /etc/conf.d/net
-#dns_servers_lo="127.0.0.1"
+# for the lo interface. You can do this in resolvconf as well by adding
+#nameserver 127.0.0.1
+# to resolv.conf.d/base
# Load our variables from resolvconf
VARS="$(resolvconf -v)"
# so we need to validate a few things first.
# Check for DBus support in the binary
DBUS=no
-if [ -s "${PREFIX}"/var/run/dbus.pid -a -s "${PREFIX}"/var/run/dnsmasq.pid ]; then
+dbuspid=/var/run/dbus/dbus.pid
+[ -s "${dbuspid}" ] || dbuspid=/var/run/dbus.pid
+if [ -s "${dbuspid}" -a -s /var/run/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 "${PREFIX}"/var/run/dbus.pid) \
- && kill -0 $(cat "${PREFIX}"/var/run/dnsmasq.pid); then
+ if kill -0 $(cat "${dbuspid}") 2>/dev/null \
+ && kill -0 $(cat /var/run/dnsmasq.pid) 2>/dev/null; then
DBUS=yes
- NEWCONF="${NEWCONF}\n# Domain specific servers will be sent over dbus\n\nenable-dbus\n"
+ NEWCONF="${NEWCONF}\n# Domain specific servers will be sent over dbus\nenable-dbus\n"
fi
fi
fi
local result=
while [ -n "$1" ]; do
case " ${result} " in
- *" $1 "*) ;;
- *) result="${result} $1" ;;
+ *" $1 "*);;
+ *) result="${result} $1";;
esac
shift
done
for N in ${NEWSEARCH}; do
case " ${NEWSL} " in
- *" ${N%,*} "*) ;;
- *) NEWSL="${NEWSL} ${N%,*}" ;;
+ *" ${N%,*} "*);;
+ *) NEWSL="${NEWSL} ${N%,*}";;
esac
case "\n${NEWRESOLV}\n" in
- *"\nnameserver ${N#*,}\n"*) ;;
- *) NEWRESOLV="${NEWRESOLV}nameserver ${N#*,}\n" ;;
+ *"\nnameserver ${N#*,}\n"*);;
+ *) NEWRESOLV="${NEWRESOLV}nameserver ${N#*,}\n";;
esac
done
for N in ${NEWNS}; do
case "\n${NEWRESOLV}\n" in
- *"\nnameserver ${N}\n") ;;
- *) NEWRESOLV="${NEWRESOLV}nameserver ${N}\n" ;;
+ *"\nnameserver ${N}\n");;
+ *) NEWRESOLV="${NEWRESOLV}nameserver ${N}\n";;
esac
done
[ -n "${NEWSL}" ] && NEWRESOLV="${NEWRESOLV}search${NEWSL}\n"
DBUSDEST=
-for DN in $(uniqify ${NEWDOMAIN}) ; do
+for DN in $(uniqify ${NEWDOMAIN}); do
if [ "${DBUS}" = "yes" ]; then
IP=${DN#*,}
SIFS=${IFS-y} OIFS=$IFS
set -- ${IP}
NUM="0x$(printf "%02x" $1 $2 $3 $4)"
if [ "${SIFS}" = "y" ]; then
- IFS=$OIFS
- else
unset IFS
+ else
+ IFS=$OIFS
fi
DBUSDEST="${DBUSDEST} uint32:$(printf "%d" ${NUM}) string:${DN%,*}"
else