# nocombine: SLB_ok at end ----------------------------------------------------
tcc -xif:err -Xx,nocombine -Xx,all 2>&1 | grep -v '^#'
#include "meters.tc"

prio {
    class if SLB_ok(SLB(cir 10Mbps,cbs 10kB));
}
EOF
bucket 1 = 1250000 0 10240 10240 0
block eth0 egress
qdisc 1 = prio bands 3
class 1 =
action 0 = unspec
action 1 = class 1:1
action 2 = count 1 action 1
action 3 = conform 1 action 2 action 0
match action 3
# nocombine: SLB_ok followed by more rules ------------------------------------
tcc -xif:err -Xx,nocombine -Xx,all 2>&1 | grep -v '^#'
#include "meters.tc"

prio {
    class if SLB_ok(SLB(cir 10Mbps,cbs 10kB));
    class if raw[0] == 1;
}
EOF
bucket 1 = 1250000 0 10240 10240 0
block eth0 egress
qdisc 1 = prio bands 3
class 1 =
class 2 =
action 0 = unspec
action 2 = class 1:2
action 1 = class 1:1
action 3 = count 1 action 1
action 4 = conform 1 action 3 action 0
match action 4
barrier
match 0:0:8=0x01 action 2
match action 0
# nocombine: SLB_else_drop at end ---------------------------------------------
tcc -xif:err -Xx,nocombine -Xx,all 2>&1 | grep -v '^#'
#include "meters.tc"

prio {
    class if SLB_else_drop(SLB(cir 10Mbps,cbs 10kB));
}
EOF
bucket 1 = 1250000 0 10240 10240 0
block eth0 egress
qdisc 1 = prio bands 3
class 1 =
action 0 = drop
action 1 = class 1:1
action 2 = count 1 action 1
action 3 = conform 1 action 2 action 0
match action 3
# nocombine: SLB_else_drop followed by more rules -----------------------------
tcc -xif:err -Xx,nocombine -Xx,all 2>&1 | grep -v '^#'
#include "meters.tc"

prio {
    class if SLB_else_drop(SLB(cir 10Mbps,cbs 10kB));
    class if raw[0] == 1;
}
EOF
bucket 1 = 1250000 0 10240 10240 0
block eth0 egress
qdisc 1 = prio bands 3
class 1 =
class 2 =
action 0 = unspec
action 2 = class 1:2
action 3 = drop
action 1 = class 1:1
action 4 = count 1 action 1
action 5 = conform 1 action 4 action 3
match action 5
barrier
match 0:0:8=0x01 action 2
match action 0
# nocombine: DLB_ok at end ----------------------------------------------------
tcc -xif:err -Xx,nocombine -Xx,all 2>&1 | grep -v '^#'
#include "meters.tc"

prio {
    class if DLB_ok(DLB(cir 10Mbps,cbs 10kB,pir 1Gbps,pbs 2kB));
}
EOF
bucket 1 = 1250000 0 10240 10240 0
bucket 2 = 125000000 0 2048 2048 0
block eth0 egress
qdisc 1 = prio bands 3
class 1 =
action 0 = unspec
action 1 = class 1:1
action 2 = count 2 action 1
action 3 = count 1 action 2
action 4 = conform 2 action 3 action 0
action 5 = conform 1 action 4 action 0
match action 5
# nocombine: DLB_ok followed by more rules ------------------------------------
tcc -xif:err -Xx,nocombine 2>&1 >/dev/null | grep -v '^#'
#include "meters.tc"

prio {
    class if DLB_ok(DLB(cir 10Mbps,cbs 10kB,pir 1Gbps,pbs 2kB));
    class if raw[0] == 1;
}
EOF
block eth0 egress
bucket 1 = 1250000 0 10240 10240 0
bucket 2 = 125000000 0 2048 2048 0
action 0 = unspec
action 2 = class 1:2
action 1 = class 1:1
action 3 = count 2 action 1
action 4 = count 1 action 3
action 5 = conform 2 action 4 action 0
action 6 = conform 1 action 5 action 0
match action 6
barrier
match 0:0:8=0x01 action 2
match action 0
# nocombine: DLB_else_drop followed by more rules -----------------------------
tcc -xif:err -Xx,nocombine -Xx,all 2>&1 | grep -v '^#'
#include "meters.tc"

