#upload root tc qdisc add dev $DOUT root handle 1: htb default 10000 r2q 1 tc class add dev $DOUT parent 1: classid 1:2 htb rate ${UPLINK}Kbit burst 15k #download root tc qdisc add dev $DINT root handle 1: htb default 10000 r2q 1 tc class add dev $DINT parent 1: classid 1:2 htb rate ${DOWNLINK}Kbit burst 15k tc qdisc add dev $DINT2 root handle 1: htb default 10000 r2q 1 tc class add dev $DINT2 parent 1: classid 1:2 htb rate ${DOWNLINK}Kbit burst 15k while IFS=* read ip down_limit up_limit lt_down_limit lt_up_limit comment do mark_val=$(($mark_val+1)); klase="1:1$mark_val" IP_DOWN=$down_limit IP_UP=$up_limit LT_DOWN=$lt_down_limit LT_UP=$lt_up_limit MAXD=$DOWNLINK tc class add dev $DINT parent 1:2 classid $klase htb rate ${IP_DOWN}kbit ceil ${IP_DOWN}kbit prio 2 tc filter add dev $DINT parent 1:0 protocol ip u32 match ip dst $ip classid $klase tc class add dev $DINT2 parent 1:2 classid $klase htb rate ${IP_DOWN}kbit ceil ${IP_DOWN}kbit prio 2 tc filter add dev $DINT2 parent 1:0 protocol ip u32 match ip dst $ip classid $klase tc class add dev $DOUT parent 1:2 classid $klase htb rate ${IP_UP}kbit ceil ${IP_UP}kbit prio 2 tc filter add dev $DOUT parent 1:0 prio 0 protocol ip handle $mark_val fw classid $klase tc filter add dev $DOUT protocol ip parent 1:0 prio 0 u32 match ip src $ip classid $klase iptables -t mangle -A POSTROUTING -s $ip -j MARK --set-mark $mark_val done <$IP_LIST