xref: /aosp_15_r20/external/iproute2/testsuite/tests/tc/cls-testbed.t (revision de1e4e894b0c224df933550f0afdecc354b238c4)
1*de1e4e89SAndroid Build Coastguard Worker#!/bin/bash
2*de1e4e89SAndroid Build Coastguard Worker# vim: ft=sh
3*de1e4e89SAndroid Build Coastguard Worker
4*de1e4e89SAndroid Build Coastguard Worker. lib/generic.sh
5*de1e4e89SAndroid Build Coastguard Worker
6*de1e4e89SAndroid Build Coastguard WorkerQDISCS="cbq htb dsmark"
7*de1e4e89SAndroid Build Coastguard Worker
8*de1e4e89SAndroid Build Coastguard Workerif [ ! -d tests/cls ]; then
9*de1e4e89SAndroid Build Coastguard Worker    ts_log "tests/cls folder does not exist"
10*de1e4e89SAndroid Build Coastguard Worker    ts_skip
11*de1e4e89SAndroid Build Coastguard Workerfi
12*de1e4e89SAndroid Build Coastguard Worker
13*de1e4e89SAndroid Build Coastguard Workerfor q in ${QDISCS}; do
14*de1e4e89SAndroid Build Coastguard Worker	ts_log "Preparing classifier testbed with qdisc $q"
15*de1e4e89SAndroid Build Coastguard Worker
16*de1e4e89SAndroid Build Coastguard Worker	for c in tests/cls/*.c; do
17*de1e4e89SAndroid Build Coastguard Worker
18*de1e4e89SAndroid Build Coastguard Worker		case "$q" in
19*de1e4e89SAndroid Build Coastguard Worker		cbq)
20*de1e4e89SAndroid Build Coastguard Worker			ts_tc "cls-testbed" "cbq root qdisc creation" \
21*de1e4e89SAndroid Build Coastguard Worker				qdisc add dev $DEV root handle 10:0 \
22*de1e4e89SAndroid Build Coastguard Worker				cbq bandwidth 100Mbit avpkt 1400 mpu 64
23*de1e4e89SAndroid Build Coastguard Worker			ts_tc "cls-testbed" "cbq root class creation" \
24*de1e4e89SAndroid Build Coastguard Worker				class add dev $DEV parent 10:0  classid 10:12 \
25*de1e4e89SAndroid Build Coastguard Worker				cbq bandwidth 100mbit rate 100mbit allot 1514 prio 3 \
26*de1e4e89SAndroid Build Coastguard Worker				maxburst 1 avpkt  500 bounded
27*de1e4e89SAndroid Build Coastguard Worker			;;
28*de1e4e89SAndroid Build Coastguard Worker		htb)
29*de1e4e89SAndroid Build Coastguard Worker			ts_qdisc_available "htb"
30*de1e4e89SAndroid Build Coastguard Worker			if [ $? -eq 0 ]; then
31*de1e4e89SAndroid Build Coastguard Worker				ts_log "cls-testbed: HTB is unsupported by $TC, skipping"
32*de1e4e89SAndroid Build Coastguard Worker				continue;
33*de1e4e89SAndroid Build Coastguard Worker			fi
34*de1e4e89SAndroid Build Coastguard Worker			ts_tc "cls-testbed" "htb root qdisc creation" \
35*de1e4e89SAndroid Build Coastguard Worker				qdisc add dev $DEV root handle 10:0 htb
36*de1e4e89SAndroid Build Coastguard Worker			ts_tc "cls-testbed" "htb root class creation" \
37*de1e4e89SAndroid Build Coastguard Worker				class add dev $DEV parent 10:0 classid 10:12 \
38*de1e4e89SAndroid Build Coastguard Worker				htb rate 100Mbit quantum 1514
39*de1e4e89SAndroid Build Coastguard Worker			;;
40*de1e4e89SAndroid Build Coastguard Worker		dsmark)
41*de1e4e89SAndroid Build Coastguard Worker			ts_qdisc_available "dsmark"
42*de1e4e89SAndroid Build Coastguard Worker			if [ $? -eq 0 ]; then
43*de1e4e89SAndroid Build Coastguard Worker				ts_log "cls-testbed: dsmark is unsupported by $TC, skipping"
44*de1e4e89SAndroid Build Coastguard Worker				continue;
45*de1e4e89SAndroid Build Coastguard Worker			fi
46*de1e4e89SAndroid Build Coastguard Worker			ts_tc "cls-testbed" "dsmark root qdisc creation" \
47*de1e4e89SAndroid Build Coastguard Worker				qdisc add dev $DEV root handle 20:0 \
48*de1e4e89SAndroid Build Coastguard Worker				dsmark indices 64 default_index 1 set_tc_index
49*de1e4e89SAndroid Build Coastguard Worker			ts_tc "cls-testbed" "dsmark class creation" \
50*de1e4e89SAndroid Build Coastguard Worker				class change dev $DEV parent 20:0 classid 20:12 \
51*de1e4e89SAndroid Build Coastguard Worker				dsmark mask 0xff value 2
52*de1e4e89SAndroid Build Coastguard Worker			ts_tc "cls-testbed" "prio inner qdisc creation" \
53*de1e4e89SAndroid Build Coastguard Worker				qdisc add dev $DEV parent 20:0 handle 10:0 prio
54*de1e4e89SAndroid Build Coastguard Worker			;;
55*de1e4e89SAndroid Build Coastguard Worker		*)
56*de1e4e89SAndroid Build Coastguard Worker			ts_err "cls-testbed: no testbed configuration found for qdisc $q"
57*de1e4e89SAndroid Build Coastguard Worker			continue
58*de1e4e89SAndroid Build Coastguard Worker			;;
59*de1e4e89SAndroid Build Coastguard Worker		esac
60*de1e4e89SAndroid Build Coastguard Worker
61*de1e4e89SAndroid Build Coastguard Worker		ts_tc "cls-testbed" "tree listing" qdisc list dev eth0
62*de1e4e89SAndroid Build Coastguard Worker		ts_tc "cls-testbed" "tree class listing" class list dev eth0
63*de1e4e89SAndroid Build Coastguard Worker		ts_log "cls-testbed: starting classifier test $c"
64*de1e4e89SAndroid Build Coastguard Worker		$c
65*de1e4e89SAndroid Build Coastguard Worker
66*de1e4e89SAndroid Build Coastguard Worker		case "$q" in
67*de1e4e89SAndroid Build Coastguard Worker		*)
68*de1e4e89SAndroid Build Coastguard Worker			ts_tc "cls-testbed" "generic qdisc tree deletion" \
69*de1e4e89SAndroid Build Coastguard Worker				qdisc del dev $DEV root
70*de1e4e89SAndroid Build Coastguard Worker			;;
71*de1e4e89SAndroid Build Coastguard Worker		esac
72*de1e4e89SAndroid Build Coastguard Worker	done
73*de1e4e89SAndroid Build Coastguard Workerdone
74