#!/bin/bash . /etc/rc.conf . /etc/rc.d/functions . /etc/conf.d/dnsmasq checkconfig() { local testout if ! testout=$(/usr/bin/dnsmasq --test 2>&1); then echo "$testout" return 1 fi return 0 } pidfile=/run/dnsmasq.pid if [[ -r $pidfile ]]; then read -r PID < "$pidfile" if [[ ! -d /proc/$PID ]]; then # stale pidfile unset PID rm -f "$pidfile" fi fi case $1 in start) stat_busy "Starting DNS/DHCP daemon" if [[ -z $PID ]] && checkconfig && /usr/bin/dnsmasq "--user=${DNSMASQ_USER:-nobody}" \ "--pid-file=$pidfile" \ "${DNSMASQ_OPTS[@]}"; then add_daemon dnsmasq stat_done else stat_fail fi ;; stop) stat_busy "Stopping DNS/DHCP daemon" if [[ $PID ]] && kill "$PID" &> /dev/null; then # dnsmasq doesn't clean up after itself rm -f "$pidfile" rm_daemon dnsmasq stat_done else stat_fail fi ;; restart) $0 stop sleep 1 $0 start ;; checkconfig) # diagnostics will be printed, with zero/non-zero exit /usr/bin/dnsmasq --test ;; *) echo "usage: $0 " esac