Compare commits

...

8 Commits

Author SHA1 Message Date
Sukru Senli
ed107abe0e questd updated 2017-01-30 17:57:42 +01:00
Sukru Senli
7968558847 questd-updated 2017-01-27 11:29:44 +01:00
Alex Oprea
692fced9f9 questd: questd-monitor: remove dummy set 2017-01-25 19:21:16 +01:00
Alex Oprea
7f467c553a questd: add quest-monitor script refs #11253 2017-01-25 19:16:28 +01:00
Sukru Senli
c6383f1d0d asterisk: create hotplug directory 2017-01-25 17:51:23 +01:00
Sukru Senli
db87f6c673 asterisk: do not stop boot process #11083 2017-01-25 17:51:20 +01:00
Sukru Senli
32a6438946 brcmwifi: policy based band steering 2017-01-25 17:51:16 +01:00
Sukru Senli
ebbe738a6b icwmp-3.0-2017-01-20 2017-01-25 17:51:08 +01:00
8 changed files with 231 additions and 35 deletions

View File

@@ -455,6 +455,8 @@ define Package/asterisk18-mod/install
$(INSTALL_DATA) ./files/asterisk.default $(1)/etc/default/asterisk
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/asterisk.init $(1)/etc/init.d/asterisk
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
$(INSTALL_BIN) ./files/asterisk.hotplug $(1)/etc/hotplug.d/iface/80-asterisk
endef
define Package/asterisk18-mod-sounds/install

View File

@@ -0,0 +1,18 @@
#!/bin/sh
[ "$ACTION" = ifup ] || exit 0
config_load voice_client
config_get bindintf SIP bindintf
[ "$INTERFACE" == "$bindintf" ] || exit 0
. /lib/functions/network.sh
if [ -n "$bindintf" ]; then
network_get_ipaddr bindaddr "$bindintf"
bindaddr="${bindaddr:-0.0.0.0}"
sed -i "s/bindaddr=.*/bindaddr=$bindaddr/g" /etc/asterisk/sip.conf
[ -e /var/run/asterisk/asterisk.ctl ] && /etc/init.d/asterisk reload
fi

View File

