#!/bin/bash # SPDX-License-Identifier: GPL-2.0 # # rotate TFO keys for ipv4/ipv6 and verify that the client does # not present an invalid cookie. set +x set -e readonly NETNS="ns-$(mktemp -u XXXXXX)" setup() { ip netns add "${NETNS}" ip -netns "${NETNS}" link set lo up ip netns exec "${NETNS}" sysctl -w net.ipv4.tcp_fastopen=3 \ >/dev/null 2>&1 } cleanup() { ip netns del "${NETNS}" } trap cleanup EXIT setup do_test() { # flush routes before each run, otherwise successive runs can # initially present an old TFO cookie ip netns exec "${NETNS}" ip tcp_metrics flush ip netns exec "${NETNS}" ./tcp_fastopen_backup_key "$1" val=$(ip netns exec "${NETNS}" nstat -az | \ grep TcpExtTCPFastOpenPassiveFail | awk '{print $2}') if [ "$val" != 0 ]; then echo "FAIL: TcpExtTCPFastOpenPassiveFail non-zero" return 1 fi } do_test "-4" do_test "-6" do_test "-4" do_test "-6" do_test "-4s" do_test "-6s" do_test "-4s" do_test "-6s" do_test "-4r" do_test "-6r" do_test "-4r" do_test "-6r" do_test "-4sr" do_test "-6sr" do_test "-4sr" do_test "-6sr" echo "all tests done"