prio {
    class if raw[0] == 1 &&
      DLB_else_drop(DLB(cir 10Mbps,cbs 10kB,pir 1Gbps,pbs 2kB));
    class if raw[0] == 2;
}
EOF
bucket 1 = 1250000 0 10240 10240 0
bucket 2 = 125000000 0 2048 2048 0
block eth0 egress
qdisc 1 = prio bands 3
class 1 =
class 2 =
action 2 = class 1:2
action 0 = unspec
action 3 = drop
action 1 = class 1:1
action 4 = count 2 action 1
action 5 = count 1 action 4
action 6 = conform 2 action 5 action 3
action 7 = conform 1 action 6 action 3
match 0:0:8=0x01 action 7
match action 0
barrier
match 0:0:8=0x02 action 2
match action 0
# nocombine: srTCM using srTCM_* ----------------------------------------------
tcc -xif:err -Xx,nocombine 2>&1 >/dev/null | grep -v '^#'
#include "meters.tc"

$p = srTCM(cir 10Mbps,cbs 10kB,ebs 10kB);
prio {
    class if raw[0] == 1 && srTCM_green($p);
    class if raw[0] == 1 && srTCM_yellow($p);
    class if raw[0] == 1 && srTCM_red($p);
}
EOF
block eth0 egress
bucket 1 = 0 0 10240 10240 0
bucket 2 = 1250000 0 10240 10240 1
action 3 = class 1:3
action 0 = unspec
action 4 = conform 1 action 0 action 3
action 5 = conform 2 action 0 action 4
action 2 = class 1:2
action 6 = count 1 action 2
action 7 = conform 1 action 6 action 0
action 8 = conform 2 action 0 action 7
action 1 = class 1:1
action 9 = count 2 action 1
action 10 = conform 2 action 9 action 0
match 0:0:8=0x01 action 10
match action 0
barrier
match 0:0:8=0x01 action 8
match action 0
barrier
match 0:0:8=0x01 action 5
match action 0
# nocombine: srTCM using __srTCM_* --------------------------------------------
tcc -xif:err -Xx,nocombine 2>&1 >/dev/null | grep -v '^#'
#include "meters.tc"

$p = srTCM(cir 10Mbps,cbs 10kB,ebs 10kB);
prio {
    class if raw[0] == 1 && __srTCM_green($p);
    class if raw[0] == 1 && __srTCM_yellow($p);
    class if raw[0] == 1 && __srTCM_red($p);
}
EOF
block eth0 egress
bucket 1 = 0 0 10240 10240 0
bucket 2 = 1250000 0 10240 10240 1
action 3 = class 1:3
action 0 = unspec
action 2 = class 1:2
action 4 = count 1 action 2
action 5 = conform 1 action 4 action 0
action 1 = class 1:1
action 6 = count 2 action 1
action 7 = conform 2 action 6 action 0
match 0:0:8=0x01 action 7
match action 0
barrier
match 0:0:8=0x01 action 5
match action 0
barrier
match 0:0:8=0x01 action 3
match action 0
# nocombine: trTCM using trTCM_* ----------------------------------------------
tcc -xif:err -Xx,nocombine 2>&1 >/dev/null | grep -v '^#'
#include "meters.tc"

