mir3c/squashfs-root/etc/init.d/miqos

378 lines
7.2 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
START=99
EXTRA_COMMANDS=" init_ipt "
EXTRA_COMMANDS=" $EXTRA_COMMANDS on off shutdown die restart "
EXTRA_COMMANDS=" $EXTRA_COMMANDS qos_flag status "
EXTRA_COMMANDS=" $EXTRA_COMMANDS on_limit off_limit set_limit reset_limit apply show_limit limit_flag "
EXTRA_COMMANDS=" $EXTRA_COMMANDS change_band show_band "
EXTRA_COMMANDS=" $EXTRA_COMMANDS set_type show_cfg "
EXTRA_COMMANDS=" $EXTRA_COMMANDS on_guest show_guest on_xq show_xq "
EXTRA_COMMANDS=" $EXTRA_COMMANDS set_seq get_seq "
EXTRA_COMMANDS=" $EXTRA_COMMANDS nprio reserve "
EXTRA_COMMANDS=" $EXTRA_COMMANDS supress_on supress_off supress_update "
#FIX-QOS only
EXTRA_COMMANDS=" $EXTRA_COMMANDS device_in device_out "
EXTRA_HELP="
--stat:
on/off/shutdown/die/restart
qos_flag/status
--limit:
on_limit/set_limit min/max/all [MAC] MAX-UP MAX-DOWN MIN-UP MIN-DOWN
off_limit/reset_limit [MAC]
show_limit
apply
limit_flag [MAC] on/off
show_limit_flag [MAC]
--band:
change_band UP-RATE DOWN-RATE
show_band
--type:
set_type [auto/min/max/service]
show_cfg
--guest & xq:
on_guest UP DOWN
show_guest
on_xq UP DOWN
show_xq
--seq:
get_seq
set_seq [auto/game/web/video]
--supress:
supress_update/supress_on/supress_off
--others:
nprio add/del IP HIGH_PRIO_WITHOUT_LIMIT/HIGH_PRIO_WITH_BANDLIMIT
reserve add/del IP video
"
#only support 3 types, CTF/STD/FIX
QOS_VER="FIX" #here, value would be replace by sed
if [ "$QOS_VER" == "CTF" ]; then
EXECMD="/usr/bin/lua /usr/sbin/miqosd ctf"
EXECMD_C="/usr/sbin/miqosc"
export PROCLINE=$EXECMD
export PROCFLAG=$PROCLINE
elif [ "$QOS_VER" == "STD" ]; then
EXECMD="/usr/bin/lua /usr/sbin/miqosd std"
EXECMD_C="/usr/sbin/miqosc"
export PROCLINE=$EXECMD
export PROCFLAG=$PROCLINE
elif [ "$QOS_VER" == "HWQOS" ]; then
EXECMD="/usr/bin/lua /usr/sbin/miqosd hwqos"
EXECMD_C="/usr/sbin/miqosc"
export PROCLINE=$EXECMD
export PROCFLAG=$PROCLINE
else
EXECMD_C="/usr/sbin/miqosc"
fi
#not supported command check
ignore(){
null_types=$1
[ -z "$null_types" ] && return 0;
for t in $null_types;
do
[ "$t" == "$QOS_VER" ] && echo "not supported for $QOS_VER." && exit 0;
done
}
#-------------------------------
init_ipt(){
/usr/sbin/miqosd_init.sh
return $?
}
#-------------------------------
#0,ok; non-0, Nok
start() {
if [ "$QOS_VER" == "FIX" ]; then
#check NETMODE 1stly
local mode
mode=`uci -q get xiaoqiang.common.NETMODE`
if [ "$mode" == "wifiapmode" -o "$mode" == "lanapmode" ]; then
echo "In AP mode, disable QoS. exit!"
$EXECMD_C off
return 0
fi
local enabled
enabled=`uci -q get miqos.settings.enabled`
if [ "$enabled" = "1" ]; then
$EXECMD_C on
else
$EXECMD_C off
fi
return 0
else
#check NETMODE 1stly
local mode
mode=`uci get xiaoqiang.common.NETMODE 2>/dev/null`
if [ "$mode" == "wifiapmode" -o "$mode" == "lanapmode" ]; then
echo "In AP mode, disable QoS. exit!"
return 0
fi
/usr/sbin/supervisord start
qos_flag
if [ $? -ne "0" ]; then
echo "miqos is not enabled, only keep top layer1 queue."
running
if [ $? -eq "0" ]; then
$EXECMD_C off
fi
return 0
fi
# enable QoS Service
$EXECMD_C on
return 0
fi
}
stop() {
shutdown
}
shutdown(){
$EXECMD_C shutdown
}
restart(){
stop &>/dev/null
start &>/dev/null
return 0
}
on(){
uci set miqos.settings.enabled=1
uci commit miqos
if [ -f "/etc/init.d/qca-nss-ecm" ]; then
/etc/init.d/qca-nss-ecm restart 1 &>/dev/null
fi
if [ "$QOS_VER" == "STD" ]; then
uci set hwnat.switch.miqos=1
uci commit hwnat
/etc/init.d/hwnat stop &>/dev/null
fi
start
}
off(){
#set -x
uci set miqos.settings.enabled=0
uci commit miqos
if [ -f "/etc/init.d/qca-nss-ecm" ]; then
/etc/init.d/qca-nss-ecm restart 0 &>/dev/null
fi
if [ "$QOS_VER" == "FIX" ]; then
stop #clean directly
elif [ "$QOS_VER" == "STD" ]; then
uci set hwnat.switch.miqos=0
uci commit hwnat
running
if [ $? == 1 ]; then
start # if not running, invoke start, and then off it
fi
$EXECMD_C off #close htb rules
#try to start hwnat whatever enough memory or not
/etc/init.d/hwnat start &>/dev/null
else
running
if [ $? == 1 ]; then
start # if not running, invoke start, and then off it
fi
$EXECMD_C off #close htb rules
fi
return 0
}
die(){
#
$EXECMD_C die &
/usr/sbin/supervisord stop
return 0
}
#-------------------------------
#return: 0,enabled; 1 disabled
qos_flag(){
#config_load "miqos"
local st
st=`uci get miqos.settings.enabled 2>/dev/null`
if [ $st -eq "0" ]; then
return 1
fi
return 0
}
# status: 0, actived, 1, inactived
status(){
qos_flag
if [ $? == 1 ]; then
return 1
fi
if [ "$QOS_VER" == "FIX" ]; then
return 0;
else
/usr/sbin/supervisord status
if [ $? == 1 ]; then
return 1
fi
return 0
fi
}
running(){
ignore "FIX"
/usr/sbin/supervisord status
if [ $? == 1 ]; then
return 1
fi
return 0
}
#-------------------------------
on_limit(){
$EXECMD_C on_limit $@
}
off_limit(){
$EXECMD_C off_limit $@
}
set_limit(){
$EXECMD_C set_limit $@
}
reset_limit(){
$EXECMD_C reset_limit $@
}
apply(){
$EXECMD_C apply $@
}
show_limit(){
$EXECMD_C show_limit $@
}
limit_flag(){
$EXECMD_C limit_flag $@
}
#-------------------------------
change_band(){
$EXECMD_C change_band $@
}
show_band(){
$EXECMD_C show_band $@
}
#-------------------------------
set_type(){
ignore "FIX"
$EXECMD_C set_type $@
}
show_cfg(){
$EXECMD_C show_cfg $@
}
#-------------------------------
on_guest(){
$EXECMD_C on_guest $@
}
show_guest(){
$EXECMD_C show_guest $@
}
on_xq(){
$EXECMD_C on_xq $@
}
show_xq(){
$EXECMD_C show_xq $@
}
#-------------------------------
nprio(){
ignore "FIX"
$EXECMD_C nprio $@
}
reserve(){
ignore "FIX"
$EXECMD_C reserve $@
}
#-------------------------------
get_seq(){
$EXECMD_C get_seq $@
}
set_seq(){
$EXECMD_C set_seq $@
}
#-------------------------------
supress_on(){
ignore "FIX"
$EXECMD_C supress_host on
}
supress_off(){
ignore "FIX"
$EXECMD_C supress_host off
}
supress_update(){
ignore "FIX"
local app_name="2" # xunyou
[ -f /proc/flowmark_app ] && {
ret=`cat /proc/flowmark_app | awk -v app_name=$app_name -F, '{ if($5!="" && $2==app_name){print($5) } }'`
if [ "$ret" != "" ]; then
echo [$ret]
$EXECMD_C supress_host on
else
$EXECMD_C supress_host off
fi
}
}
#-------------------------------
device_in(){
ignore "CTF STD"
$EXECMD_C device_in $@
}
device_out(){
ignore "CTF STD"
$EXECMD_C device_out $@
}