You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
1.9 KiB

#!/bin/bash
# vim: ft=sh
. lib/generic.sh
QDISCS="cbq htb dsmark"
if [ ! -d tests/cls ]; then
ts_log "tests/cls folder does not exist"
ts_skip
fi
for q in ${QDISCS}; do
ts_log "Preparing classifier testbed with qdisc $q"
for c in tests/cls/*.c; do
case "$q" in
cbq)
ts_tc "cls-testbed" "cbq root qdisc creation" \
qdisc add dev $DEV root handle 10:0 \
cbq bandwidth 100Mbit avpkt 1400 mpu 64
ts_tc "cls-testbed" "cbq root class creation" \
class add dev $DEV parent 10:0 classid 10:12 \
cbq bandwidth 100mbit rate 100mbit allot 1514 prio 3 \
maxburst 1 avpkt 500 bounded
;;
htb)
ts_qdisc_available "htb"
if [ $? -eq 0 ]; then
ts_log "cls-testbed: HTB is unsupported by $TC, skipping"
continue;
fi
ts_tc "cls-testbed" "htb root qdisc creation" \
qdisc add dev $DEV root handle 10:0 htb
ts_tc "cls-testbed" "htb root class creation" \
class add dev $DEV parent 10:0 classid 10:12 \
htb rate 100Mbit quantum 1514
;;
dsmark)
ts_qdisc_available "dsmark"
if [ $? -eq 0 ]; then
ts_log "cls-testbed: dsmark is unsupported by $TC, skipping"
continue;
fi
ts_tc "cls-testbed" "dsmark root qdisc creation" \
qdisc add dev $DEV root handle 20:0 \
dsmark indices 64 default_index 1 set_tc_index
ts_tc "cls-testbed" "dsmark class creation" \
class change dev $DEV parent 20:0 classid 20:12 \
dsmark mask 0xff value 2
ts_tc "cls-testbed" "prio inner qdisc creation" \
qdisc add dev $DEV parent 20:0 handle 10:0 prio
;;
*)
ts_err "cls-testbed: no testbed configuration found for qdisc $q"
continue
;;
esac
ts_tc "cls-testbed" "tree listing" qdisc list dev eth0
ts_tc "cls-testbed" "tree class listing" class list dev eth0
ts_log "cls-testbed: starting classifier test $c"
$c
case "$q" in
*)
ts_tc "cls-testbed" "generic qdisc tree deletion" \
qdisc del dev $DEV root
;;
esac
done
done