#!/bin/bash if [ $UID -ne 0 ] then echo "You must be root to run this test script" exit 0 fi # / c1 # /- c2 # srv ----- br -- c3 # \- c4 start () { NUM_CLIENTS=3 ip netns add srv ip netns add br ip netns add c1 ip netns add c2 ip netns add c3 ip netns add c4 ip netns add c5 ip netns add c6 ip netns add c7 ip netns add c8 ip netns add c9 ip netns add c10 ip netns add c11 ip netns add c12 ip netns add c13 ip netns add c14 ip netns add c15 ip netns add c16 ip netns add c17 ip netns add c18 ip link add veth0 netns srv type veth peer name veth0 netns br ip link add veth1 netns br type veth peer name veth0 netns c1 ip link add veth2 netns br type veth peer name veth0 netns c2 ip link add veth3 netns br type veth peer name veth0 netns c3 ip link add veth4 netns br type veth peer name veth0 netns c4 ip link add veth5 netns br type veth peer name veth0 netns c5 ip link add veth6 netns br type veth peer name veth0 netns c6 ip link add veth7 netns br type veth peer name veth0 netns c7 ip link add veth8 netns br type veth peer name veth0 netns c8 ip link add veth9 netns br type veth peer name veth0 netns c9 ip link add veth10 netns br type veth peer name veth0 netns c10 ip link add veth11 netns br type veth peer name veth0 netns c11 ip link add veth12 netns br type veth peer name veth0 netns c12 ip link add veth13 netns br type veth peer name veth0 netns c13 ip link add veth14 netns br type veth peer name veth0 netns c14 ip link add veth15 netns br type veth peer name veth0 netns c15 ip link add veth16 netns br type veth peer name veth0 netns c16 ip link add veth17 netns br type veth peer name veth0 netns c17 ip link add veth18 netns br type veth peer name veth0 netns c18 ip -net br link set up dev veth0 ip -net br link set up dev veth1 ip -net br link set up dev veth2 ip -net br link set up dev veth3 ip -net br link set up dev veth4 ip -net br link set up dev veth5 ip -net br link set up dev veth6 ip -net br link set up dev veth7 ip -net br link set up dev veth8 ip -net br link set up dev veth9 ip -net br link set up dev veth10 ip -net br link set up dev veth11 ip -net br link set up dev veth12 ip -net br link set up dev veth13 ip -net br link set up dev veth14 ip -net br link set up dev veth15 ip -net br link set up dev veth16 ip -net br link set up dev veth17 ip -net br link set up dev veth18 ip -net br link add name br0 type bridge ip -net br link set dev veth0 master br0 ip -net br link set dev veth1 master br0 ip -net br link set dev veth2 master br0 ip -net br link set dev veth3 master br0 ip -net br link set dev veth4 master br0 ip -net br link set dev veth5 master br0 ip -net br link set dev veth6 master br0 ip -net br link set dev veth7 master br0 ip -net br link set dev veth8 master br0 ip -net br link set dev veth9 master br0 ip -net br link set dev veth10 master br0 ip -net br link set dev veth11 master br0 ip -net br link set dev veth12 master br0 ip -net br link set dev veth13 master br0 ip -net br link set dev veth14 master br0 ip -net br link set dev veth15 master br0 ip -net br link set dev veth16 master br0 ip -net br link set dev veth17 master br0 ip -net br link set dev veth18 master br0 ip -net br link set up dev br0 ip -net srv addr add 10.141.10.1/24 dev veth0 ip -net srv link set up dev veth0 ip netns exec srv .././tiptorrent --max-clients $NUM_CLIENTS --redirect --root . & ip -net c1 addr add 10.141.10.2/24 dev veth0 ip -net c1 link set up dev veth0 ip netns exec c1 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c2 addr add 10.141.10.3/24 dev veth0 ip -net c2 link set up dev veth0 ip netns exec c2 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c3 addr add 10.141.10.4/24 dev veth0 ip -net c3 link set up dev veth0 ip netns exec c3 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c4 addr add 10.141.10.5/24 dev veth0 ip -net c4 link set up dev veth0 ip netns exec c4 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c5 addr add 10.141.10.6/24 dev veth0 ip -net c5 link set up dev veth0 ip netns exec c5 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c6 addr add 10.141.10.7/24 dev veth0 ip -net c6 link set up dev veth0 ip netns exec c6 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c7 addr add 10.141.10.8/24 dev veth0 ip -net c7 link set up dev veth0 ip netns exec c7 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c8 addr add 10.141.10.9/24 dev veth0 ip -net c8 link set up dev veth0 ip netns exec c8 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c9 addr add 10.141.10.10/24 dev veth0 ip -net c9 link set up dev veth0 ip netns exec c9 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c10 addr add 10.141.10.11/24 dev veth0 ip -net c10 link set up dev veth0 ip netns exec c10 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c11 addr add 10.141.10.12/24 dev veth0 ip -net c11 link set up dev veth0 ip netns exec c11 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c12 addr add 10.141.10.13/24 dev veth0 ip -net c12 link set up dev veth0 ip netns exec c12 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c13 addr add 10.141.10.14/24 dev veth0 ip -net c13 link set up dev veth0 ip netns exec c13 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c14 addr add 10.141.10.15/24 dev veth0 ip -net c14 link set up dev veth0 ip netns exec c14 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c15 addr add 10.141.10.16/24 dev veth0 ip -net c15 link set up dev veth0 ip netns exec c15 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c16 addr add 10.141.10.17/24 dev veth0 ip -net c16 link set up dev veth0 ip netns exec c16 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c17 addr add 10.141.10.18/24 dev veth0 ip -net c17 link set up dev veth0 ip netns exec c17 .././tiptorrent --max-clients $NUM_CLIENTS & ip -net c18 addr add 10.141.10.19/24 dev veth0 ip -net c18 link set up dev veth0 ip netns exec c18 .././tiptorrent --max-clients $NUM_CLIENTS & } stop () { ip netns del srv ip netns del br ip netns del c1 ip netns del c2 ip netns del c3 ip netns del c4 ip netns del c5 ip netns del c6 ip netns del c7 ip netns del c8 ip netns del c9 ip netns del c10 ip netns del c11 ip netns del c12 ip netns del c13 ip netns del c14 ip netns del c15 ip netns del c16 ip netns del c17 ip netns del c18 killall -15 tiptorrent } case $1 in start) start ;; stop) stop ;; *) echo "$0 [start|stop]" ;; esac exit 0