# nocombine: two distinct classes, without default ----------------------------
tcc -xif:err -Xx,nocombine -Xx,all 2>&1 | grep -v '#'
prio {
    class if raw[0] == 1;
    class if raw[0] == 2;
}
EOF
block eth0 egress
qdisc 1 = prio bands 3
class 1 =
class 2 =
action 2 = class 1:2
action 0 = unspec
action 1 = class 1:1
match 0:0:8=0x01 action 1
match action 0
barrier
match 0:0:8=0x02 action 2
match action 0
# nocombine: two distinct classes, with default -------------------------------
tcc -xif:err -Xx,nocombine -Xx,nounspec -Xx,all 2>&1 | grep -v '#'
prio {
    class if raw[0] == 1;
    class if raw[0] == 2;
}
EOF
block eth0 egress
qdisc 1 = prio bands 3
class 1 =
class 2 =
class 3 =
action 3 = class 1:3
action 2 = class 1:2
action 0 = unspec
action 1 = class 1:1
match 0:0:8=0x01 action 1
match action 0
barrier
match 0:0:8=0x02 action 2
match action 0
barrier
match 0:11:4=0x0 action 2
match 0:11:4=0x1 action 3
match 0:11:4=0x2 action 2
match 0:11:4=0x3 action 2
match 0:11:4=0x4 action 3
match 0:11:4=0x5 action 3
match 0:11:4=0x6 action 3
match 0:11:4=0x7 action 3
match 0:11:4=0x8 action 1
match 0:11:4=0x9 action 1
match 0:11:4=0xA action 1
match 0:11:4=0xB action 1
match 0:11:4=0xC action 2
match 0:11:4=0xD action 2
match 0:11:4=0xE action 2
match action 2
# nocombine: two classes, self-contained --------------------------------------
tcc -xif:err -Xx,nocombine 2>&1 >/dev/null | grep -v '#'
prio {
    class if raw[0] == 1;
    class if 1;
}
EOF
block eth0 egress
action 2 = class 1:2
action 0 = unspec
action 1 = class 1:1
match 0:0:8=0x01 action 1
match action 0
barrier
match action 2
# nocombine: class, then drop -------------------------------------------------
tcc -xif:err -Xx,nocombine -Xx,all 2>&1 | grep -v '#'
prio {
    class if raw[0] == 1;
    drop if raw[0] == 2;
}
EOF
block eth0 egress
qdisc 1 = prio bands 3
class 1 =
action 0 = drop
action 2 = unspec
action 1 = class 1:1
match 0:0:8=0x01 action 1
match action 2
barrier
match 0:0:8=0x02 action 0
match action 2
# nocombine: class, then drop, self-contained ---------------------------------
tcc -xif:err -Xx,nocombine -Xx,all 2>&1 | grep -v '#'
prio {
    class if raw[0] == 1;
    drop if 1;
}
EOF
block eth0 egress
qdisc 1 = prio bands 3
class 1 =
action 0 = drop
action 2 = unspec
action 1 = class 1:1
match 0:0:8=0x01 action 1
match action 2
barrier
match action 0
# nocombine: drop, then class -------------------------------------------------
tcc -xif:err -Xx,nocombine 2>&1 >/dev/null | grep -v '#'
prio {
    drop if raw[0] == 1;
    class if raw[0] == 2;
}
EOF
block eth0 egress
action 1 = class 1:1
action 0 = unspec
action 2 = drop
match 0:0:8=0x01 action 2
match action 0
barrier
match 0:0:8=0x02 action 1
match action 0
# nocombine: drop, then class, self-contained ---------------------------------
tcc -xif:err -Xx,nocombine 2>&1 >/dev/null | grep -v '#'
prio {
    drop if raw[0] == 1;
    class if 1;
}
EOF
block eth0 egress
action 1 = class 1:1
action 0 = unspec
action 2 = drop
match 0:0:8=0x01 action 2
match action 0
barrier
match action 1
# nocombine: negation ---------------------------------------------------------
tcc -xif:err -Xx,nocombine -Xx,all 2>&1 >/dev/null | grep -v '#'
prio {
    drop if raw[0];
    class if 1;
}
EOF
block eth0 egress
qdisc 1 = prio bands 3
class 1 =
action 1 = class 1:1
action 0 = drop
action 2 = unspec
match 0:0:8=0x00 action 2
match action 0
barrier
match action 1
# nocombine: with class selection paths ---------------------------------------
tcc -xif:err -Xx,nocombine -Xx,all 2>&1 | grep -v '#'
dsmark (default_index 0) {
    class (<$c1>) if raw[0] == 1;
    class (<$c2>) if raw[0] == 2;
    drop if 1;
    prio {
	$c1 = class;
	$c2 = class;
    }
}
EOF
block eth0 egress
qdisc 2 = prio bands 3
class 1 =
class 2 =
qdisc 1 = dsmark default_index 0 indices 4
class 0 = qdisc 2
class 1 =
class 2 =
action 0 = drop
action 2 = class 1:2,2:2
action 3 = unspec
action 1 = class 1:1,2:1
match 0:0:8=0x01 action 1
match action 3
barrier
match 0:0:8=0x02 action 2
match action 3
barrier
match action 0
# nocombine: with class selection paths and nounspec (can't work) -------------
tcc -xif:err -Xx,nocombine -Xx,nounspec -Xx,all 2>&1
dsmark (default_index 0) {
    class (<$c1>) if raw[0] == 1;
    class (<$c2>) if raw[0] == 2;
    drop if 1;
    prio {
	$c1 = class;
	$c2 = class;
    }
}
EOF
ERROR
<stdin>:5: dump_all found no matching choice for value 0x0 in tcindex
