1 #Test a bunch of positive cases to verify basic functionality
2 for prog in "--txmsg_redir --txmsg_skb" "--txmsg_redir --txmsg_ingress" "--txmsg" "--txmsg_redir" "--txmsg_redir --txmsg_ingress" "--txmsg_drop"; do
3 for t in "sendmsg" "sendpage"; do
7 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
24 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
29 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
33 # Test max iov with 1k send
41 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
46 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
55 prog="--txmsg_apply 1"
57 for t in "sendmsg" "sendpage"; do
58 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
64 # Test apply with larger value than send
68 prog="--txmsg_apply 2048"
70 for t in "sendmsg" "sendpage"; do
71 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
77 # Test apply with apply that never reaches limit
81 prog="--txmsg_apply 2048"
83 for t in "sendmsg" "sendpage"; do
84 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
90 # Test apply and redirect with 1B
94 prog="--txmsg_redir --txmsg_apply 1"
96 for t in "sendmsg" "sendpage"; do
97 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
103 prog="--txmsg_redir --txmsg_apply 1 --txmsg_ingress"
105 for t in "sendmsg" "sendpage"; do
106 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
112 prog="--txmsg_redir --txmsg_apply 1 --txmsg_skb"
114 for t in "sendmsg" "sendpage"; do
115 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
122 # Test apply and redirect with larger value than send
126 prog="--txmsg_redir --txmsg_apply 2048"
128 for t in "sendmsg" "sendpage"; do
129 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
135 prog="--txmsg_redir --txmsg_apply 2048 --txmsg_ingress"
137 for t in "sendmsg" "sendpage"; do
138 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
144 prog="--txmsg_redir --txmsg_apply 2048 --txmsg_skb"
146 for t in "sendmsg" "sendpage"; do
147 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
154 # Test apply and redirect with apply that never reaches limit
158 prog="--txmsg_apply 2048"
160 for t in "sendmsg" "sendpage"; do
161 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
167 # Test cork with 1B not really useful but test it anyways
171 prog="--txmsg_cork 1"
173 for t in "sendpage" "sendmsg"; do
174 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
180 # Test cork with a more reasonable 100B
184 prog="--txmsg_cork 100"
186 for t in "sendpage" "sendmsg"; do
187 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
193 # Test cork with larger value than send
197 prog="--txmsg_cork 2048"
199 for t in "sendpage" "sendmsg"; do
200 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
206 # Test cork with cork that never reaches limit
210 prog="--txmsg_cork 2048"
212 for t in "sendpage" "sendmsg"; do
213 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
222 prog="--txmsg_redir --txmsg_cork 1"
224 for t in "sendpage" "sendmsg"; do
225 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
231 # Test cork with a more reasonable 100B
235 prog="--txmsg_redir --txmsg_cork 100"
237 for t in "sendpage" "sendmsg"; do
238 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
244 # Test cork with larger value than send
248 prog="--txmsg_redir --txmsg_cork 2048"
250 for t in "sendpage" "sendmsg"; do
251 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
257 # Test cork with cork that never reaches limit
261 prog="--txmsg_cork 2048"
263 for t in "sendpage" "sendmsg"; do
264 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
271 # mix and match cork and apply not really useful but valid programs
277 prog="--txmsg_apply 10 --txmsg_cork 100"
278 for t in "sendpage" "sendmsg"; do
279 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
285 # Try again with larger sizes so we hit overflow case
289 prog="--txmsg_apply 4096 --txmsg_cork 8096"
290 for t in "sendpage" "sendmsg"; do
291 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
301 prog="--txmsg_apply 100 --txmsg_cork 10"
302 for t in "sendpage" "sendmsg"; do
303 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
309 # Again with larger sizes so we hit overflow cases
313 prog="--txmsg_apply 8096 --txmsg_cork 4096"
314 for t in "sendpage" "sendmsg"; do
315 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
326 prog="--txmsg_apply 10 --txmsg_cork 10"
327 for t in "sendpage" "sendmsg"; do
328 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
337 prog="--txmsg_apply 4096 --txmsg_cork 4096"
338 for t in "sendpage" "sendmsg"; do
339 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
349 prog="--txmsg_redir --txmsg_apply 10 --txmsg_cork 100"
350 for t in "sendpage" "sendmsg"; do
351 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
357 # Try again with larger sizes so we hit overflow case
361 prog="--txmsg_redir --txmsg_apply 4096 --txmsg_cork 8096"
362 for t in "sendpage" "sendmsg"; do
363 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
373 prog="--txmsg_redir --txmsg_apply 100 --txmsg_cork 10"
374 for t in "sendpage" "sendmsg"; do
375 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
381 # Again with larger sizes so we hit overflow cases
385 prog="--txmsg_redir --txmsg_apply 8096 --txmsg_cork 4096"
386 for t in "sendpage" "sendmsg"; do
387 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
398 prog="--txmsg_redir --txmsg_apply 10 --txmsg_cork 10"
399 for t in "sendpage" "sendmsg"; do
400 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
409 prog="--txmsg_redir --txmsg_apply 4096 --txmsg_cork 4096"
410 for t in "sendpage" "sendmsg"; do
411 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog"
417 # Tests for bpf_msg_pull_data()
418 for i in `seq 99 100 1600`; do
419 TEST="./sockmap --cgroup /mnt/cgroup2/ -t sendpage -r 16 -i 1 -l 100 \
420 --txmsg --txmsg_start 0 --txmsg_end $i --txmsg_cork 1600"
426 for i in `seq 199 100 1600`; do
427 TEST="./sockmap --cgroup /mnt/cgroup2/ -t sendpage -r 16 -i 1 -l 100 \
428 --txmsg --txmsg_start 100 --txmsg_end $i --txmsg_cork 1600"
434 TEST="./sockmap --cgroup /mnt/cgroup2/ -t sendpage -r 16 -i 1 -l 100 \
435 --txmsg --txmsg_start 1500 --txmsg_end 1600 --txmsg_cork 1600"
440 TEST="./sockmap --cgroup /mnt/cgroup2/ -t sendpage -r 16 -i 1 -l 100 \
441 --txmsg --txmsg_start 1111 --txmsg_end 1112 --txmsg_cork 1600"
446 TEST="./sockmap --cgroup /mnt/cgroup2/ -t sendpage -r 16 -i 1 -l 100 \
447 --txmsg --txmsg_start 1111 --txmsg_end 0 --txmsg_cork 1600"
452 TEST="./sockmap --cgroup /mnt/cgroup2/ -t sendpage -r 16 -i 1 -l 100 \
453 --txmsg --txmsg_start 0 --txmsg_end 1601 --txmsg_cork 1600"
458 TEST="./sockmap --cgroup /mnt/cgroup2/ -t sendpage -r 16 -i 1 -l 100 \
459 --txmsg --txmsg_start 0 --txmsg_end 1601 --txmsg_cork 1602"
464 # Run through gamut again with start and end
465 for prog in "--txmsg" "--txmsg_redir" "--txmsg_drop"; do
466 for t in "sendmsg" "sendpage"; do
467 for r in 1 10 100; do
468 for i in 1 10 100; do
469 for l in 1 10 100; do
470 TEST="./sockmap --cgroup /mnt/cgroup2/ -t $t -r $r -i $i -l $l $prog --txmsg_start 1 --txmsg_end 2"
480 # Some specific tests to cover specific code paths
481 ./sockmap --cgroup /mnt/cgroup2/ -t sendpage \
482 -r 5 -i 1 -l 1 --txmsg_redir --txmsg_cork 5 --txmsg_apply 3
483 ./sockmap --cgroup /mnt/cgroup2/ -t sendmsg \
484 -r 5 -i 1 -l 1 --txmsg_redir --txmsg_cork 5 --txmsg_apply 3
485 ./sockmap --cgroup /mnt/cgroup2/ -t sendpage \
486 -r 5 -i 1 -l 1 --txmsg_redir --txmsg_cork 5 --txmsg_apply 5
487 ./sockmap --cgroup /mnt/cgroup2/ -t sendmsg \
488 -r 5 -i 1 -l 1 --txmsg_redir --txmsg_cork 5 --txmsg_apply 5