cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

tc_shblocks.sh (2748B)


      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