1*4882a593Smuzhiyun#!/bin/sh 2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 3*4882a593Smuzhiyun# 4*4882a593Smuzhiyun# Execute a subprocess in a network namespace 5*4882a593Smuzhiyun 6*4882a593Smuzhiyunset -e 7*4882a593Smuzhiyun 8*4882a593Smuzhiyunreadonly NETNS="ns-$(mktemp -u XXXXXX)" 9*4882a593Smuzhiyun 10*4882a593Smuzhiyunsetup() { 11*4882a593Smuzhiyun ip netns add "${NETNS}" 12*4882a593Smuzhiyun ip -netns "${NETNS}" link set lo up 13*4882a593Smuzhiyun} 14*4882a593Smuzhiyun 15*4882a593Smuzhiyuncleanup() { 16*4882a593Smuzhiyun ip netns del "${NETNS}" 17*4882a593Smuzhiyun} 18*4882a593Smuzhiyun 19*4882a593Smuzhiyuntrap cleanup EXIT 20*4882a593Smuzhiyunsetup 21*4882a593Smuzhiyun 22*4882a593Smuzhiyunip netns exec "${NETNS}" "$@" 23*4882a593Smuzhiyunexit "$?" 24