brintos

brintos / linux-shallow public Read only

0
0
Text · 1.7 KiB · b42c242 Raw
86 lines · bash
1#!/bin/sh2# SPDX-License-Identifier: GPL-2.03# Copyright (c) 2018 Facebook4# Copyright (c) 2019 Cloudflare5 6set -eu7readonly NS1="ns1-$(mktemp -u XXXXXX)"8 9wait_for_ip()10{11	local _i12	printf "Wait for IP %s to become available " "$1"13	for _i in $(seq ${MAX_PING_TRIES}); do14		printf "."15		if ns1_exec ping -c 1 -W 1 "$1" >/dev/null 2>&1; then16			echo " OK"17			return18		fi19		sleep 120	done21	echo 1>&2 "ERROR: Timeout waiting for test IP to become available."22	exit 123}24 25get_prog_id()26{27	awk '/ id / {sub(/.* id /, "", $0); print($1)}'28}29 30ns1_exec()31{32	ip netns exec ${NS1} "$@"33}34 35setup()36{37	ip netns add ${NS1}38	ns1_exec ip link set lo up39 40	ns1_exec sysctl -w net.ipv4.tcp_syncookies=241	ns1_exec sysctl -w net.ipv4.tcp_window_scaling=042	ns1_exec sysctl -w net.ipv4.tcp_timestamps=043	ns1_exec sysctl -w net.ipv4.tcp_sack=044 45	wait_for_ip 127.0.0.146	wait_for_ip ::147}48 49cleanup()50{51	ip netns del ns1 2>/dev/null || :52}53 54main()55{56	trap cleanup EXIT 2 3 6 1557	setup58 59	printf "Testing clsact..."60	ns1_exec tc qdisc add dev "${TEST_IF}" clsact61	ns1_exec tc filter add dev "${TEST_IF}" ingress \62		bpf obj "${BPF_PROG_OBJ}" sec "${CLSACT_SECTION}" da63 64	BPF_PROG_ID=$(ns1_exec tc filter show dev "${TEST_IF}" ingress | \65		      get_prog_id)66	ns1_exec "${PROG}" "${BPF_PROG_ID}"67	ns1_exec tc qdisc del dev "${TEST_IF}" clsact68 69	printf "Testing XDP..."70	ns1_exec ip link set "${TEST_IF}" xdp \71		object "${BPF_PROG_OBJ}" section "${XDP_SECTION}"72	BPF_PROG_ID=$(ns1_exec ip link show "${TEST_IF}" | get_prog_id)73	ns1_exec "${PROG}" "${BPF_PROG_ID}"74}75 76DIR=$(dirname $0)77TEST_IF=lo78MAX_PING_TRIES=579BPF_PROG_OBJ="${DIR}/test_tcp_check_syncookie_kern.bpf.o"80CLSACT_SECTION="tc"81XDP_SECTION="xdp"82BPF_PROG_ID=083PROG="${DIR}/test_tcp_check_syncookie_user"84 85main86