blob: d62fdede39c1fd7371800207750af0d08f0522fd [file] [log] [blame]
#!/bin/sh
. /etc/utils.sh
register_experiment CacheWarming
register_experiment DNSTimingLog
case "$1" in
start)
mkdir -p /config/dnsmasq
mkdir -p /tmp/dnsmasq
for d in /config/dnsmasq/* /tmp/dnsmasq/*; do
# Remove symlinks in /config/dnsmasq. Some existed in an earlier build
# and interfere.
if [ -h "$d" ]; then
echo " -- Removing $d --"
rm -f "$d"
fi
[ -e "$d" ] || continue
echo "--- $d: ---"
cat "$d"
echo "---"
done | logos dnsmasq
if [ ! -r /tmp/resolv.conf.external ]; then
# mainly happens with nfsroot
cp /etc/resolv.conf /tmp/resolv.conf.external ||
touch /tmp/resolv.conf.external
fi
if [ -x /bin/cache_warming/cache_warming.py ] && experiment CacheWarming; then
babysit 60 /bin/cache_warming/cache_warming.py 2>&1 | logos cachewarming &
fi
# Stand-alone bridge mode for network type boxes.
# When there is no wan0 link, don't run dnsmasq dhcp server on br0.
basic_bridge_dhcp_disable=""
if [ -e "/sys/class/net/wan0" -a -e "/sys/class/net/br0" ]; then
if ! is-interface-up wan0; then
basic_bridge_dhcp_disable="--except-interface br0"
fi
fi
babysit 60 dnsmasq \
$basic_bridge_dhcp_disable \
--pid-file=/var/run/dnsmasq.pid \
--conf-file=/etc/dnsmasq.conf \
--resolv-file=/tmp/resolv.conf.external \
--keep-in-foreground \
--log-facility=- 2>&1 | logos dnsmasq &
babysit 60 dnsmasqstats 2>&1 | logos dnsmasqstats &
;;
stop)
pkillwait cache_warming
pkillwait -x dnsmasq
pkillwait -x dnsmasqstats
;;
restart)
$0 stop; $0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0