selftests: tc-testing: add u32 node ID pool exhaustion test

Add a tdc test case that fills the u32 node ID space with 4095
auto-generated handles, then attempts to add a 4096th. On the fixed
kernel the 4096th filter is rejected with ENOSPC (exit 2). On the
unfixed kernel it silently succeeds with a duplicate handle.

The setup pipes the 4095 add commands directly into `tc -b -` inside a
single bash -c (matching the existing test id 1234 pattern), avoiding
any temp file.

Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Link: https://patch.msgid.link/20260825081052.133898-2-jhs@mojatatu.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Jamal Hadi Salim
2026-08-25 04:10:52 -04:00
committed by Jakub Kicinski
parent d7e7e98d23
commit 7b120a7719

View File

@@ -353,5 +353,28 @@
"teardown": [
"$TC qdisc del dev $DEV1 parent root drr"
]
},
{
"id": "70fd",
"name": "Add u32 filter when node ID pool is exhausted (4096th filter rejected)",
"category": [
"filter",
"u32"
],
"plugins": {
"requires": "nsPlugin"
},
"setup": [
"$TC qdisc add dev $DUMMY clsact",
"bash -c 'for i in {1..4095}; do echo filter add dev $DUMMY ingress prio 1 protocol ip u32 match u8 0 0 at 0; done | $TC -b -'"
],
"cmdUnderTest": "$TC filter add dev $DUMMY ingress prio 1 protocol ip u32 match u8 0 0 at 0",
"expExitCode": "2",
"verifyCmd": "$TC -d filter show dev $DUMMY ingress",
"matchPattern": "fh 800::",
"matchCount": "4095",
"teardown": [
"$TC qdisc del dev $DUMMY clsact"
]
}
]