$p = trTCM(cir 10Mbps,cbs 10kB,pir 100Mbps,pbs 10kB);
prio {
    class if raw[0] == 1 && trTCM_green($p);
    class if raw[0] == 1 && trTCM_yellow($p);
    class if raw[0] == 1 && trTCM_red($p);
}
EOF
block eth0 egress
bucket 1 = 1250000 0 10240 10240 0
bucket 2 = 12500000 0 10240 10240 0
action 3 = class 1:3
action 0 = unspec
action 4 = conform 2 action 0 action 3
action 2 = class 1:2
action 5 = count 2 action 2
action 6 = conform 2 action 5 action 0
action 7 = conform 1 action 0 action 6
action 1 = class 1:1
action 8 = count 2 action 1
action 9 = count 1 action 8
action 10 = conform 2 action 9 action 0
action 11 = conform 1 action 10 action 0
match 0:0:8=0x01 action 11
match action 0
barrier
match 0:0:8=0x01 action 7
match action 0
barrier
match 0:0:8=0x01 action 4
match action 0
# nocombine: trTCM using __trTCM_* --------------------------------------------
tcc -xif:err -Xx,nocombine 2>&1 >/dev/null | grep -v '^#'
#include "meters.tc"

$p = trTCM(cir 10Mbps,cbs 10kB,pir 10Mbps,pbs 10kB);
prio {
    class if raw[0] == 1 && __trTCM_green($p);
    class if raw[0] == 1 && __trTCM_yellow($p);
    class if raw[0] == 1 && __trTCM_red($p);
}
EOF
block eth0 egress
bucket 1 = 1250000 0 10240 10240 0
bucket 2 = 1250000 0 10240 10240 0
action 3 = class 1:3
action 0 = unspec
action 2 = class 1:2
action 4 = count 2 action 2
action 5 = conform 2 action 4 action 0
action 1 = class 1:1
action 6 = count 2 action 1
action 7 = count 1 action 6
action 8 = conform 2 action 7 action 0
action 9 = conform 1 action 8 action 0
match 0:0:8=0x01 action 9
match action 0
barrier
match 0:0:8=0x01 action 5
match action 0
barrier
match 0:0:8=0x01 action 3
match action 0
# nocombine: shared SLB with class selection paths ----------------------------
tcc -xif:err -Xx,nocombine -Xx,all 2>&1 | grep -v '#'
#include "meters.tc"

$p = SLB(cir 10kbps,cbs 1kB);
dsmark (default_index 0) {
    class (<$c1>) if raw[0] == 1 && SLB_else_drop($p);
    class (<$c2>) if raw[0] == 2 && SLB_else_drop($p);
    drop if 1;
    prio {
        $c1 = class;
        $c2 = class;
    }
}
EOF
bucket 1 = 1250 0 1024 1024 0
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 = count 1 action 2
action 4 = conform 1 action 3 action 0
action 5 = unspec
action 1 = class 1:1,2:1
action 6 = count 1 action 1
action 7 = conform 1 action 6 action 0
match 0:0:8=0x01 action 7
match action 5
barrier
match 0:0:8=0x02 action 4
match action 5
barrier
match action 0
# nocombine: two SLBs with class selection paths ------------------------------
tcc -xif:err -Xx,nocombine -Xx,all 2>&1 | grep -v '#'
#include "meters.tc"

dsmark (default_index 0) {
    class (<$c1>) if raw[0] == 1 && SLB_else_drop(SLB(cir 10kbps,cbs 1kB));
    class (<$c2>) if raw[0] == 2 && SLB_else_drop(SLB(cir 20kbps,cbs 2kB));
    drop if 1;
    prio {
        $c1 = class;
        $c2 = class;
    }
}
EOF
bucket 1 = 1250 0 1024 1024 0
bucket 2 = 2500 0 2048 2048 0
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 = count 2 action 2
action 4 = conform 2 action 3 action 0
action 5 = unspec
action 1 = class 1:1,2:1
action 6 = count 1 action 1
action 7 = conform 1 action 6 action 0
match 0:0:8=0x01 action 7
match action 5
barrier
match 0:0:8=0x02 action 4
match action 5
barrier
match action 0
