xref: /linux/tools/testing/selftests/net/setup_veth.sh (revision 1a9239bb4253f9076b5b4b2a1a4e8d7defd77a95)
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3
4readonly server_ns=$(mktemp -u server-XXXXXXXX)
5readonly client_ns=$(mktemp -u client-XXXXXXXX)
6
7setup_veth_ns() {
8	local -r link_dev="$1"
9	local -r ns_name="$2"
10	local -r ns_dev="$3"
11	local -r ns_mac="$4"
12
13	[[ -e /var/run/netns/"${ns_name}" ]] || ip netns add "${ns_name}"
14	echo 200000 > "/sys/class/net/${ns_dev}/gro_flush_timeout"
15	echo 1 > "/sys/class/net/${ns_dev}/napi_defer_hard_irqs"
16	ip link set dev "${ns_dev}" netns "${ns_name}" mtu 65535
17	ip -netns "${ns_name}" link set dev "${ns_dev}" up
18
19	ip netns exec "${ns_name}" ethtool -K "${ns_dev}" gro on tso off
20}
21
22setup_ns() {
23	# Set up server_ns namespace and client_ns namespace
24	ip link add name server type veth peer name client
25
26	setup_veth_ns "${dev}" ${server_ns} server "${SERVER_MAC}"
27	setup_veth_ns "${dev}" ${client_ns} client "${CLIENT_MAC}"
28}
29
30cleanup_ns() {
31	local ns_name
32
33	for ns_name in ${client_ns} ${server_ns}; do
34		[[ -e /var/run/netns/"${ns_name}" ]] && ip netns del "${ns_name}"
35	done
36}
37
38setup() {
39	# no global init setup step needed
40	:
41}
42
43cleanup() {
44	cleanup_ns
45}
46