brintos

brintos / linux-shallow public Read only

0
0
Text · 2.7 KiB · 772e00a Raw
153 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4ALL_TESTS="shared_block_test match_indev_test"5NUM_NETIFS=46source tc_common.sh7source lib.sh8 9tcflags="skip_hw"10 11h1_create()12{13	simple_if_init $h1 192.0.2.1/2414}15 16h1_destroy()17{18	simple_if_fini $h1 192.0.2.1/2419}20 21h2_create()22{23	simple_if_init $h2 192.0.2.1/2424}25 26h2_destroy()27{28	simple_if_fini $h2 192.0.2.1/2429}30 31switch_create()32{33	simple_if_init $swp1 192.0.2.2/2434	tc qdisc add dev $swp1 ingress_block 22 egress_block 23 clsact35 36	simple_if_init $swp2 192.0.2.2/2437	tc qdisc add dev $swp2 ingress_block 22 egress_block 23 clsact38}39 40switch_destroy()41{42	tc qdisc del dev $swp2 clsact43	simple_if_fini $swp2 192.0.2.2/2444 45	tc qdisc del dev $swp1 clsact46	simple_if_fini $swp1 192.0.2.2/2447}48 49shared_block_test()50{51	RET=052 53	tc filter add block 22 protocol ip pref 1 handle 101 flower \54		$tcflags dst_ip 192.0.2.2 action drop55 56	$MZ $h1 -c 1 -p 64 -a $h1mac -b $swmac -A 192.0.2.1 -B 192.0.2.2 \57		-t ip -q58 59	tc_check_packets "block 22" 101 160	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 -q64 65	tc_check_packets "block 22" 101 266	check_err $? "Did not match second incoming packet on a block"67 68	tc filter del block 22 protocol ip pref 1 handle 101 flower69 70	log_test "shared block ($tcflags)"71}72 73match_indev_test()74{75	RET=076 77	tc filter add block 22 protocol ip pref 1 handle 101 flower \78		$tcflags indev $swp1 dst_mac $swmac action drop79	tc filter add block 22 protocol ip pref 2 handle 102 flower \80		$tcflags indev $swp2 dst_mac $swmac action drop81 82	$MZ $h1 -c 1 -p 64 -a $h1mac -b $swmac -A 192.0.2.1 -B 192.0.2.2 \83		-t ip -q84 85	tc_check_packets "block 22" 101 186	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 -q90 91	tc_check_packets "block 22" 102 192	check_err $? "Did not match second incoming packet on a block"93 94	tc filter del block 22 protocol ip pref 1 handle 101 flower95	tc filter del block 22 protocol ip pref 2 handle 102 flower96 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 $swmac114 115	vrf_prepare116 117	h1_create118	h2_create119	switch_create120}121 122cleanup()123{124	pre_cleanup125 126	switch_destroy127	h2_destroy128	h1_destroy129 130	vrf_cleanup131 132	ip link set $swp2 address $swp2origmac133}134 135check_tc_shblock_support136 137trap cleanup EXIT138 139setup_prepare140setup_wait141 142tests_run143 144tc_offload_check145if [[ $? -ne 0 ]]; then146	log_info "Could not test offloaded functionality"147else148	tcflags="skip_sw"149	tests_run150fi151 152exit $EXIT_STATUS153