aboutsummaryrefslogtreecommitdiff
path: root/contrib/scripts/netjail/netjail_setup_internet.sh
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/scripts/netjail/netjail_setup_internet.sh')
-rwxr-xr-xcontrib/scripts/netjail/netjail_setup_internet.sh81
1 files changed, 81 insertions, 0 deletions
diff --git a/contrib/scripts/netjail/netjail_setup_internet.sh b/contrib/scripts/netjail/netjail_setup_internet.sh
new file mode 100755
index 000000000..d99709555
--- /dev/null
+++ b/contrib/scripts/netjail/netjail_setup_internet.sh
@@ -0,0 +1,81 @@
1#!/bin/sh
2. "./netjail_core.sh"
3
4set -eu
5set -x
6
7export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
8
9LOCAL_M=$1
10GLOBAL_N=$2
11
12# TODO: stunserver? ..and globally known peer?
13
14shift 2
15
16netjail_check $(($LOCAL_M * $GLOBAL_N))
17
18LOCAL_GROUP="192.168.15"
19GLOBAL_GROUP="92.68.150"
20
21echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/24]"
22
23NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M)
24
25netjail_bridge $NETWORK_NET
26
27for N in $(seq $GLOBAL_N); do
28 ROUTER=$(netjail_print_name "R" $N)
29
30 netjail_node $ROUTER
31 netjail_node_link_bridge $ROUTER $NETWORK_NET "$GLOBAL_GROUP.$N" 24
32
33 ROUTER_NET=$(netjail_print_name "r" $N)
34
35 netjail_bridge $ROUTER_NET
36
37 for M in $(seq $LOCAL_M); do
38 NODE=$(netjail_print_name "N" $N $M)
39
40 netjail_node $NODE
41 netjail_node_link_bridge $NODE $ROUTER_NET "$LOCAL_GROUP.$M" 24
42 done
43
44 ROUTER_ADDR="$LOCAL_GROUP.$(($LOCAL_M+1))"
45
46 netjail_node_link_bridge $ROUTER $ROUTER_NET $ROUTER_ADDR 24
47 netjail_node_add_nat $ROUTER $ROUTER_ADDR 24
48
49 for M in $(seq $LOCAL_M); do
50 NODE=$(netjail_print_name "N" $N $M)
51
52 netjail_node_add_default $NODE $ROUTER_ADDR
53 done
54done
55
56for N in $(seq $GLOBAL_N); do
57 for M in $(seq $LOCAL_M); do
58 NODE=$(netjail_print_name "N" $N $M)
59 INDEX=$(($LOCAL_M * ($N - 1) + $M - 1))
60
61 FD_X=$(($INDEX * 2 + 3 + 0))
62 FD_Y=$(($INDEX * 2 + 3 + 1))
63
64 netjail_node_exec $NODE $FD_X $FD_Y $@ &
65 done
66done
67
68wait
69
70for N in $(seq $GLOBAL_N); do
71 for M in $(seq $LOCAL_M); do
72 netjail_node_clear $(netjail_print_name "N" $N $M)
73 done
74
75 netjail_bridge_clear $(netjail_print_name "r" $N)
76 netjail_node_clear $(netjail_print_name "R" $N)
77done
78
79netjail_bridge_clear $NETWORK_NET
80
81echo "Done"