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.sh78
1 files changed, 67 insertions, 11 deletions
diff --git a/contrib/scripts/netjail/netjail_setup_internet.sh b/contrib/scripts/netjail/netjail_setup_internet.sh
index d99709555..de8ef8f15 100755
--- a/contrib/scripts/netjail/netjail_setup_internet.sh
+++ b/contrib/scripts/netjail/netjail_setup_internet.sh
@@ -9,16 +9,30 @@ export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
9LOCAL_M=$1 9LOCAL_M=$1
10GLOBAL_N=$2 10GLOBAL_N=$2
11 11
12# TODO: stunserver? ..and globally known peer? 12# TODO: globally known peer?
13 13
14shift 2 14shift 2
15 15
16netjail_check $(($LOCAL_M * $GLOBAL_N)) 16netjail_check $(($LOCAL_M * $GLOBAL_N))
17 17
18# Starts optionally 'stunserver' on "92.68.150.$(($GLOBAL_N + 1))":
19STUN=$(netjail_opt '--stun' $@)
20
21if [ $STUN -gt 0 ]; then
22 netjail_check_bin stunserver
23
24 shift 1
25
26 STUN_NODE=$(netjail_print_name "S" 254)
27fi
28
29netjail_check_bin $1
30
18LOCAL_GROUP="192.168.15" 31LOCAL_GROUP="192.168.15"
19GLOBAL_GROUP="92.68.150" 32GLOBAL_GROUP="92.68.150"
20 33
21echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/24]" 34CLEANUP=0
35echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/24, stun: $STUN]"
22 36
23NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M) 37NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M)
24 38
@@ -53,6 +67,17 @@ for N in $(seq $GLOBAL_N); do
53 done 67 done
54done 68done
55 69
70WAITING=""
71KILLING=""
72
73if [ $STUN -gt 0 ]; then
74 netjail_node $STUN_NODE
75 netjail_node_link_bridge $STUN_NODE $NETWORK_NET "$GLOBAL_GROUP.254" 24
76
77 netjail_node_exec $STUN_NODE 0 1 stunserver &
78 KILLING="$!"
79fi
80
56for N in $(seq $GLOBAL_N); do 81for N in $(seq $GLOBAL_N); do
57 for M in $(seq $LOCAL_M); do 82 for M in $(seq $LOCAL_M); do
58 NODE=$(netjail_print_name "N" $N $M) 83 NODE=$(netjail_print_name "N" $N $M)
@@ -62,20 +87,51 @@ for N in $(seq $GLOBAL_N); do
62 FD_Y=$(($INDEX * 2 + 3 + 1)) 87 FD_Y=$(($INDEX * 2 + 3 + 1))
63 88
64 netjail_node_exec $NODE $FD_X $FD_Y $@ & 89 netjail_node_exec $NODE $FD_X $FD_Y $@ &
90 WAITING="$! $WAITING"
65 done 91 done
66done 92done
67 93
68wait 94cleanup() {
95 if [ $STUN -gt 0 ]; then
96 STUN_NODE=$(netjail_print_name "S" 254)
69 97
70for N in $(seq $GLOBAL_N); do 98 netjail_node_unlink_bridge $STUN_NODE $NETWORK_NET
71 for M in $(seq $LOCAL_M); do 99 netjail_node_clear $STUN_NODE
72 netjail_node_clear $(netjail_print_name "N" $N $M) 100 fi
101
102 for N in $(seq $GLOBAL_N); do
103 ROUTER_NET=$(netjail_print_name "r" $N)
104
105 for M in $(seq $LOCAL_M); do
106 NODE=$(netjail_print_name "N" $N $M)
107
108 netjail_node_unlink_bridge $NODE $ROUTER_NET
109 netjail_node_clear $NODE
110 done
111
112 ROUTER=$(netjail_print_name "R" $N)
113
114 netjail_bridge_clear $ROUTER_NET
115 netjail_node_unlink_bridge $ROUTER $NETWORK_NET
116 netjail_node_clear $ROUTER
73 done 117 done
74
75 netjail_bridge_clear $(netjail_print_name "r" $N)
76 netjail_node_clear $(netjail_print_name "R" $N)
77done
78 118
79netjail_bridge_clear $NETWORK_NET 119 netjail_bridge_clear $NETWORK_NET
120}
121
122trapped_cleanup() {
123 netjail_killall $WAITING
124 netjail_killall $KILLING
125
126 cleanup
127}
128
129trap 'trapped_cleanup' 2
130
131netjail_waitall $WAITING
132netjail_killall $KILLING
133wait
134
135cleanup
80 136
81echo "Done" 137echo "Done"