ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/external/management/net/freeswitch/files/freeswitch.hotplug b/external/management/net/freeswitch/files/freeswitch.hotplug
new file mode 100644
index 0000000..93b5a20
--- /dev/null
+++ b/external/management/net/freeswitch/files/freeswitch.hotplug
@@ -0,0 +1,142 @@
+#!/bin/sh
+
+NAME=freeswitch
+COMMAND=/etc/init.d/$NAME
+
+LOGGER="/usr/bin/logger -t $NAME-hotplug"
+LOG_ERR="$LOGGER -p daemon.err --"
+LOG_INFO="$LOGGER -p daemon.info --"
+LOG_WARN="$LOGGER -p daemon.warn --"
+
+[ "$ACTION" = ifup ] || exit 0
+
+. /lib/functions.sh
+config_load $NAME
+
+config_get interface hotplug interface
+
+[ "$INTERFACE" = "$interface" ] || exit 0
+
+pidof $NAME &> /dev/null
+if [ $? -eq 0 ]; then
+ $LOG_INFO stopping $NAME
+ $COMMAND stop &> /dev/null
+fi
+
+config_get timeout hotplug timeout 60
+
+[ "$timeout" -gt 0 ] 2> /dev/null || unset timeout
+timeout="${timeout:-60}"
+
+config_get mount_point hotplug mount_point
+
+# Mount condition, idea lifted from OpenWrt Wiki
+[ -n "$mount_point" ] && {
+
+ if ! [ -d "$mount_point" ]; then
+ $LOG_ERR "$mount_point" not a valid mount point
+ exit 1
+ fi
+
+ mnt="$mount_point"
+ notReady=start
+ tmp_timeout=$timeout
+
+ while [ -n "$notReady" -a $tmp_timeout -gt 0 ]; do
+ if [ "$notReady" != start ]; then
+ $LOG_INFO "$mnt" not yet mounted, timeout in $tmp_timeout s
+ sleep 5
+ tmp_timeout=$(($tmp_timeout-5))
+ fi
+
+ notReady=
+
+ result=$(cat /proc/mounts | awk '{print $2}' | grep "^$mnt\$")
+ if [ -z "$result" ]; then
+ notReady="$mnt not ready yet"
+ fi
+ done
+
+ if [ -n "$notReady" ]; then
+ $LOG_ERR "$mnt" still not mounted
+ $LOG_ERR not starting $NAME
+ exit 1
+ else
+ $LOG_INFO "$mnt" mounted
+ fi
+
+}
+
+config_get_bool ntpd hotplug ntpd 0
+
+# ntpd condition
+[ $ntpd -eq 1 ] && {
+
+ type ntpq &> /dev/null
+ [ $? -eq 0 ] || {
+ $LOG_ERR ntpq utility not found
+ exit 1
+ }
+
+ pidof ntpd &> /dev/null || {
+ $LOG_ERR ntpd not running
+ exit 1
+ }
+
+ notReady=start
+ tmp_timeout=$timeout
+
+ while [ -n "$notReady" -a $tmp_timeout -gt 0 ]; do
+ if [ "$notReady" != start ]; then
+ $LOG_INFO system time not in sync yet, timeout in $tmp_timeout s
+ sleep 5
+ tmp_timeout=$(($tmp_timeout-5))
+ fi
+
+ notReady=
+
+ result=$(ntpq -c 'timeout 300' -c 'rv 0 stratum' 2> /dev/null | \
+ awk -F '=' '{print $2}' | grep -o -E '^[0-9]+')
+ if [ -z $result ]; then
+ $LOG_WARN failed to extract stratum from ntpd
+ notReady="unable to extract stratum"
+ else
+ $LOG_INFO ntpd stratum $result
+ if [ $result -lt 16 ] 2> /dev/null; then
+ result=$(ntpq -c 'timeout 300' -c 'rv 0 offset' 2> /dev/null \
+ | awk -F '=' '{print $2}' | grep -o -E '^[-+]?[0-9]+')
+ if [ -z $result ]; then
+ $LOG_WARN failed to extract offset from ntpd
+ notReady="unable to extract offset"
+ else
+ # "-0" looks stupid, so remove "-"
+ result=$(echo $result | grep -o '[0-9]*')
+ $LOG_INFO ntpd to system time offset \+\/\- $result ms
+ # If offset < 100 ms consider system time in sync
+ [ $result -lt 100 ] || notReady="system time not in sync yet"
+ fi
+ else
+ notReady="ntpd not in sync yet"
+ fi
+ fi
+ done
+
+ if [ -n "$notReady" ]; then
+ $LOG_ERR system time still not in sync
+ $LOG_ERR not starting $NAME
+ exit 1
+ else
+ $LOG_INFO system time in sync
+ fi
+
+}
+
+$COMMAND start &> /dev/null
+sleep 1
+pidof $NAME &>/dev/null
+if [ $? -eq 0 ]; then
+ $LOG_INFO started $NAME due to \"ifup "$INTERFACE"\" event
+else
+ $LOG_ERR start of $NAME due to \"ifup "$INTERFACE"\" event failed
+ exit 1
+fi