Add sqm-scripts* back to base
[librecmc/librecmc.git] / package / network / config / sqm-scripts-extra / src / test_triple_isolated_llt_cake.qos
1 #!/bin/sh
2 ################################################################################
3 # test_triple_isolated_llt_cake.qos
4 # One bin cake shaper for ethernet gateways 
5 # using cake qdisc with triple-isolate and diffserv-llt (Latency-Loss-Tradeoff)
6 #
7 ################################################################################
8 #
9 # This program is free software; you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License version 2 as
11 # published by the Free Software Foundation.
12 #
13 #  Copyright (C) 2012-2016
14 #    Michael D. Taht, Toke Høiland-Jørgensen, Sebastian Moeller
15 #
16 ################################################################################
17
18 . ${SQM_LIB_DIR}/defaults.sh
19
20 ################################################################################
21
22
23 # this will only work with cake as qdisc...
24 QDISC=cake
25
26
27 # to keep this as simple as possible we ignore the *_CAKE_OPTS from defaults.sh
28 INGRESS_CAKE_OPTS="diffserv-llt triple-isolate"
29 EGRESS_CAKE_OPTS="diffserv-llt triple-isolate"
30
31
32 egress() {
33     sqm_debug "egress"
34     $TC qdisc del dev $IFACE root 2>/dev/null
35     $TC qdisc add dev $IFACE root $( get_stab_string ) cake bandwidth ${UPLINK}kbit $( get_cake_lla_string ) ${EGRESS_CAKE_OPTS} ${EQDISC_OPTS}
36 }
37
38
39 ingress() {
40     sqm_debug "ingress"
41     $TC qdisc del dev $IFACE handle ffff: ingress 2>/dev/null
42     $TC qdisc add dev $IFACE handle ffff: ingress
43     $TC qdisc del dev $DEV root 2>/dev/null
44     $TC qdisc add dev $DEV root $( get_stab_string ) cake bandwidth ${DOWNLINK}kbit $( get_cake_lla_string ) ${INGRESS_CAKE_OPTS} ${IQDISC_OPTS}
45
46     $IP link set dev $DEV up
47
48     # redirect all IP packets arriving in $IFACE to ifb0
49
50     $TC filter add dev $IFACE parent ffff: protocol all prio 10 u32 \
51         match u32 0 0 flowid 1:1 action mirred egress redirect dev $DEV
52 }
53
54 sqm_start() {
55     [ -n "$IFACE" ] || return 1
56     do_modules
57     verify_qdisc $QDISC "cake" || return 1
58     sqm_debug "Starting ${SCRIPT}"
59
60     [ -z "$DEV" ] && DEV=$( get_ifb_for_if ${IFACE} )
61
62
63     if [ "${UPLINK}" -ne 0 ];
64     then
65         egress
66         sqm_debug "egress shaping activated"
67     else
68         sqm_debug "egress shaping deactivated"
69         $TC qdisc del dev ${IFACE} root 2> /dev/null
70     fi
71     if [ "${DOWNLINK}" -ne 0 ];
72     then
73         verify_qdisc ingress "ingress" || return 1
74         ingress
75         sqm_debug "ingress shaping activated"
76     else
77         sqm_debug "ingress shaping deactivated"
78         $TC qdisc del dev ${DEV} root 2> /dev/null
79         $TC qdisc del dev ${IFACE} ingress 2> /dev/null
80     fi
81     return 0
82 }