brintos

brintos / linux-shallow public Read only

0
0
Text · 1.3 KiB · a28563b Raw
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