| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #!/bin/bash
- # SPDX-License-Identifier: GPL-2.0
- #
- source lib.sh
- timeout=4m
- ret=0
- tmp=$(mktemp)
- cleanup() {
- cleanup_all_ns
- rm -f "$tmp"
- }
- trap cleanup EXIT
- maxpolicies=100000
- [ "$KSFT_MACHINE_SLOW" = "yes" ] && maxpolicies=10000
- do_dummies4() {
- local dir="$1"
- local max="$2"
- local policies
- local pfx
- pfx=30
- policies=0
- ip netns exec "$ns" ip xfrm policy flush
- for i in $(seq 1 100);do
- local s
- local d
- for j in $(seq 1 255);do
- s=$((i+0))
- d=$((i+100))
- for a in $(seq 1 8 255); do
- policies=$((policies+1))
- [ "$policies" -gt "$max" ] && return
- echo xfrm policy add src 10.$s.$j.0/30 dst 10.$d.$j.$a/$pfx dir $dir action block
- done
- for a in $(seq 1 8 255); do
- policies=$((policies+1))
- [ "$policies" -gt "$max" ] && return
- echo xfrm policy add src 10.$s.$j.$a/30 dst 10.$d.$j.0/$pfx dir $dir action block
- done
- done
- done
- }
- setup_ns ns
- do_bench()
- {
- local max="$1"
- start=$(date +%s%3N)
- do_dummies4 "out" "$max" > "$tmp"
- if ! timeout "$timeout" ip netns exec "$ns" ip -batch "$tmp";then
- echo "WARNING: policy insertion cancelled after $timeout"
- ret=1
- fi
- stop=$(date +%s%3N)
- result=$((stop-start))
- policies=$(wc -l < "$tmp")
- printf "Inserted %-06s policies in $result ms\n" $policies
- have=$(ip netns exec "$ns" ip xfrm policy show | grep "action block" | wc -l)
- if [ "$have" -ne "$policies" ]; then
- echo "WARNING: mismatch, have $have policies, expected $policies"
- ret=1
- fi
- }
- p=100
- while [ $p -le "$maxpolicies" ]; do
- do_bench "$p"
- p="${p}0"
- done
- exit $ret
|