brintos

brintos / linux-shallow public Read only

0
0
Text · 2.1 KiB · 683759d Raw
143 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4ROUTER_NUM_NETIFS=45: ${TIMEOUT:=20000} # ms6 7router_h1_create()8{9	simple_if_init $h1 192.0.1.1/2410}11 12router_h1_destroy()13{14	simple_if_fini $h1 192.0.1.1/2415}16 17router_h2_create()18{19	simple_if_init $h2 192.0.2.1/2420	tc qdisc add dev $h2 handle ffff: ingress21}22 23router_h2_destroy()24{25	tc qdisc del dev $h2 handle ffff: ingress26	simple_if_fini $h2 192.0.2.1/2427}28 29router_create()30{31	ip link set dev $rp1 up32	ip link set dev $rp2 up33 34	ip address add 192.0.1.2/24 dev $rp135	ip address add 192.0.2.2/24 dev $rp236}37 38router_destroy()39{40	ip address del 192.0.2.2/24 dev $rp241	ip address del 192.0.1.2/24 dev $rp142 43	ip link set dev $rp2 down44	ip link set dev $rp1 down45}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_prepare59 60	router_h1_create61	router_h2_create62 63	router_create64}65 66wait_for_routes()67{68	local t0=$1; shift69	local route_count=$1; shift70 71	local t1=$(ip route | grep 'offload' | grep -v 'offload_failed' | wc -l)72	local delta=$((t1 - t0))73	echo $delta74	[[ $delta -ge $route_count ]]75}76 77router_routes_create()78{79	local route_count=$180	local count=081 82	ROUTE_FILE="$(mktemp)"83 84	for i in {0..255}85	do86		for j in {0..255}87		do88			for k in {0..255}89			do90				if [[ $count -eq $route_count ]]; then91					break 392				fi93 94				echo route add 193.${i}.${j}.${k}/32 dev $rp2 \95					>> $ROUTE_FILE96				((count++))97			done98		done99	done100 101	ip -b $ROUTE_FILE &> /dev/null102}103 104router_routes_destroy()105{106	if [[ -v ROUTE_FILE ]]; then107		rm -f $ROUTE_FILE108	fi109}110 111router_test()112{113	local route_count=$1114	local should_fail=$2115	local delta116 117	RET=0118 119	local t0=$(ip route | grep -o 'offload' | wc -l)120	router_routes_create $route_count121	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 ]]; then125		return126	fi127 128	router_routes_destroy129}130 131router_cleanup()132{133	pre_cleanup134 135	router_routes_destroy136	router_destroy137 138	router_h2_destroy139	router_h1_destroy140 141	vrf_cleanup142}143