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

cmsg_so_mark.sh (1572B)


      1#!/bin/bash
      2# SPDX-License-Identifier: GPL-2.0
      3
      4NS=ns
      5IP4=172.16.0.1/24
      6TGT4=172.16.0.2
      7IP6=2001:db8:1::1/64
      8TGT6=2001:db8:1::2
      9MARK=1000
     10
     11cleanup()
     12{
     13    ip netns del $NS
     14}
     15
     16trap cleanup EXIT
     17
     18# Namespaces
     19ip netns add $NS
     20
     21ip netns exec $NS sysctl -w net.ipv4.ping_group_range='0 2147483647' > /dev/null
     22
     23# Connectivity
     24ip -netns $NS link add type dummy
     25ip -netns $NS link set dev dummy0 up
     26ip -netns $NS addr add $IP4 dev dummy0
     27ip -netns $NS addr add $IP6 dev dummy0
     28
     29ip -netns $NS rule add fwmark $MARK lookup 300
     30ip -6 -netns $NS rule add fwmark $MARK lookup 300
     31ip -netns $NS route add prohibit any table 300
     32ip -6 -netns $NS route add prohibit any table 300
     33
     34# Test
     35BAD=0
     36TOTAL=0
     37
     38check_result() {
     39    ((TOTAL++))
     40    if [ $1 -ne $2 ]; then
     41	echo "  Case $3 returned $1, expected $2"
     42	((BAD++))
     43    fi
     44}
     45
     46for ovr in setsock cmsg both; do
     47    for i in 4 6; do
     48	[ $i == 4 ] && TGT=$TGT4 || TGT=$TGT6
     49
     50	for p in u i r; do
     51	    [ $p == "u" ] && prot=UDP
     52	    [ $p == "i" ] && prot=ICMP
     53	    [ $p == "r" ] && prot=RAW
     54
     55	    [ $ovr == "setsock" ] && m="-M"
     56	    [ $ovr == "cmsg" ]    && m="-m"
     57	    [ $ovr == "both" ]    && m="-M $MARK -m"
     58
     59	    ip netns exec $NS ./cmsg_sender -$i -p $p $m $((MARK + 1)) $TGT 1234
     60	    check_result $? 0 "$prot $ovr - pass"
     61
     62	    [ $ovr == "diff" ] && m="-M $((MARK + 1)) -m"
     63
     64	    ip netns exec $NS ./cmsg_sender -$i -p $p $m $MARK -s $TGT 1234
     65	    check_result $? 1 "$prot $ovr - rejection"
     66	done
     67    done
     68done
     69
     70# Summary
     71if [ $BAD -ne 0 ]; then
     72    echo "FAIL - $BAD/$TOTAL cases failed"
     73    exit 1
     74else
     75    echo "OK"
     76    exit 0
     77fi