@@ -9,26 +9,9 @@ USE_PROCD=1
NAME=asterisk
PROG=/usr/sbin/asterisk
DEFAULT=/etc/default/asterisk
CONFDIR=/etc/asterisk
init_asterisk() {
# do not start asterisk until the
# router receives a default route
config_load voice_client
local bindintf
config_get bindintf SIP bindintf ""
if [ "$bindintf" == "" ]; then
while ! ip r | grep -q default; do
sleep 1
done
else
network_get_ipaddr ip "$bindintf"
while [ "$ip" == "" ]; do
sleep 1
network_flush_cache
network_get_ipaddr ip "$bindintf"
done
fi
[ -f $DEFAULT ] && . $DEFAULT
[ -d /var/run/asterisk ] || mkdir -p /var/run/asterisk
[ -d /var/log/asterisk ] || mkdir -p /var/log/asterisk
@@ -56,6 +39,7 @@ start_service() {
}
reload_service() {
asterisk -rx "config reload $CONFDIR/sip.conf"
asterisk -rx "core reload"
asterisk -rx "dialplan reload"
asterisk -rx "brcm reload"

View File

@@ -8,11 +8,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=icwmp
PKG_VERSION:=3.0-2017-01-17
PKG_VERSION:=3.0-2017-01-20
PKG_FIXUP:=autoreconf
PKG_SOURCE_URL:=http://public.inteno.se:/icwmp.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=cfe4253f37e127c9ef405802beeec05d3507cc6a
PKG_SOURCE_VERSION:=5c39d8d99127010c8d553495cd318ced80531a04
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)

View File

@@ -156,11 +156,22 @@ wlmngr_startServices() {
enableBSD() {
local wdev wdev_to_steer
local enabled policy
local rssi_threshold bw_util
nvram set bsd_role=0
nvram unset bsd_ifnames
[ "$(uci -q get wireless.status.bandsteering)" == "1" ] || return 1
enabled="$(uci -q get wireless.bandsteering.enabled)"
[ "$enabled" == "1" ] || return 1
policy="$(uci -q get wireless.bandsteering.policy)"
policy=${policy:-0}
rssi_threshold="$(uci -q get wireless.bandsteering.rssi_threshold)"
rssi_threshold=${rssi_threshold:--75}
bw_util="$(uci -q get wireless.bandsteering.bw_util)"
bw_util=${bw_util:--60}
nvram set bsd_role=3
nvram set bsd_pport=9878
@@ -179,20 +190,40 @@ enableBSD() {
nvram set bsd_ifnames="$(nvram get bsd_ifnames) $wdev"
[ "$wdev" == "wl0" ] && wdev_to_steer="wl1" || wdev_to_steer="wl0"
if [ "$(nvram get ${wdev}_nband)" == "2" ]; then
# 2.4G
nvram set ${wdev}_bsd_if_quality_policy="0 0x0 -100"
nvram set ${wdev}_bsd_if_select_policy=$wdev_to_steer
nvram set ${wdev}_bsd_sta_select_policy="10 0 0 0 1 1 0 0 0 0x400"
nvram set ${wdev}_bsd_steer_prefix=$wdev
nvram set ${wdev}_bsd_steering_policy="0 5 3 0 0 0x1"
if [ "$policy" == "0" ]; then
# RSSI Threshold based policy #
if [ "$(nvram get ${wdev}_nband)" == "2" ]; then
# 2.4G
nvram set ${wdev}_bsd_if_quality_policy="0 0x0 -100"
nvram set ${wdev}_bsd_if_select_policy=$wdev_to_steer
nvram set ${wdev}_bsd_sta_select_policy="10 0 0 0 1 1 0 0 0 0x400"
nvram set ${wdev}_bsd_steer_prefix=$wdev
nvram set ${wdev}_bsd_steering_policy="0 5 3 0 0 0x1"
else
# 5G
nvram set ${wdev}_bsd_if_quality_policy="20 0x0 $rssi_threshold"
nvram set ${wdev}_bsd_if_select_policy=$wdev_to_steer
nvram set ${wdev}_bsd_sta_select_policy="100 0 0 0 0 1 0 0 0 0x40"
nvram set ${wdev}_bsd_steer_prefix=$wdev
nvram set ${wdev}_bsd_steering_policy="80 5 3 $rssi_threshold 0 0x40"
fi
else
# 5G
nvram set ${wdev}_bsd_if_quality_policy="20 0x0 -75"
nvram set ${wdev}_bsd_if_select_policy=$wdev_to_steer
nvram set ${wdev}_bsd_sta_select_policy="100 0 0 0 0 1 0 0 0 0x40"
nvram set ${wdev}_bsd_steer_prefix=$wdev
nvram set ${wdev}_bsd_steering_policy="80 5 3 -75 0 0x40"
# Bandwidth Usage based policy #
if [ "$(nvram get ${wdev}_nband)" == "2" ]; then
# 2.4G
nvram set ${wdev}_bsd_if_quality_policy="0 0x0 -75"
nvram set ${wdev}_bsd_if_select_policy=$wdev_to_steer
nvram set ${wdev}_bsd_sta_select_policy="0 0 0 0 0 1 0 0 0 0x600"
nvram set ${wdev}_bsd_steer_prefix=$wdev
nvram set ${wdev}_bsd_steering_policy="0 5 3 0 0 0x10"
else
# 5G
nvram set ${wdev}_bsd_if_quality_policy="40 0x0 -75"
nvram set ${wdev}_bsd_if_select_policy=$wdev_to_steer
nvram set ${wdev}_bsd_sta_select_policy="0 0 0 0 0 1 0 0 0 0x240"
nvram set ${wdev}_bsd_steer_prefix=$wdev
nvram set ${wdev}_bsd_steering_policy="$bw_util 5 3 0 0 0x40"
fi
fi
#fi
done

View File

@@ -8,7 +8,7 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=questd
PKG_VERSION:=3.1.28
PKG_SOURCE_VERSION:=44105d2003ad530b8ba4e85fd6ac06850aec1f4c
PKG_SOURCE_VERSION:=74cd9925cf99f48e2241b4430b6bf3134790122a
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=http://public.inteno.se:/questd

View File

@@ -11,6 +11,8 @@ start_service() {
procd_set_param command "/sbin/questd"
procd_set_param respawn
procd_close_instance
pidof questd-monitor > /dev/null 2>&1 || /sbin/questd-monitor &
}
stop() {

159
questd/files/sbin/questd-monitor Executable file
View File

@@ -0,0 +1,159 @@
#!/bin/sh
# 1. sleep for $SLEEP_LONG seconds
# 2. run the check_* functions
# 3. sleep for $SLEEP_SHORT seconds
# 4. go to step 2. $SAMPLES-1 times (step 2. will run $SAMPLES times)
# 5. go to step 1.
SAMPLES=4
SLEEP_SHORT=2
SLEEP_LONG=10
# worst-case scenario:
# quest will be restarted in:
# SLEEP_LONG + (SAMPLES-1)*SLEEP_SHORT + UBUS_TIMEOUT + epsilon =
# = 21 seconds
# number of process
NPROC_LIMIT=2 # the value that is considered to be wrong (and above)
NPROC_COUNT=4 # number of time that the NPROC_LIMIT has to be hit to trigger a process restart
NPROC_NFAIL=0 # current consecutive Number of FAILures. process restarts when NPROC_NFAIL == NPROC_COUNT
# memmory limit
MEM_LIMIT=50000
MEM_COUNT=4
MEM_NFAIL=0
# procentage of CPU usage
PCPU_LIMIT=38
PCPU_COUNT=4
PCPU_NFAIL=0
UBUS_TIMEOUT=5
restart_questd()
{
logger -s -t $0[$$] "Restarting questd. $NPROC_NFAIL $MEM_NFAIL $PCPU_NFAIL"
/etc/init.d/quest stop
killall -q -KILL questd
/etc/init.d/quest start
NPROC_NFAIL=0
MEM_NFAIL=0
PCPU_NFAIL=0
}
check_nproc()
{
local nproc="$@"
if [ "$nproc" -ge "$NPROC_LIMIT" ]; then
NPROC_NFAIL=$((NPROC_NFAIL + 1))
else
NPROC_NFAIL=0
fi
[ "$NPROC_NFAIL" -ge "$NPROC_COUNT" ] && return 1
return 0
}
check_mem()
{
local mem="$@"
local ok=true
for m in $mem; do
if [ "$m" -ge "$MEM_LIMIT" ]; then
ok=false
break
fi
done
[ "$ok" = "true" ] && MEM_NFAIL=0
[ "$ok" = "false" ] && MEM_NFAIL=$((MEM_NFAIL + 1))
[ "$MEM_NFAIL" -ge "$MEM_COUNT" ] && return 1
return 0
}
check_pcpu()
{
local pcpu="$@"
local ok=true
for p in $pcpu; do
p=${p%%%*}
if [ "$p" -ge "$PCPU_LIMIT" ]; then
ok=false
break
fi
done
[ "$ok" = "true" ] && PCPU_NFAIL=0
[ "$ok" = "false" ] && PCPU_NFAIL=$((PCPU_NFAIL + 1))
[ "$PCPU_NFAIL" -ge "$PCPU_COUNT" ] && return 1
return 0
}
check_ubuscall()
{
local rv
ubus -t $UBUS_TIMEOUT call router.system info >/dev/null 2>&1
rv=$?
[ "$rv" = "0" ] && return 0
return 1
}
main()
{
local topline nproc mem pcpu
local restart_nproc restart_mem restart_pcpu
local sample=1
while true ; do
# collect info
topline=$(top -bn1 | grep "/sbin/[q]uestd" | grep -v monitor)
nproc=$(echo "$topline" | wc -l)
check_nproc $nproc
restart_nproc=$?
mem=$(echo -en "$topline" | awk '{print $5}')
check_mem $mem
restart_mem=$?
pcpu=$(echo -en "$topline" | awk '{print $7}')
check_pcpu $pcpu
restart_pcpu=$?
# do the restart
if [ "$restart_nproc" = "1" -o \
"$restart_mem" = "1" -o \
"$restart_pcpu" = "1" ]
then
check_ubuscall || restart_questd
fi
# sleep
if [ "$sample" -lt "$SAMPLES" ]; then
sample=$((sample + 1))
sleep $SLEEP_SHORT
else
sample=1
sleep $SLEEP_LONG
fi
done
}
main $@