1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3 4ALL_TESTS="shared_block_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 73setup_prepare() 74{ 75 h1=${NETIFS[p1]} 76 swp1=${NETIFS[p2]} 77 78 swp2=${NETIFS[p3]} 79 h2=${NETIFS[p4]} 80 81 h1mac=$(mac_get $h1) 82 h2mac=$(mac_get $h2) 83 84 swmac=$(mac_get $swp1) 85 swp2origmac=$(mac_get $swp2) 86 ip link set $swp2 address $swmac 87 88 vrf_prepare 89 90 h1_create 91 h2_create 92 switch_create 93} 94 95cleanup() 96{ 97 pre_cleanup 98 99 switch_destroy 100 h2_destroy 101 h1_destroy 102 103 vrf_cleanup 104 105 ip link set $swp2 address $swp2origmac 106} 107 108check_tc_shblock_support 109 110trap cleanup EXIT 111 112setup_prepare 113setup_wait 114 115tests_run 116 117tc_offload_check 118if [[ $? -ne 0 ]]; then 119 log_info "Could not test offloaded functionality" 120else 121 tcflags="skip_sw" 122 tests_run 123fi 124 125exit $EXIT_STATUS 126