brintos

brintos / linux-shallow public Read only

0
0
Text · 1.5 KiB · 2fab29d Raw
84 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03#4source lib.sh5 6timeout=4m7ret=08tmp=$(mktemp)9cleanup() {10	cleanup_all_ns11	rm -f "$tmp"12}13 14trap cleanup EXIT15 16maxpolicies=10000017[ "$KSFT_MACHINE_SLOW" = "yes" ] && maxpolicies=1000018 19do_dummies4() {20	local dir="$1"21	local max="$2"22 23	local policies24	local pfx25	pfx=3026	policies=027 28	ip netns exec "$ns" ip xfrm policy flush29 30	for i in $(seq 1 100);do31		local s32		local d33		for j in $(seq 1 255);do34			s=$((i+0))35			d=$((i+100))36 37			for a in $(seq 1 8 255); do38				policies=$((policies+1))39				[ "$policies" -gt "$max" ] && return40				echo xfrm policy add src 10.$s.$j.0/30 dst 10.$d.$j.$a/$pfx dir $dir action block41			done42			for a in $(seq 1 8 255); do43				policies=$((policies+1))44				[ "$policies" -gt "$max" ] && return45				echo xfrm policy add src 10.$s.$j.$a/30 dst 10.$d.$j.0/$pfx dir $dir action block46			done47		done48	done49}50 51setup_ns ns52 53do_bench()54{55	local max="$1"56 57	start=$(date +%s%3N)58	do_dummies4 "out" "$max" > "$tmp"59	if ! timeout "$timeout" ip netns exec "$ns" ip -batch "$tmp";then60		echo "WARNING: policy insertion cancelled after $timeout"61		ret=162	fi63	stop=$(date +%s%3N)64 65	result=$((stop-start))66 67	policies=$(wc -l < "$tmp")68	printf "Inserted %-06s policies in $result ms\n" $policies69 70	have=$(ip netns exec "$ns" ip xfrm policy show | grep "action block" | wc -l)71	if [ "$have" -ne "$policies" ]; then72		echo "WARNING: mismatch, have $have policies, expected $policies"73		ret=174	fi75}76 77p=10078while [ $p -le "$maxpolicies" ]; do79	do_bench "$p"80	p="${p}0"81done82 83exit $ret84