1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
|
# ingress accepts inner qdisc (plain) ----------------------------------------
tcc -c
ingress {
fifo;
}
EOF
# ingress accepts inner qdisc (with class) -----------------------------------
tcc -c 2>&1
ingress {
class {
fifo;
}
}
EOF
<stdin>:2: warning: class for shared qdisc should be implicit
# ingress suggests unnumbered class for inner qdisc ---------------------------
tcc -c 2>&1
ingress {
class (1) {
fifo;
}
}
EOF
<stdin>:2: warning: suggest unnumbered class for ingress' inner qdisc
<stdin>:2: warning: class for shared qdisc should be implicit
# ingress does not complain about class numbers in other cases ----------------
tcc -c
ingress {
class (1) if raw[0] == 1;
class (2) if raw[0] == 2;
}
EOF
# ingress refuses more than one inner qdisc (plain) ---------------------------
tcc -c 2>&1
ingress {
fifo;
fifo;
}
EOF
ERROR
<stdin>:3: ingress has only one inner qdisc
# ingress refuses more than one inner qdisc (with unnumbered class) -----------
tcc -c 2>&1
ingress {
class {
fifo;
}
class {
fifo;
}
}
EOF
ERROR
<stdin>:6: ingress has only one inner qdisc
# ingress refuses more than one inner qdisc (with numbered class) -------------
tcc -c 2>&1
ingress {
class (1) {
fifo;
}
class (2) {
fifo;
}
}
EOF
ERROR
<stdin>:2: warning: suggest unnumbered class for ingress' inner qdisc
<stdin>:5: warning: suggest unnumbered class for ingress' inner qdisc
<stdin>:6: ingress has only one inner qdisc
# ingress does not auto-assign class numbers ----------------------------------
tcc -c 2>&1
ingress {
class;
class;
}
EOF
ERROR
<stdin>:2: ingress does not auto-assign class numbers
# ingress accepts class selection paths ---------------------------------------
tcc -c
ingress {
class (<$a>) if raw[0] == 1;
class (<$b>) if raw[0] == 1;
prio {
$a = class (1);
$b = class (2);
}
}
EOF
# tc ingress refuses class selection paths ------------------------------------
tcc 2>&1
ingress {
class (<$a>) if raw[0] == 1;
class (<$b>) if raw[0] == 2;
prio {
$a = class (1);
$b = class (2);
}
}
EOF
ERROR
<stdin>:4: tc ingress does not support inner qdisc
# ext ingress accepts class selection paths -----------------------------------
tcc -xif:err -Xx,all 2>&1 | grep -v '^#'
ingress {
class (<$a>) if raw[0] == 1;
class (<$b>) if raw[0] == 2;
prio {
$a = class (1);
$b = class (2);
}
}
EOF
block eth0 ingress
qdisc 1 = prio bands 3
class 1 =
class 2 =
qdisc 65535 = ingress
class 0 = qdisc 1
class 1 =
class 2 =
action 0 = unspec
action 2 = class 65535:2,1:2
action 1 = class 65535:1,1:1
match 0:0:8=0x01 action 1
match 0:0:8=0x02 action 2
match action 0
# ext ingress accepts class selection paths (tcc-ext-echo) --------------------
PATH=$PATH:tcc/ext tcc -xif:echo -Xx,all 2>&1
ingress {
class (<$a>) if raw[0] == 1;
class (<$b>) if raw[0] == 2;
prio {
$a = class (1);
$b = class (2);
}
}
EOF
block eth0 ingress
qdisc 65535 = ingress
class 0 = qdisc 1
class 1 =
class 2 =
qdisc 1 = prio bands 3
class 1 =
class 2 =
action 1 = class 65535:1,1:1
action 2 = class 65535:2,1:2
action 0 = unspec
match 0:0:8=0x1 action 1
match 0:0:8=0x2 action 2
match action 0
# ingress assigns default class number 0 --------------------------------------
tcc -xif:err -Xx,all 2>&1 | grep -v '^#'
ingress {
class if 1;
}
EOF
block eth0 ingress
qdisc 65535 = ingress
class 0 =
action 0 = class 65535:0
match action 0
|