| [ |
| { |
| "id": "e89a", |
| "name": "Add valid pass action", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ] |
| ], |
| "cmdUnderTest": "$TC actions add action pass index 8", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action pass.*index 8 ref", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "a02c", |
| "name": "Add valid pipe action", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ] |
| ], |
| "cmdUnderTest": "$TC actions add action pipe index 6", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action pipe.*index 6 ref", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "feef", |
| "name": "Add valid reclassify action", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ] |
| ], |
| "cmdUnderTest": "$TC actions add action reclassify index 5", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action reclassify.*index 5 ref", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "8a7a", |
| "name": "Add valid drop action", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ] |
| ], |
| "cmdUnderTest": "$TC actions add action drop index 30", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action drop.*index 30 ref", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "9a52", |
| "name": "Add valid continue action", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ] |
| ], |
| "cmdUnderTest": "$TC actions add action continue index 432", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action continue.*index 432 ref", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "d700", |
| "name": "Add invalid action", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ] |
| ], |
| "cmdUnderTest": "$TC actions add action pump index 386", |
| "expExitCode": "255", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action.*index 386 ref", |
| "matchCount": "0", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "9215", |
| "name": "Add action with duplicate index", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ], |
| "$TC actions add action pipe index 15" |
| ], |
| "cmdUnderTest": "$TC actions add action drop index 15", |
| "expExitCode": "255", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action drop.*index 15 ref", |
| "matchCount": "0", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "798e", |
| "name": "Add action with index exceeding 32-bit maximum", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ] |
| ], |
| "cmdUnderTest": "$TC actions add action drop index 4294967296", |
| "expExitCode": "255", |
| "verifyCmd": "actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action drop.*index 4294967296 ref", |
| "matchCount": "0", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "22be", |
| "name": "Add action with index at 32-bit maximum", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ] |
| ], |
| "cmdUnderTest": "$TC actions add action drop index 4294967295", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action drop.*index 4294967295 ref", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "ac2a", |
| "name": "List actions", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ], |
| "$TC actions add action reclassify index 101", |
| "$TC actions add action reclassify index 102", |
| "$TC actions add action reclassify index 103", |
| "$TC actions add action reclassify index 104", |
| "$TC actions add action reclassify index 105" |
| ], |
| "cmdUnderTest": "$TC actions list action gact", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action reclassify", |
| "matchCount": "5", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "3edf", |
| "name": "Flush gact actions", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| "$TC actions add action reclassify index 101", |
| "$TC actions add action reclassify index 102", |
| "$TC actions add action reclassify index 103", |
| "$TC actions add action reclassify index 104", |
| "$TC actions add action reclassify index 105" |
| ], |
| "cmdUnderTest": "$TC actions flush action gact", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action reclassify", |
| "matchCount": "0", |
| "teardown": [] |
| }, |
| { |
| "id": "63ec", |
| "name": "Delete pass action", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ], |
| "$TC actions add action pass index 1" |
| ], |
| "cmdUnderTest": "$TC actions del action gact index 1", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action pass.*index 1 ref", |
| "matchCount": "0", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "46be", |
| "name": "Delete pipe action", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ], |
| "$TC actions add action pipe index 9" |
| ], |
| "cmdUnderTest": "$TC actions del action gact index 9", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action pipe.*index 9 ref", |
| "matchCount": "0", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "2e08", |
| "name": "Delete reclassify action", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ], |
| "$TC actions add action reclassify index 65536" |
| ], |
| "cmdUnderTest": "$TC actions del action gact index 65536", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action reclassify.*index 65536 ref", |
| "matchCount": "0", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "99c4", |
| "name": "Delete drop action", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ], |
| "$TC actions add action drop index 16" |
| ], |
| "cmdUnderTest": "$TC actions del action gact index 16", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action drop.*index 16 ref", |
| "matchCount": "0", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "fb6b", |
| "name": "Delete continue action", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ], |
| "$TC actions add action continue index 32" |
| ], |
| "cmdUnderTest": "$TC actions del action gact index 32", |
| "expExitCode": "0", |
| "verifyCmd": "actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action continue.*index 32 ref", |
| "matchCount": "0", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "0eb3", |
| "name": "Delete non-existent action", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ] |
| ], |
| "cmdUnderTest": "$TC actions del action gact index 2", |
| "expExitCode": "255", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action", |
| "matchCount": "0", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "f02c", |
| "name": "Replace gact action", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ], |
| "$TC actions add action drop index 10", |
| "$TC actions add action drop index 12" |
| ], |
| "cmdUnderTest": "$TC actions replace action ok index 12", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions ls action gact", |
| "matchPattern": "action order [0-9]*: gact action pass", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "525f", |
| "name": "Get gact action by index", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ], |
| "$TC actions add action drop index 3900800700" |
| ], |
| "cmdUnderTest": "$TC actions get action gact index 3900800700", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions get action gact index 3900800700", |
| "matchPattern": "index 3900800700", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "1021", |
| "name": "Add batch of 32 gact pass actions", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ] |
| ], |
| "cmdUnderTest": "bash -c \"for i in \\`seq 1 32\\`; do cmd=\\\"action pass index \\$i \\\"; args=\"\\$args\\$cmd\"; done && $TC actions add \\$args\"", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "^[ \t]+index [0-9]+ ref", |
| "matchCount": "32", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "da7a", |
| "name": "Add batch of 32 gact continue actions with cookie", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ] |
| ], |
| "cmdUnderTest": "bash -c \"for i in \\`seq 1 32\\`; do cmd=\\\"action continue index \\$i cookie aabbccddeeff112233445566778800a1 \\\"; args=\"\\$args\\$cmd\"; done && $TC actions add \\$args\"", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "^[ \t]+index [0-9]+ ref", |
| "matchCount": "32", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "8aa3", |
| "name": "Delete batch of 32 gact continue actions", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ], |
| "bash -c \"for i in \\`seq 1 32\\`; do cmd=\\\"action continue index \\$i \\\"; args=\\\"\\$args\\$cmd\\\"; done && $TC actions add \\$args\"" |
| ], |
| "cmdUnderTest": "bash -c \"for i in \\`seq 1 32\\`; do cmd=\\\"action gact index \\$i \\\"; args=\"\\$args\\$cmd\"; done && $TC actions del \\$args\"", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "^[ \t]+index [0-9]+ ref", |
| "matchCount": "0", |
| "teardown": [] |
| }, |
| { |
| "id": "8e47", |
| "name": "Add gact action with random determ goto chain control action", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ] |
| ], |
| "cmdUnderTest": "$TC actions add action pass random determ goto chain 1 2 index 90", |
| "expExitCode": "255", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action pass random type determ goto chain 1 val 2.*index 90 ref", |
| "matchCount": "0", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "ca89", |
| "name": "Replace gact action with invalid goto chain control", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ], |
| "$TC actions add action pass random determ drop 2 index 90" |
| ], |
| "cmdUnderTest": "$TC actions replace action goto chain 42 random determ drop 5 index 90 cookie c1a0c1a0", |
| "expExitCode": "255", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action pass.*random type determ drop val 2.*index 90 ref", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "95ad", |
| "name": "Add gact pass action with no_percpu flag", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ] |
| ], |
| "cmdUnderTest": "$TC actions add action pass no_percpu", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions list action gact", |
| "matchPattern": "action order [0-9]*: gact action pass.*no_percpu", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC actions flush action gact" |
| ] |
| }, |
| { |
| "id": "7f52", |
| "name": "Try to flush action which is referenced by filter", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "plugins": { |
| "requires": "nsPlugin" |
| }, |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ], |
| "$TC qdisc add dev $DEV1 ingress", |
| "$TC actions add action pass index 1", |
| "$TC filter add dev $DEV1 protocol all ingress prio 1 handle 0x1234 matchall action gact index 1" |
| ], |
| "cmdUnderTest": "$TC actions flush action gact", |
| "expExitCode": "1", |
| "verifyCmd": "$TC actions ls action gact", |
| "matchPattern": "total acts 1.*action order [0-9]*: gact action pass.*index 1 ref 2 bind 1", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC qdisc del dev $DEV1 ingress", |
| [ |
| "sleep 1; $TC actions flush action gact", |
| 0, |
| 1 |
| ] |
| ] |
| }, |
| { |
| "id": "ae1e", |
| "name": "Try to flush actions when last one is referenced by filter", |
| "category": [ |
| "actions", |
| "gact" |
| ], |
| "plugins": { |
| "requires": "nsPlugin" |
| }, |
| "setup": [ |
| [ |
| "$TC actions flush action gact", |
| 0, |
| 1, |
| 255 |
| ], |
| "$TC qdisc add dev $DEV1 ingress", |
| [ |
| "$TC actions add action pass index 1", |
| 0, |
| 1, |
| 255 |
| ], |
| "$TC actions add action reclassify index 2", |
| "$TC actions add action drop index 3", |
| "$TC filter add dev $DEV1 protocol all ingress prio 1 handle 0x1234 matchall action gact index 3" |
| ], |
| "cmdUnderTest": "$TC actions flush action gact", |
| "expExitCode": "0", |
| "verifyCmd": "$TC actions ls action gact", |
| "matchPattern": "total acts 1.*action order [0-9]*: gact action drop.*index 3 ref 2 bind 1", |
| "matchCount": "1", |
| "teardown": [ |
| "$TC qdisc del dev $DEV1 ingress", |
| [ |
| "sleep 1; $TC actions flush action gact", |
| 0, |
| 1 |
| ] |
| ] |
| } |
| ] |