| @@ -0,0 +1,79 @@ | |||||
| #!/usr/bin/bash | |||||
| # | |||||
| NATNET=172.16.0.0/16 | |||||
| NUMOFNS=5 | |||||
| alias IPN='sudo ip net' | |||||
| alias IPL='sudo ip link' | |||||
| alias IPA='sudo ip addr add' | |||||
| peers='tcp://188.40.132.242:9651 tcp://65.21.231.58:9651' | |||||
| function IPNA() { | |||||
| local name=$1 | |||||
| shift | |||||
| sudo ip -n ${name} addr add $@ | |||||
| } | |||||
| function IPNL() { | |||||
| local name=$1 | |||||
| shift | |||||
| sudo ip -n ${name} link $@ | |||||
| } | |||||
| function IPNR() { | |||||
| local name=$1 | |||||
| shift | |||||
| local defrtr=${1/\/24/} | |||||
| shift | |||||
| sudo ip -n ${name} route add default via ${defrtr} | |||||
| } | |||||
| function createns() { | |||||
| local iname=$1 | |||||
| local in_ip=$2 | |||||
| local out_ip=$3 | |||||
| local name=n-${iname} | |||||
| IPN add $name | |||||
| IPL add in_${iname} type veth peer name out_${iname} | |||||
| IPL set in_${iname} netns ${name} | |||||
| IPNL ${name} set lo up | |||||
| IPNL ${name} set in_${iname} up | |||||
| IPL set out_${iname} up | |||||
| IPNA ${name} ${in_ip} dev in_${iname} | |||||
| IPA ${out_ip} dev out_${iname} | |||||
| IPNR ${name} ${out_ip} | |||||
| # start mycelium, relying on local discovery | |||||
| nohup sudo ip netns exec ${name} ./mycelium --key-file ${name}.bin --disable-peer-discovery --api-addr ${in_ip/\/24/}:8989 --peers ${peers} > ${iname}.out & | |||||
| } | |||||
| function dropns() { | |||||
| local iname=$1 | |||||
| local name=n-${iname} | |||||
| IPL del out_${iname} | |||||
| IPN del ${name} | |||||
| } | |||||
| function doit() { | |||||
| nohup sudo ./mycelium --key-file host.bin --api-addr 127.0.0.1:8989 --peers ${peers}>host.out & | |||||
| for i in $(seq 1 $NUMOFNS); do | |||||
| createns ${i} 172.16.${i}.2/24 172.16.${i}.1/24 | |||||
| done | |||||
| } | |||||
| function dropit() { | |||||
| sudo pkill -9 mycelium | |||||
| for i in $(seq 1 $NUMOFNS); do | |||||
| dropns ${i} | |||||
| done | |||||
| } | |||||
| function cleanit() { | |||||
| dropit | |||||
| sudo rm ./*.bin | |||||
| sudo rm ./*.out | |||||
| } | |||||
| function showit() { | |||||
| sudo killall -USR1 mycelium | |||||
| } | |||||
| function getmycelium(){ | |||||
| wget https://github.com/threefoldtech/mycelium/releases/latest/download/mycelium-x86_64-unknown-linux-musl.tar.gz \ | |||||
| -O- | gunzip -c | tar xvf - -C ${PWD} | |||||
| } | |||||