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