#!/bin/bash # daelstorm's tc script for dsl limiting # props to Xero, who figured all this out and wrote the original script DEV="ppp0" # "eth0" "eth1" #dsl case $1 in start) tc qdisc add dev $DEV root handle 1: htb tc class add dev $DEV parent 1: classid 1:1 htb rate 80Kbit # unlimited tc class add dev $DEV parent 1:1 classid 1:10 htb rate 100Kbit tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10 tc class add dev $DEV parent 1:1 classid 1:17 htb rate 10Kbit ceil 70Kbit # limited 1 tc qdisc add dev $DEV parent 1:17 handle 17: sfq perturb 10 tc class add dev $DEV parent 1:1 classid 1:555 htb rate 90Kbit # limited 2 tc qdisc add dev $DEV parent 1:555 handle 555: sfq perturb 10 tc class add dev $DEV parent 1:1 classid 1:666 htb rate 95Kbit # limited 3 tc qdisc add dev $DEV parent 1:666 handle 666: sfq perturb 10 # Soulseek iptables -t mangle -A POSTROUTING -p tcp --sport 2234:2259 -j CLASSIFY --set-class 1:17 iptables -t mangle -A POSTROUTING -p tcp --dport 2234:2259 -j CLASSIFY --set-class 1:17 # Bittorrent iptables -t mangle -A POSTROUTING -p tcp --sport 6885:6900 -j CLASSIFY --set-class 1:17 # FTP iptables -t mangle -A POSTROUTING -p tcp --dport 20:21 -j CLASSIFY --set-class 1:666 ;; stop) tc qdisc del dev $DEV root 2> /dev/null > /dev/null iptables -F -t mangle iptables -X -t mangle ;; restart) $0 stop $0 start ;; status) echo "[iptables - $DEV]" iptables -t mangle -L echo "[qdisc - $DEV]" tc -s qdisc show dev $DEV echo "------------------------" echo echo "[class - $DEV]" tc -s class show dev $DEV ;; esac