56 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03#4# rotate TFO keys for ipv4/ipv6 and verify that the client does5# not present an invalid cookie.6 7set +x8set -e9 10readonly NETNS="ns-$(mktemp -u XXXXXX)"11 12setup() {13 ip netns add "${NETNS}"14 ip -netns "${NETNS}" link set lo up15 ip netns exec "${NETNS}" sysctl -w net.ipv4.tcp_fastopen=3 \16 >/dev/null 2>&117}18 19cleanup() {20 ip netns del "${NETNS}"21}22 23trap cleanup EXIT24setup25 26do_test() {27 # flush routes before each run, otherwise successive runs can28 # initially present an old TFO cookie29 ip netns exec "${NETNS}" ip tcp_metrics flush30 ip netns exec "${NETNS}" ./tcp_fastopen_backup_key "$1"31 val=$(ip netns exec "${NETNS}" nstat -az | \32 grep TcpExtTCPFastOpenPassiveFail | awk '{print $2}')33 if [ "$val" != 0 ]; then34 echo "FAIL: TcpExtTCPFastOpenPassiveFail non-zero"35 return 136 fi37}38 39do_test "-4"40do_test "-6"41do_test "-4"42do_test "-6"43do_test "-4s"44do_test "-6s"45do_test "-4s"46do_test "-6s"47do_test "-4r"48do_test "-6r"49do_test "-4r"50do_test "-6r"51do_test "-4sr"52do_test "-6sr"53do_test "-4sr"54do_test "-6sr"55echo "all tests done"56