1c35ecb95SJoanne Koong#!/bin/bash 2c35ecb95SJoanne Koong# SPDX-License-Identifier: GPL-2.0 3c35ecb95SJoanne Koong 4c35ecb95SJoanne KoongNR_FILES=32768 5*ced33ca0SJuntong Dengreadonly NETNS="ns-$(mktemp -u XXXXXX)" 6c35ecb95SJoanne Koong 7c35ecb95SJoanne Koong# default values 8c35ecb95SJoanne Koongport=443 9c35ecb95SJoanne Koongaddr_v6="2001:0db8:0:f101::1" 10c35ecb95SJoanne Koongaddr_v4="10.8.8.8" 11c35ecb95SJoanne Koonguse_v6=true 12c35ecb95SJoanne Koongaddr="" 13c35ecb95SJoanne Koong 14c35ecb95SJoanne Koongusage() { 15c35ecb95SJoanne Koong echo "Usage: $0 [-6 | -4] [-p port] [-a address]" 16c35ecb95SJoanne Koong echo -e "\t6: use ipv6" 17c35ecb95SJoanne Koong echo -e "\t4: use ipv4" 18c35ecb95SJoanne Koong echo -e "\tport: Port number" 19c35ecb95SJoanne Koong echo -e "\taddress: ip address" 20c35ecb95SJoanne Koong} 21c35ecb95SJoanne Koong 22c35ecb95SJoanne Koongwhile getopts "ha:p:64" opt; do 23c35ecb95SJoanne Koong case ${opt} in 24c35ecb95SJoanne Koong h) 25c35ecb95SJoanne Koong usage $0 26c35ecb95SJoanne Koong exit 0 27c35ecb95SJoanne Koong ;; 28c35ecb95SJoanne Koong a) addr=$OPTARG;; 29c35ecb95SJoanne Koong p) 30c35ecb95SJoanne Koong port=$OPTARG;; 31c35ecb95SJoanne Koong 6) 32c35ecb95SJoanne Koong use_v6=true;; 33c35ecb95SJoanne Koong 4) 34c35ecb95SJoanne Koong use_v6=false;; 35c35ecb95SJoanne Koong esac 36c35ecb95SJoanne Koongdone 37c35ecb95SJoanne Koong 38c35ecb95SJoanne Koongsetup() { 39*ced33ca0SJuntong Deng ip netns add "${NETNS}" 40*ced33ca0SJuntong Deng ip -netns "${NETNS}" link add veth0 type veth peer name veth1 41*ced33ca0SJuntong Deng ip -netns "${NETNS}" link set lo up 42*ced33ca0SJuntong Deng ip -netns "${NETNS}" link set veth0 up 43*ced33ca0SJuntong Deng ip -netns "${NETNS}" link set veth1 up 44*ced33ca0SJuntong Deng 45c35ecb95SJoanne Koong if [[ "$use_v6" == true ]]; then 46*ced33ca0SJuntong Deng ip -netns "${NETNS}" addr add $addr_v6 nodad dev veth0 47c35ecb95SJoanne Koong else 48*ced33ca0SJuntong Deng ip -netns "${NETNS}" addr add $addr_v4 dev lo 49c35ecb95SJoanne Koong fi 50c35ecb95SJoanne Koong} 51c35ecb95SJoanne Koong 52c35ecb95SJoanne Koongcleanup() { 53*ced33ca0SJuntong Deng ip netns del "${NETNS}" 54c35ecb95SJoanne Koong} 55c35ecb95SJoanne Koong 56c35ecb95SJoanne Koongif [[ "$addr" != "" ]]; then 57c35ecb95SJoanne Koong addr_v4=$addr; 58c35ecb95SJoanne Koong addr_v6=$addr; 59c35ecb95SJoanne Koongfi 60c35ecb95SJoanne Koongsetup 61c35ecb95SJoanne Koongif [[ "$use_v6" == true ]] ; then 62*ced33ca0SJuntong Deng ip netns exec "${NETNS}" sh -c \ 63*ced33ca0SJuntong Deng "ulimit -n ${NR_FILES};./bind_bhash ${port} ipv6 ${addr_v6}" 64c35ecb95SJoanne Koongelse 65*ced33ca0SJuntong Deng ip netns exec "${NETNS}" sh -c \ 66*ced33ca0SJuntong Deng "ulimit -n ${NR_FILES};./bind_bhash ${port} ipv4 ${addr_v4}" 67c35ecb95SJoanne Koongfi 68c35ecb95SJoanne Koongcleanup 69