File Index
Files and directories
Sign in
FILE

tc_shblocks.sh

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/net/forwarding/tc_shblocks.sh BASH
  1#!/bin/bash
  2# SPDX-License-Identifier: GPL-2.0
  3
  4ALL_TESTS="shared_block_test match_indev_test"
  5NUM_NETIFS=4
  6source tc_common.sh
  7source lib.sh
  8
  9tcflags="skip_hw"
 10
 11h1_create()
 12{
 13	simple_if_init $h1 192.0.2.1/24
 14}
 15
 16h1_destroy()
 17{
 18	simple_if_fini $h1 192.0.2.1/24
 19}
 20
 21h2_create()
 22{
 23	simple_if_init $h2 192.0.2.1/24
 24}
 25
 26h2_destroy()
 27{
 28	simple_if_fini $h2 192.0.2.1/24
 29}
 30
 31switch_create()
 32{
 33	simple_if_init $swp1 192.0.2.2/24
 34	tc qdisc add dev $swp1 ingress_block 22 egress_block 23 clsact
 35
 36	simple_if_init $swp2 192.0.2.2/24
 37	tc qdisc add dev $swp2 ingress_block 22 egress_block 23 clsact
 38}
 39
 40switch_destroy()
 41{
 42	tc qdisc del dev $swp2 clsact
 43	simple_if_fini $swp2 192.0.2.2/24
 44
 45	tc qdisc del dev $swp1 clsact
 46	simple_if_fini $swp1 192.0.2.2/24
 47}
 48
 49shared_block_test()
 50{
 51	RET=0
 52
 53	tc filter add block 22 protocol ip pref 1 handle 101 flower \
 54		$tcflags dst_ip 192.0.2.2 action drop
 55
 56	$MZ $h1 -c 1 -p 64 -a $h1mac -b $swmac -A 192.0.2.1 -B 192.0.2.2 \
 57		-t ip -q
 58
 59	tc_check_packets "block 22" 101 1
 60	check_err $? "Did not match first incoming packet on a block"
 61
 62	$MZ $h2 -c 1 -p 64 -a $h2mac -b $swmac -A 192.0.2.1 -B 192.0.2.2 \
 63		-t ip -q
 64
 65	tc_check_packets "block 22" 101 2
 66	check_err $? "Did not match second incoming packet on a block"
 67
 68	tc filter del block 22 protocol ip pref 1 handle 101 flower
 69
 70	log_test "shared block ($tcflags)"
 71}
 72
 73match_indev_test()
 74{
 75	RET=0
 76
 77	tc filter add block 22 protocol ip pref 1 handle 101 flower \
 78		$tcflags indev $swp1 dst_mac $swmac action drop
 79	tc filter add block 22 protocol ip pref 2 handle 102 flower \
 80		$tcflags indev $swp2 dst_mac $swmac action drop
 81
 82	$MZ $h1 -c 1 -p 64 -a $h1mac -b $swmac -A 192.0.2.1 -B 192.0.2.2 \
 83		-t ip -q
 84
 85	tc_check_packets "block 22" 101 1
 86	check_err $? "Did not match first incoming packet on a block"
 87
 88	$MZ $h2 -c 1 -p 64 -a $h2mac -b $swmac -A 192.0.2.1 -B 192.0.2.2 \
 89		-t ip -q
 90
 91	tc_check_packets "block 22" 102 1
 92	check_err $? "Did not match second incoming packet on a block"
 93
 94	tc filter del block 22 protocol ip pref 1 handle 101 flower
 95	tc filter del block 22 protocol ip pref 2 handle 102 flower
 96
 97	log_test "indev match ($tcflags)"
 98}
 99
100setup_prepare()
101{
102	h1=${NETIFS[p1]}
103	swp1=${NETIFS[p2]}
104
105	swp2=${NETIFS[p3]}
106	h2=${NETIFS[p4]}
107
108	h1mac=$(mac_get $h1)
109	h2mac=$(mac_get $h2)
110
111	swmac=$(mac_get $swp1)
112	swp2origmac=$(mac_get $swp2)
113	ip link set $swp2 address $swmac
114
115	vrf_prepare
116
117	h1_create
118	h2_create
119	switch_create
120}
121
122cleanup()
123{
124	pre_cleanup
125
126	switch_destroy
127	h2_destroy
128	h1_destroy
129
130	vrf_cleanup
131
132	ip link set $swp2 address $swp2origmac
133}
134
135check_tc_shblock_support
136
137trap cleanup EXIT
138
139setup_prepare
140setup_wait
141
142tests_run
143
144tc_offload_check
145if [[ $? -ne 0 ]]; then
146	log_info "Could not test offloaded functionality"
147else
148	tcflags="skip_sw"
149	tests_run
150fi
151
152exit $EXIT_STATUS
~/ Read-only file preview.