17f204a7dSKuniyuki Iwashima#!/bin/bash
27f204a7dSKuniyuki Iwashima# SPDX-License-Identifier: GPL-2.0
37f204a7dSKuniyuki Iwashima#
47f204a7dSKuniyuki Iwashima# Run tests when all ephemeral ports are exhausted.
57f204a7dSKuniyuki Iwashima#
67f204a7dSKuniyuki Iwashima# Author: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
77f204a7dSKuniyuki Iwashima
87f204a7dSKuniyuki Iwashimaset +x
97f204a7dSKuniyuki Iwashimaset -e
107f204a7dSKuniyuki Iwashima
117f204a7dSKuniyuki Iwashimareadonly NETNS="ns-$(mktemp -u XXXXXX)"
127f204a7dSKuniyuki Iwashima
137f204a7dSKuniyuki Iwashimasetup() {
147f204a7dSKuniyuki Iwashima	ip netns add "${NETNS}"
157f204a7dSKuniyuki Iwashima	ip -netns "${NETNS}" link set lo up
167f204a7dSKuniyuki Iwashima	ip netns exec "${NETNS}" \
177f204a7dSKuniyuki Iwashima		sysctl -w net.ipv4.ip_local_port_range="32768 32768" \
187f204a7dSKuniyuki Iwashima		> /dev/null 2>&1
197f204a7dSKuniyuki Iwashima	ip netns exec "${NETNS}" \
207f204a7dSKuniyuki Iwashima		sysctl -w net.ipv4.ip_autobind_reuse=1 > /dev/null 2>&1
217f204a7dSKuniyuki Iwashima}
227f204a7dSKuniyuki Iwashima
237f204a7dSKuniyuki Iwashimacleanup() {
247f204a7dSKuniyuki Iwashima	ip netns del "${NETNS}"
257f204a7dSKuniyuki Iwashima}
267f204a7dSKuniyuki Iwashima
277f204a7dSKuniyuki Iwashimatrap cleanup EXIT
287f204a7dSKuniyuki Iwashimasetup
297f204a7dSKuniyuki Iwashima
307f204a7dSKuniyuki Iwashimado_test() {
317f204a7dSKuniyuki Iwashima	ip netns exec "${NETNS}" ./reuseaddr_ports_exhausted
327f204a7dSKuniyuki Iwashima}
337f204a7dSKuniyuki Iwashima
347f204a7dSKuniyuki Iwashimado_test
357f204a7dSKuniyuki Iwashimaecho "tests done"
36