ASR_BASE

Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/external/subpack/net/nut/files/nutshutdown b/external/subpack/net/nut/files/nutshutdown
new file mode 100755
index 0000000..7270f98
--- /dev/null
+++ b/external/subpack/net/nut/files/nutshutdown
@@ -0,0 +1,51 @@
+#!/bin/sh
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+stop_instance() {
+	/etc/init.d/nut-server stop "$1"
+}
+
+shutdown_instance() {
+	local cfg="$1"
+	config_get driver "$cfg" driver "usbhid-ups"
+
+	# Only FSD if killpower was indicated
+	if [ -f /var/run/killpower ]; then
+		/lib/nut/"${driver}" -a "$cfg" -k
+	fi
+}
+
+do_fsd() {
+	if [ -f /var/run/killpower ]; then
+		# Only make FS readonly if we are doing an FSD
+		mount -o remount,ro /overlay /overlay
+		mount -o remount,ro / /
+
+		. ${IPKG_INSTROOT}/lib/functions.sh
+
+		if [ -f /etc/config/nut_server ]; then
+			config_load nut_server
+
+			# Can't FSD unless drivers are stopped
+			config_foreach stop_instance driver
+			# Driver will  wait 'offdelay' before shutting down
+			config_foreach shutdown_instance driver
+			# So this can happen
+			rm -f /var/run/killpower
+			poweroff
+			# And just in case
+			sleep 120
+			# Uh-oh failed to poweroff UPS
+			reboot -f
+		else
+			poweroff
+		fi
+	else
+		poweroff
+	fi
+}
+
+do_fsd