mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2026-01-28 01:47:19 +01:00
105 lines
2.2 KiB
Bash
Executable file
105 lines
2.2 KiB
Bash
Executable file
#!/bin/sh /etc/rc.common
|
|
|
|
. /lib/functions.sh
|
|
include /lib/network
|
|
|
|
START=21
|
|
USE_PROCD=1
|
|
|
|
checkptm() {
|
|
local retur
|
|
local ptmprio=$1
|
|
local dslat=$2
|
|
|
|
if [ "$ptmprio" -eq 2 ]; then
|
|
ptmprio="high"
|
|
else
|
|
ptmprio="low"
|
|
fi
|
|
|
|
retur=$(xtmctl operate conn --show | awk -v dslat="$dslat" -v ptmprio="$ptmprio" '{if ($2 == dslat && $3 == ptmprio ) print $2 }')
|
|
|
|
case $retur in
|
|
''|*[!0-9]*) return 0 ;;
|
|
*) return $retur ;;
|
|
esac
|
|
}
|
|
|
|
ptm_inf_conf() {
|
|
local ret
|
|
local ptmprio
|
|
local dslat
|
|
local ifname
|
|
local bridge
|
|
|
|
config_get ptmprio $1 ptmprio
|
|
config_get dslat $1 dslat
|
|
config_get ifname $1 ifname
|
|
config_get baseifname $1 baseifname
|
|
config_get bridge $1 bridge
|
|
|
|
ifname="${ifname:-$baseifname.1}"
|
|
|
|
checkptm $ptmprio $dslat
|
|
ret=$?
|
|
|
|
if [ "$ret" -eq 0 ]; then
|
|
xtmctl operate conn --add $dslat.$ptmprio 0 1
|
|
xtmctl operate conn --addq $dslat.$ptmprio 0 wrr 1 -1 -1 3000 # low priority queue
|
|
xtmctl operate conn --addq $dslat.$ptmprio 1 wrr 1 -1 -1 3000 # mid priority queue upstream ACK's and ping from LAN will use this queue
|
|
xtmctl operate conn --addq $dslat.$ptmprio 7 wrr 1 -1 -1 3000 # high priority queue, internal traffic dhcp igmp dns and icmp
|
|
xtmctl operate conn --createnetdev $dslat.$ptmprio ${ifname%%.*}
|
|
xtmctl operate intf --state 1 enable
|
|
xtmctl start
|
|
brcm_virtual_interface_rules "$baseifname" "$ifname" "$bridge"
|
|
fi
|
|
}
|
|
|
|
remove_netdevices() {
|
|
local delptm
|
|
local x=0
|
|
|
|
IFS=$'\n'
|
|
for i in `xtmctl operate conn --show | grep "PTM\|mode"`
|
|
do
|
|
if [ $x -eq 1 ]; then
|
|
delptm=$(echo $i | awk '{if ($1!="ATM") print $2"."$10}')
|
|
echo "xtmctl operate conn --delete $delptm"
|
|
xtmctl operate conn --delete $delptm
|
|
xtmctl operate conn --deletenetdev $delptm
|
|
fi
|
|
x=1
|
|
done
|
|
unset IFS
|
|
}
|
|
|
|
start_service() {
|
|
local vdslstatus
|
|
echo "Starting VDSL"
|
|
config_load layer2_interface
|
|
config_get vdslstatus vdsl device
|
|
|
|
if [ "$vdslstatus" == "up" ]; then
|
|
xtmctl start
|
|
config_load layer2_interface_vdsl
|
|
config_foreach ptm_inf_conf vdsl_interface
|
|
fi
|
|
}
|
|
|
|
stop_service() {
|
|
echo "Stopping VDSL"
|
|
# bug in broadcom stop casues IRQ issue
|
|
# xtmctl stop
|
|
remove_netdevices
|
|
}
|
|
|
|
reload_service() {
|
|
stop
|
|
start
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger layer2_interface_vdsl
|
|
}
|
|
|
|
|