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