--- /dev/null
+#!/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" 3000 /etc/init.d/unbound restart
+
+ elif [ -n "$triggers" ] ; then
+ 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_add_reload_trigger "unbound" "dhcp"
+ fi
+}
+
+##############################################################################
+