69 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4NR_FILES=327685readonly NETNS="ns-$(mktemp -u XXXXXX)"6 7# default values8port=4439addr_v6="2001:0db8:0:f101::1"10addr_v4="10.8.8.8"11use_v6=true12addr=""13 14usage() {15 echo "Usage: $0 [-6 | -4] [-p port] [-a address]"16 echo -e "\t6: use ipv6"17 echo -e "\t4: use ipv4"18 echo -e "\tport: Port number"19 echo -e "\taddress: ip address"20}21 22while getopts "ha:p:64" opt; do23 case ${opt} in24 h)25 usage $026 exit 027 ;;28 a) addr=$OPTARG;;29 p)30 port=$OPTARG;;31 6)32 use_v6=true;;33 4)34 use_v6=false;;35 esac36done37 38setup() {39 ip netns add "${NETNS}"40 ip -netns "${NETNS}" link add veth0 type veth peer name veth141 ip -netns "${NETNS}" link set lo up42 ip -netns "${NETNS}" link set veth0 up43 ip -netns "${NETNS}" link set veth1 up44 45 if [[ "$use_v6" == true ]]; then46 ip -netns "${NETNS}" addr add $addr_v6 nodad dev veth047 else48 ip -netns "${NETNS}" addr add $addr_v4 dev lo49 fi50}51 52cleanup() {53 ip netns del "${NETNS}"54}55 56if [[ "$addr" != "" ]]; then57 addr_v4=$addr;58 addr_v6=$addr;59fi60setup61if [[ "$use_v6" == true ]] ; then62 ip netns exec "${NETNS}" sh -c \63 "ulimit -n ${NR_FILES};./bind_bhash ${port} ipv6 ${addr_v6}"64else65 ip netns exec "${NETNS}" sh -c \66 "ulimit -n ${NR_FILES};./bind_bhash ${port} ipv4 ${addr_v4}"67fi68cleanup69