#!/bin/sh /etc/rc.common
|
|
##############################################################################
|
|
#
|
|
# Copyright (C) 2016 Michael Hanselmann, Eric Luehrsen
|
|
#
|
|
##############################################################################
|
|
#
|
|
# This init script is just the entry point for Unbound UCI.
|
|
#
|
|
##############################################################################
|
|
|
|
START=19
|
|
STOP=50
|
|
USE_PROCD=1
|
|
PROG=/usr/sbin/unbound
|
|
|
|
##############################################################################
|
|
|
|
boot() {
|
|
UB_BOOT=1
|
|
start "$@"
|
|
}
|
|
|
|
##############################################################################
|
|
|
|
start_service() {
|
|
if [ -n "$UB_BOOT" ] ; then
|
|
# Load procd triggers (rc) and use event IFUP to really start
|
|
return 0
|
|
fi
|
|
|
|
# complex UCI work
|
|
. /usr/lib/unbound/unbound.sh
|
|
unbound_start
|
|
|
|
# standard procd clause
|
|
procd_open_instance "unbound"
|
|
procd_set_param command $PROG -d -c $UB_TOTAL_CONF
|
|
procd_set_param respawn
|
|
procd_close_instance
|
|
}
|
|
|
|
##############################################################################
|
|
|
|
stop_service() {
|
|
# clean up
|
|
. /usr/lib/unbound/stopping.sh
|
|
unbound_stop
|
|
|
|
# Wait! on restart Unbound may take time writing closure stats to syslog
|
|
pidof $PROG && sleep 1
|
|
}
|
|
|
|
##############################################################################
|
|
|
|
service_triggers() {
|
|
local legacy=$( uci_get unbound.@unbound[0].trigger )
|
|
local triggers=$( uci_get unbound.@unbound[0].trigger_interface )
|
|
local trigger="$triggers $legacy"
|
|
|
|
. /usr/lib/unbound/defaults.sh
|
|
|
|
|
|
if [ ! -f "$UB_TOTAL_CONF" -o -n "$UB_BOOT" ] ; then
|
|
# Unbound is can be a bit heavy, so wait some on first start but any
|
|
# interface coming up affects the trigger and delay so guarantee start
|
|
procd_add_raw_trigger "interface.*.up" 5000 /etc/init.d/unbound restart
|
|
|
|
elif [ -n "$triggers" ] ; then
|
|
PROCD_RELOAD_DELAY=2000
|
|
procd_add_reload_trigger "unbound" "dhcp"
|
|
|
|
|
|
for trigger in $triggers ; do
|
|
# User selected triggers to restart at any other time
|
|
procd_add_reload_interface_trigger "$trigger"
|
|
done
|
|
|
|
else
|
|
PROCD_RELOAD_DELAY=2000
|
|
procd_add_reload_trigger "unbound" "dhcp"
|
|
fi
|
|
}
|
|
|
|
##############################################################################
|
|
|