aboutsummaryrefslogtreecommitdiffstats
path: root/src/fshaper/fshaper.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/fshaper/fshaper.sh')
-rwxr-xr-xsrc/fshaper/fshaper.sh69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/fshaper/fshaper.sh b/src/fshaper/fshaper.sh
new file mode 100755
index 000000000..4045fd5a4
--- /dev/null
+++ b/src/fshaper/fshaper.sh
@@ -0,0 +1,69 @@
1#!/bin/bash
2
3usage() {
4 echo "Usage:"
5 echo " fshaper.sh --status"
6 echo " fshaper.sh --clear device"
7 echo " fshaper.sh --set device download-speed upload-speed"
8}
9
10if [ "$1" = "--status" ]; then
11 /sbin/tc -s qdisc ls
12 /sbin/tc -s class ls
13 exit
14fi
15
16if [ "$1" = "--clear" ]; then
17 if [ $# -ne 2 ]; then
18 echo "Error: invalid command"
19 usage
20 exit
21 fi
22
23 DEV=$2
24 echo "Removing bandwith limits"
25 /sbin/tc qdisc del dev $DEV root 2> /dev/null > /dev/null
26 /sbin/tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null
27 exit
28
29fi
30
31if [ "$1" = "--set" ]; then
32 DEV=$2
33 echo "Removing bandwith limit"
34 /sbin/tc qdisc del dev $DEV ingress #2> /dev/null > /dev/null
35
36 if [ $# -ne 4 ]; then
37 echo "Error: missing parameters"
38 usage
39 exit
40 fi
41
42 DEV=$2
43 echo "Configuring interface $DEV "
44
45 IN=$3
46 IN=$((${IN} * 8))
47 echo "Download speed ${IN}kbps"
48
49 OUT=$4
50 OUT=$((${OUT} * 8))
51 echo "Upload speed ${OUT}kbps"
52
53 echo "cleaning limits"
54 /sbin/tc qdisc del dev $DEV root 2> /dev/null > /dev/null
55 /sbin/tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null
56
57 echo "configuring tc ingress"
58 /sbin/tc qdisc add dev $DEV handle ffff: ingress #2> /dev/null > /dev/null
59 /sbin/tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src \
60 0.0.0.0/0 police rate ${IN}kbit burst 10k drop flowid :1 #2> /dev/null > /dev/null
61
62 echo "configuring tc egress"
63 /sbin/tc qdisc add dev $DEV root tbf rate ${OUT}kbit latency 25ms burst 10k #2> /dev/null > /dev/null
64 exit
65fi
66
67echo "Error: missing parameters"
68usage
69exit 1