/root-scripts/shape-on4
#!/bin/bash
SPEED=
awk '/Mikrotik-Rate-Limit/ {print $2}' /var/run/radattr.$1
UPLOAD=
echo $SPEED | awk -F/ '{print $1}'
DOWNLOAD=
echo $SPEED | awk -F/ '{print $2}'
n=
echo $1 | awk -Fppp '{print $2}'
let m=$n+1000
let i=$n+3000
let TOTAL_RATE=$DOWNLOAD*2
#let UPLOAD = $UPLOAD*1.2 | bc
#let DOWNLOAD = $DOWNLOAD*1.2 | bc
let DEFAULT_RATE_DOWNLOAD=$DOWNLOAD*1
let DEFAULT_BURST_DOWNLOAD=$DOWNLOAD*1
let INTERNATIONAL_RATE_DOWNLOAD=$DOWNLOAD*1
let INTERNATIONAL_BURST_DOWNLOAD=$DOWNLOAD*1
let BG_RATE_DOWNLOAD=$DOWNLOAD*1
let BG_BURST_DOWNLOAD=$DOWNLOAD*1
let LOCAL_RATE_DOWNLOAD=$DOWNLOAD*1
let LOCAL_BURST_DOWNLOAD=$DOWNLOAD*1
let DEFAULT_RATE_UPLOAD=$UPLOAD*1
let DEFAULT_BURST_UPLOAD=$UPLOAD*1
let INTERNATIONAL_RATE_UPLOAD=$UPLOAD*1
let INTERNATIONAL_BURST_UPLOAD=$UPLOAD*1
let BG_RATE_UPLOAD=$UPLOAD*1
let BG_BURST_UPLOAD=$UPLOAD*1
let LOCAL_RATE_UPLOAD=$UPLOAD*1
let LOCAL_BURST_UPLOAD=$UPLOAD*1
### DOWNLOAD ###
#tc qdisc add dev $1 root handle 1: htb
#tc class add dev $1 parent 1: classid 1:$i htb rate $TOTAL_RATE
#tc qdisc add dev $1 parent 1:$i handle $i sfq perturb 10
#tc filter add dev $1 parent 1: protocol ip prio 1 u32 match ip dst $2 match ip tos 0x80 0xff classid 1:$i
#tc class add dev $1 parent 1: classid 1:$m htb rate $DOWNLOAD
#tc qdisc add dev $1 parent 1:$m handle $m sfq perturb 10
#tc filter add dev $1 parent 1: protocol ip prio 1 u32 match ip dst $2 classid 1:$m
###
#tc qdisc add dev $1 root handle 1: htb default 20
#tc class add dev $1 parent 1: classid 1:1 htb rate $TOTAL_RATE
#tc class add dev $1 parent 1:1 classid 1:20 htb rate $DEFAULT_RATE_DOWNLOAD
#tc class add dev $1 parent 1:1 classid 1:30 htb rate $INTERNATIONAL_RATE_DOWNLOAD
#tc class add dev $1 parent 1:1 classid 1:40 htb rate $BG_RATE_DOWNLOAD
#tc filter add dev $1 protocol ip parent 1: prio 1 u32 match ip dst $2 match ip tos 0x80 0xff flowid 1:30
#tc filter add dev $1 protocol ip parent 1: prio 1 u32 match ip dst $2 match ip dscp 0xef 0xff flowid 1:30
#tc filter add dev $1 protocol ip parent 1: prio 1 u32 match ip dst $2 flowid 1:40
#tc filter add dev $1 protocol ip parent 1: prio 1 flowid 1:40
###
/sbin/tc qdisc add dev $1 root handle 1: htb default 60
/sbin/tc class add dev $1 parent 1: classid 1:1 htb rate $TOTAL_RATE
/sbin/tc class add dev $1 parent 1:1 classid 1:30 htb rate $BG_RATE_DOWNLOAD ceil $BG_RATE_DOWNLOAD prio 0
/sbin/tc qdisc add dev $1 parent 1:30 sfq perturb 10
/sbin/tc filter add dev $1 protocol ip parent 1:0 prio 1 u32 match ip tos 0x0 0xff flowid 1:30
/sbin/tc class add dev $1 parent 1:1 classid 1:31 htb rate $INTERNATIONAL_RATE_DOWNLOAD ceil $INTERNATIONAL_RATE_DOWNLOAD prio 0
/sbin/tc qdisc add dev $1 parent 1:31 sfq perturb 10
/sbin/tc filter add dev $1 protocol ip parent 1:0 prio 1 u32 match ip tos 0x0 0xff flowid 1:31
/sbin/tc class add dev $1 parent 1:1 classid 1:32 htb rate $LOCAL_RATE_DOWNLOAD ceil $LOCAL_RATE_DOWNLOAD prio 0
/sbin/tc qdisc add dev $1 parent 1:32 sfq perturb 10
/sbin/tc filter add dev $1 protocol ip parent 1:0 prio 1 u32 match ip tos 0x0 0xff flowid 1:32
### UPLOAD ###
###
#tc qdisc add dev eth1.21 root handle 1: htb
#iptables -t mangle -A FORWARD -s $2 -j MARK --set-mark 0x$m
#tc class add dev eth1.21 parent 1: classid 1:$m htb rate $UPLOAD burst 100k
#tc qdisc add dev eth1.21 parent 1:$m handle $m sfq perturb 10
#tc filter add dev eth1.21 parent 1: protocol ip prio 1 handle 0x$m fw classid 1:$m
###
#tc qdisc add dev $1 handle ffff: ingress
#tc filter add dev $1 parent ffff: protocol ip prio 50 u32 match ip src
0.0.0.0/0 police rate $UPLOAD burst 10k drop flowid :1
#tc qdisc add dev $1 root tbf rate $UPLOAD latency 25ms burst 10k
###
/sbin/tc qdisc add dev $1 handle ffff: ingress
/sbin/tc filter add dev $1 parent ffff: protocol ip prio 7 u32 match ip dst
0.0.0.0/0 police rate $UPLOAD burst 128k drop flowid :1