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.sh105
1 files changed, 49 insertions, 56 deletions
diff --git a/contrib/scripts/netjail/netjail_setup_internet.sh b/contrib/scripts/netjail/netjail_setup_internet.sh
index 6ae047274..e3880783f 100755
--- a/contrib/scripts/netjail/netjail_setup_internet.sh
+++ b/contrib/scripts/netjail/netjail_setup_internet.sh
@@ -1,4 +1,5 @@
1#!/bin/sh 1#!/bin/sh
2
2. "./netjail_core.sh" 3. "./netjail_core.sh"
3 4
4set -eu 5set -eu
@@ -6,6 +7,7 @@ set -x
6 7
7export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 8export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
8 9
10PREFIX=$PPID
9LOCAL_M=$1 11LOCAL_M=$1
10GLOBAL_N=$2 12GLOBAL_N=$2
11 13
@@ -14,11 +16,14 @@ shift 2
14netjail_check $(($LOCAL_M * $GLOBAL_N)) 16netjail_check $(($LOCAL_M * $GLOBAL_N))
15 17
16# Starts optionally an amount of nodes without NAT starting with "92.68.151.1" 18# Starts optionally an amount of nodes without NAT starting with "92.68.151.1"
17KNOWN=$(netjail_opt '--known' $@) 19netjail_opt '--known' $@
18KNOWN_NUM=$(netjail_opts '--known' 0 $@) 20KNOWN=$RESULT
21netjail_opts '--known' 0 $@
22KNOWN_NUM=$RESULT
19 23
20# Starts optionally 'stunserver' on "92.68.150.254": 24# Starts optionally 'stunserver' on "92.68.150.254":
21STUN=$(netjail_opt '--stun' $@) 25netjail_opt '--stun' $@
26STUN=$RESULT
22 27
23if [ $KNOWN -gt 0 ]; then 28if [ $KNOWN -gt 0 ]; then
24 shift 2 29 shift 2
@@ -32,8 +37,6 @@ if [ $STUN -gt 0 ]; then
32 netjail_check_bin stunserver 37 netjail_check_bin stunserver
33 38
34 shift 1 39 shift 1
35
36 STUN_NODE=$(netjail_print_name "S" 254)
37fi 40fi
38 41
39netjail_check_bin $1 42netjail_check_bin $1
@@ -45,43 +48,42 @@ KNOWN_GROUP="92.68.151"
45CLEANUP=0 48CLEANUP=0
46echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/16, stun: $STUN]" 49echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/16, stun: $STUN]"
47 50
48NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M) 51netjail_bridge
49 52NETWORK_NET=$RESULT
50netjail_bridge $NETWORK_NET
51 53
52for X in $(seq $KNOWN); do 54for X in $(seq $KNOWN); do
53 KNOWN_NODE=$(netjail_print_name "K" $X) 55 netjail_node
54 56 KNOWN_NODES[$X]=$RESULT
55 netjail_node $KNOWN_NODE 57 netjail_node_link_bridge ${KNOWN_NODES[$X]} $NETWORK_NET "$KNOWN_GROUP.$X" 16
56 netjail_node_link_bridge $KNOWN_NODE $NETWORK_NET "$KNOWN_GROUP.$X" 16 58 KNOWN_LINKS[$X]=$RESULT
57done 59done
58 60
59for N in $(seq $GLOBAL_N); do 61declare -A NODES
60 ROUTER=$(netjail_print_name "R" $N) 62declare -A NODE_LINKS
61
62 netjail_node $ROUTER
63 netjail_node_link_bridge $ROUTER $NETWORK_NET "$GLOBAL_GROUP.$N" 16
64 63
65 ROUTER_NET=$(netjail_print_name "r" $N) 64for N in $(seq $GLOBAL_N); do
66 65 netjail_node
67 netjail_bridge $ROUTER_NET 66 ROUTERS[$N]=$RESULT
67 netjail_node_link_bridge ${ROUTERS[$N]} $NETWORK_NET "$GLOBAL_GROUP.$N" 16
68 NETWORK_LINKS[$N]=$RESULT
69 netjail_bridge
70 ROUTER_NETS[$N]=$RESULT
68 71
69 for M in $(seq $LOCAL_M); do 72 for M in $(seq $LOCAL_M); do
70 NODE=$(netjail_print_name "N" $N $M) 73 netjail_node
71 74 NODES[$N,$M]=$RESULT
72 netjail_node $NODE 75 netjail_node_link_bridge ${NODES[$N,$M]} ${ROUTER_NETS[$N]} "$LOCAL_GROUP.$M" 24
73 netjail_node_link_bridge $NODE $ROUTER_NET "$LOCAL_GROUP.$M" 24 76 NODE_LINKS[$N,$M]=$RESULT
74 done 77 done
75 78
76 ROUTER_ADDR="$LOCAL_GROUP.$(($LOCAL_M+1))" 79 ROUTER_ADDR="$LOCAL_GROUP.$(($LOCAL_M+1))"
77 80 netjail_node_link_bridge ${ROUTERS[$N]} ${ROUTER_NETS[$N]} $ROUTER_ADDR 24
78 netjail_node_link_bridge $ROUTER $ROUTER_NET $ROUTER_ADDR 24 81 ROUTER_LINKS[$N]=$RESULT
79 netjail_node_add_nat $ROUTER $ROUTER_ADDR 24 82
83 netjail_node_add_nat ${ROUTERS[$N]} $ROUTER_ADDR 24
80 84
81 for M in $(seq $LOCAL_M); do 85 for M in $(seq $LOCAL_M); do
82 NODE=$(netjail_print_name "N" $N $M) 86 netjail_node_add_default ${NODES[$N,$M]} $ROUTER_ADDR
83
84 netjail_node_add_default $NODE $ROUTER_ADDR
85 done 87 done
86done 88done
87 89
@@ -89,67 +91,58 @@ WAITING=""
89KILLING="" 91KILLING=""
90 92
91if [ $STUN -gt 0 ]; then 93if [ $STUN -gt 0 ]; then
92 netjail_node $STUN_NODE 94 netjail_node
95 STUN_NODE=$RESULT
93 netjail_node_link_bridge $STUN_NODE $NETWORK_NET "$GLOBAL_GROUP.254" 16 96 netjail_node_link_bridge $STUN_NODE $NETWORK_NET "$GLOBAL_GROUP.254" 16
97 STUN_LINK=$RESULT
94 98
95 netjail_node_exec $STUN_NODE 0 1 stunserver & 99 netjail_node_exec $STUN_NODE 0 1 stunserver &
96 KILLING="$!" 100 KILLING="$!"
97fi 101fi
98 102
99for X in $(seq $KNOWN); do 103for X in $(seq $KNOWN); do
100 KNOWN_NODE=$(netjail_print_name "K" $X)
101 INDEX=$(($X - 1)) 104 INDEX=$(($X - 1))
102 105
103 FD_X=$(($INDEX * 2 + 3 + 0)) 106 FD_X=$(($INDEX * 2 + 3 + 0))
104 FD_Y=$(($INDEX * 2 + 3 + 1)) 107 FD_Y=$(($INDEX * 2 + 3 + 1))
105 108
106 netjail_node_exec $KNOWN_NODE $FD_X $FD_Y $@ & 109 netjail_node_exec ${KNOWN_NODES[$X]} $FD_X $FD_Y $@ &
107 WAITING="$! $WAITING" 110 WAITING="$! $WAITING"
108done 111done
109 112
110for N in $(seq $GLOBAL_N); do 113for N in $(seq $GLOBAL_N); do
111 for M in $(seq $LOCAL_M); do 114 for M in $(seq $LOCAL_M); do
112 NODE=$(netjail_print_name "N" $N $M)
113 INDEX=$(($LOCAL_M * ($N - 1) + $M - 1 + $KNOWN)) 115 INDEX=$(($LOCAL_M * ($N - 1) + $M - 1 + $KNOWN))
114 116
115 FD_X=$(($INDEX * 2 + 3 + 0)) 117 FD_X=$(($INDEX * 2 + 3 + 0))
116 FD_Y=$(($INDEX * 2 + 3 + 1)) 118 FD_Y=$(($INDEX * 2 + 3 + 1))
117 119
118 netjail_node_exec $NODE $FD_X $FD_Y $@ & 120 netjail_node_exec ${NODES[$N,$M]} $FD_X $FD_Y $@ &
119 WAITING="$! $WAITING" 121 WAITING="$! $WAITING"
120 done 122 done
121done 123done
122 124
123cleanup() { 125cleanup() {
124 if [ $STUN -gt 0 ]; then 126 if [ $STUN -gt 0 ]; then
125 STUN_NODE=$(netjail_print_name "S" 254) 127 netjail_node_unlink_bridge $STUN_LINK
126
127 netjail_node_unlink_bridge $STUN_NODE $NETWORK_NET
128 netjail_node_clear $STUN_NODE 128 netjail_node_clear $STUN_NODE
129 fi 129 fi
130 130
131 for X in $(seq $KNOWN); do 131 for X in $(seq $KNOWN); do
132 KNOWN_NODE=$(netjail_print_name "K" $X) 132 netjail_node_unlink_bridge ${KNOWN_LINKS[$X]}
133 133 netjail_node_clear ${KNOWN_NODES[$X]}
134 netjail_node_unlink_bridge $KNOWN_NODE $NETWORK_NET
135 netjail_node_clear $KNOWN_NODE
136 done 134 done
137 135
138 for N in $(seq $GLOBAL_N); do 136 for N in $(seq $GLOBAL_N); do
139 ROUTER_NET=$(netjail_print_name "r" $N)
140
141 for M in $(seq $LOCAL_M); do 137 for M in $(seq $LOCAL_M); do
142 NODE=$(netjail_print_name "N" $N $M) 138 netjail_node_unlink_bridge ${NODE_LINKS[$N,$M]}
143 139 netjail_node_clear ${NODES[$N,$M]}
144 netjail_node_unlink_bridge $NODE $ROUTER_NET
145 netjail_node_clear $NODE
146 done 140 done
147 141
148 ROUTER=$(netjail_print_name "R" $N) 142 netjail_node_unlink_bridge ${ROUTER_LINKS[$N]}
149 143 netjail_bridge_clear ${ROUTER_NETS[$N]}
150 netjail_bridge_clear $ROUTER_NET 144 netjail_node_unlink_bridge ${NETWORK_LINKS[$N]}
151 netjail_node_unlink_bridge $ROUTER $NETWORK_NET 145 netjail_node_clear ${ROUTERS[$N]}
152 netjail_node_clear $ROUTER
153 done 146 done
154 147
155 netjail_bridge_clear $NETWORK_NET 148 netjail_bridge_clear $NETWORK_NET
@@ -162,7 +155,7 @@ trapped_cleanup() {
162 cleanup 155 cleanup
163} 156}
164 157
165trap 'trapped_cleanup' 2 158trap 'trapped_cleanup' ERR
166 159
167netjail_waitall $WAITING 160netjail_waitall $WAITING
168netjail_killall $KILLING 161netjail_killall $KILLING