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

router_scale.sh (2138B)


      1#!/bin/bash
      2# SPDX-License-Identifier: GPL-2.0
      3
      4ROUTER_NUM_NETIFS=4
      5: ${TIMEOUT:=20000} # ms
      6
      7router_h1_create()
      8{
      9	simple_if_init $h1 192.0.1.1/24
     10}
     11
     12router_h1_destroy()
     13{
     14	simple_if_fini $h1 192.0.1.1/24
     15}
     16
     17router_h2_create()
     18{
     19	simple_if_init $h2 192.0.2.1/24
     20	tc qdisc add dev $h2 handle ffff: ingress
     21}
     22
     23router_h2_destroy()
     24{
     25	tc qdisc del dev $h2 handle ffff: ingress
     26	simple_if_fini $h2 192.0.2.1/24
     27}
     28
     29router_create()
     30{
     31	ip link set dev $rp1 up
     32	ip link set dev $rp2 up
     33
     34	ip address add 192.0.1.2/24 dev $rp1
     35	ip address add 192.0.2.2/24 dev $rp2
     36}
     37
     38router_destroy()
     39{
     40	ip address del 192.0.2.2/24 dev $rp2
     41	ip address del 192.0.1.2/24 dev $rp1
     42
     43	ip link set dev $rp2 down
     44	ip link set dev $rp1 down
     45}
     46
     47router_setup_prepare()
     48{
     49	h1=${NETIFS[p1]}
     50	rp1=${NETIFS[p2]}
     51
     52	rp2=${NETIFS[p3]}
     53	h2=${NETIFS[p4]}
     54
     55	h1mac=$(mac_get $h1)
     56	rp1mac=$(mac_get $rp1)
     57
     58	vrf_prepare
     59
     60	router_h1_create
     61	router_h2_create
     62
     63	router_create
     64}
     65
     66wait_for_routes()
     67{
     68	local t0=$1; shift
     69	local route_count=$1; shift
     70
     71	local t1=$(ip route | grep 'offload' | grep -v 'offload_failed' | wc -l)
     72	local delta=$((t1 - t0))
     73	echo $delta
     74	[[ $delta -ge $route_count ]]
     75}
     76
     77router_routes_create()
     78{
     79	local route_count=$1
     80	local count=0
     81
     82	ROUTE_FILE="$(mktemp)"
     83
     84	for i in {0..255}
     85	do
     86		for j in {0..255}
     87		do
     88			for k in {0..255}
     89			do
     90				if [[ $count -eq $route_count ]]; then
     91					break 3
     92				fi
     93
     94				echo route add 193.${i}.${j}.${k}/32 dev $rp2 \
     95					>> $ROUTE_FILE
     96				((count++))
     97			done
     98		done
     99	done
    100
    101	ip -b $ROUTE_FILE &> /dev/null
    102}
    103
    104router_routes_destroy()
    105{
    106	if [[ -v ROUTE_FILE ]]; then
    107		rm -f $ROUTE_FILE
    108	fi
    109}
    110
    111router_test()
    112{
    113	local route_count=$1
    114	local should_fail=$2
    115	local delta
    116
    117	RET=0
    118
    119	local t0=$(ip route | grep -o 'offload' | wc -l)
    120	router_routes_create $route_count
    121	delta=$(busywait "$TIMEOUT" wait_for_routes $t0 $route_count)
    122
    123	check_err_fail $should_fail $? "Offload routes: Expected $route_count, got $delta."
    124	if [[ $RET -ne 0 ]] || [[ $should_fail -eq 1 ]]; then
    125		return
    126	fi
    127
    128	router_routes_destroy
    129}
    130
    131router_cleanup()
    132{
    133	pre_cleanup
    134
    135	router_routes_destroy
    136	router_destroy
    137
    138	router_h2_destroy
    139	router_h1_destroy
    140
    141	vrf_cleanup
    142}