[ { "id": "0582", "name": "Create QFQ with default setting", "category": [ "qdisc", "qfq" ], "plugins": { "requires": "nsPlugin" }, "setup": [ "$IP link add dev $DUMMY type dummy || /bin/true" ], "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root qfq", "expExitCode": "0", "verifyCmd": "$TC qdisc show dev $DUMMY", "matchPattern": "qdisc qfq 1: root refcnt [0-9]+", "matchCount": "1", "teardown": [ "$TC qdisc del dev $DUMMY handle 1: root", "$IP link del dev $DUMMY type dummy" ] }, { "id": "c9a3", "name": "Create QFQ with class weight setting", "category": [ "qdisc", "qfq" ], "plugins": { "requires": "nsPlugin" }, "setup": [ "$IP link add dev $DUMMY type dummy || /bin/true", "$TC qdisc add dev $DUMMY handle 1: root qfq" ], "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100", "expExitCode": "0", "verifyCmd": "$TC class show dev $DUMMY", "matchPattern": "class qfq 1:1 root weight 100 maxpkt", "matchCount": "1", "teardown": [ "$TC qdisc del dev $DUMMY handle 1: root", "$IP link del dev $DUMMY type dummy" ] }, { "id": "d364", "name": "Test QFQ with max class weight setting", "category": [ "qdisc", "qfq" ], "plugins": { "requires": "nsPlugin" }, "setup": [ "$IP link add dev $DUMMY type dummy || /bin/true", "$TC qdisc add dev $DUMMY handle 1: root qfq" ], "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 9999", "expExitCode": "2", "verifyCmd": "$TC class show dev $DUMMY", "matchPattern": "class qfq 1:1 root weight 9999 maxpkt", "matchCount": "0", "teardown": [ "$TC qdisc del dev $DUMMY handle 1: root", "$IP link del dev $DUMMY type dummy" ] }, { "id": "8452", "name": "Create QFQ with class maxpkt setting", "category": [ "qdisc", "qfq" ], "plugins": { "requires": "nsPlugin" }, "setup": [ "$IP link add dev $DUMMY type dummy || /bin/true", "$TC qdisc add dev $DUMMY handle 1: root qfq" ], "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq maxpkt 2000", "expExitCode": "0", "verifyCmd": "$TC class show dev $DUMMY", "matchPattern": "class qfq 1:1 root weight 1 maxpkt 2000", "matchCount": "1", "teardown": [ "$TC qdisc del dev $DUMMY handle 1: root", "$IP link del dev $DUMMY type dummy" ] }, { "id": "22df", "name": "Test QFQ class maxpkt setting lower bound", "category": [ "qdisc", "qfq" ], "plugins": { "requires": "nsPlugin" }, "setup": [ "$IP link add dev $DUMMY type dummy || /bin/true", "$TC qdisc add dev $DUMMY handle 1: root qfq" ], "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq maxpkt 128", "expExitCode": "2", "verifyCmd": "$TC class show dev $DUMMY", "matchPattern": "class qfq 1:1 root weight 1 maxpkt 128", "matchCount": "0", "teardown": [ "$TC qdisc del dev $DUMMY handle 1: root", "$IP link del dev $DUMMY type dummy" ] }, { "id": "92ee", "name": "Test QFQ class maxpkt setting upper bound", "category": [ "qdisc", "qfq" ], "plugins": { "requires": "nsPlugin" }, "setup": [ "$IP link add dev $DUMMY type dummy || /bin/true", "$TC qdisc add dev $DUMMY handle 1: root qfq" ], "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq maxpkt 99999", "expExitCode": "2", "verifyCmd": "$TC class show dev $DUMMY", "matchPattern": "class qfq 1:1 root weight 1 maxpkt 99999", "matchCount": "0", "teardown": [ "$TC qdisc del dev $DUMMY handle 1: root", "$IP link del dev $DUMMY type dummy" ] }, { "id": "d920", "name": "Create QFQ with multiple class setting", "category": [ "qdisc", "qfq" ], "plugins": { "requires": "nsPlugin" }, "setup": [ "$IP link add dev $DUMMY type dummy || /bin/true", "$TC qdisc add dev $DUMMY handle 1: root qfq", "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100" ], "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:2 qfq weight 200", "expExitCode": "0", "verifyCmd": "$TC class show dev $DUMMY", "matchPattern": "class qfq 1:[0-9]+ root weight [0-9]+00 maxpkt", "matchCount": "2", "teardown": [ "$TC qdisc del dev $DUMMY handle 1: root", "$IP link del dev $DUMMY type dummy" ] }, { "id": "0548", "name": "Delete QFQ with handle", "category": [ "qdisc", "qfq" ], "plugins": { "requires": "nsPlugin" }, "setup": [ "$IP link add dev $DUMMY type dummy || /bin/true", "$TC qdisc add dev $DUMMY handle 1: root qfq", "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100" ], "cmdUnderTest": "$TC qdisc del dev $DUMMY handle 1: root", "expExitCode": "0", "verifyCmd": "$TC class show dev $DUMMY", "matchPattern": "qdisc qfq 1: root refcnt [0-9]+", "matchCount": "0", "teardown": [ "$IP link del dev $DUMMY type dummy" ] }, { "id": "5901", "name": "Show QFQ class", "category": [ "qdisc", "qfq" ], "plugins": { "requires": "nsPlugin" }, "setup": [ "$IP link add dev $DUMMY type dummy || /bin/true" ], "cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root qfq", "expExitCode": "0", "verifyCmd": "$TC class show dev $DUMMY", "matchPattern": "class qfq 1:", "matchCount": "0", "teardown": [ "$TC qdisc del dev $DUMMY handle 1: root", "$IP link del dev $DUMMY type dummy" ] }, { "id": "85ee", "name": "QFQ with big MTU", "category": [ "qdisc", "qfq" ], "plugins": { "requires": "nsPlugin" }, "setup": [ "$IP link add dev $DUMMY type dummy || /bin/true", "$IP link set dev $DUMMY mtu 2147483647 || /bin/true", "$TC qdisc add dev $DUMMY handle 1: root qfq" ], "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100", "expExitCode": "2", "verifyCmd": "$TC class show dev $DUMMY", "matchPattern": "class qfq 1:", "matchCount": "0", "teardown": [ "$IP link del dev $DUMMY type dummy" ] }, { "id": "ddfa", "name": "QFQ with small MTU", "category": [ "qdisc", "qfq" ], "plugins": { "requires": "nsPlugin" }, "setup": [ "$IP link add dev $DUMMY type dummy || /bin/true", "$IP link set dev $DUMMY mtu 256 || /bin/true", "$TC qdisc add dev $DUMMY handle 1: root qfq" ], "cmdUnderTest": "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100", "expExitCode": "2", "verifyCmd": "$TC class show dev $DUMMY", "matchPattern": "class qfq 1:", "matchCount": "0", "teardown": [ "$IP link del dev $DUMMY type dummy" ] }, { "id": "5993", "name": "QFQ with stab overhead greater than max packet len", "category": [ "qdisc", "qfq", "scapy" ], "plugins": { "requires": [ "nsPlugin", "scapyPlugin" ] }, "setup": [ "$IP link add dev $DUMMY type dummy || /bin/true", "$IP link set dev $DUMMY up || /bin/true", "$TC qdisc add dev $DUMMY handle 1: stab mtu 2048 tsize 512 mpu 0 overhead 999999999 linklayer ethernet root qfq", "$TC class add dev $DUMMY parent 1: classid 1:1 qfq weight 100", "$TC qdisc add dev $DEV1 clsact", "$TC filter add dev $DEV1 ingress protocol ip flower dst_ip 1.3.3.7/32 action mirred egress mirror dev $DUMMY" ], "cmdUnderTest": "$TC filter add dev $DUMMY parent 1: matchall classid 1:1", "scapy": [ { "iface": "$DEV0", "count": 22, "packet": "Ether(type=0x800)/IP(src='10.0.0.10',dst='1.3.3.7')/TCP(sport=5000,dport=10)" } ], "expExitCode": "0", "verifyCmd": "$TC -s qdisc ls dev $DUMMY", "matchPattern": "dropped 22", "matchCount": "1", "teardown": [ "$TC qdisc del dev $DUMMY handle 1: root qfq" ] } ]