diff options
Diffstat (limited to 'contrib/scripts/netjail/netjail_setup_internet.sh')
-rwxr-xr-x | contrib/scripts/netjail/netjail_setup_internet.sh | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/contrib/scripts/netjail/netjail_setup_internet.sh b/contrib/scripts/netjail/netjail_setup_internet.sh index d99709555..2d448168a 100755 --- a/contrib/scripts/netjail/netjail_setup_internet.sh +++ b/contrib/scripts/netjail/netjail_setup_internet.sh | |||
@@ -9,16 +9,19 @@ export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | |||
9 | LOCAL_M=$1 | 9 | LOCAL_M=$1 |
10 | GLOBAL_N=$2 | 10 | GLOBAL_N=$2 |
11 | 11 | ||
12 | # TODO: stunserver? ..and globally known peer? | 12 | # TODO: globally known peer? |
13 | 13 | ||
14 | shift 2 | 14 | shift 2 |
15 | 15 | ||
16 | netjail_check $(($LOCAL_M * $GLOBAL_N)) | 16 | netjail_check $(($LOCAL_M * $GLOBAL_N)) |
17 | 17 | ||
18 | # Starts optionally 'stunserver' on "92.68.150.$(($GLOBAL_N + 1))": | ||
19 | STUN=$(netjail_opt '--stun' $@) | ||
20 | |||
18 | LOCAL_GROUP="192.168.15" | 21 | LOCAL_GROUP="192.168.15" |
19 | GLOBAL_GROUP="92.68.150" | 22 | GLOBAL_GROUP="92.68.150" |
20 | 23 | ||
21 | echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/24]" | 24 | echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/24, stun: $STUN]" |
22 | 25 | ||
23 | NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M) | 26 | NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M) |
24 | 27 | ||
@@ -53,6 +56,22 @@ for N in $(seq $GLOBAL_N); do | |||
53 | done | 56 | done |
54 | done | 57 | done |
55 | 58 | ||
59 | WAITING="" | ||
60 | KILLING="" | ||
61 | |||
62 | if [ $STUN -gt 0 ]; then | ||
63 | shift 1 | ||
64 | |||
65 | S=$(($GLOBAL_N + 1)) | ||
66 | STUN_NODE=$(netjail_print_name "S" $S) | ||
67 | |||
68 | netjail_node $STUN_NODE | ||
69 | netjail_node_link_bridge $STUN_NODE $NETWORK_NET "$GLOBAL_GROUP.$S" 24 | ||
70 | |||
71 | netjail_node_exec $STUN_NODE 0 1 stunserver & | ||
72 | KILLING="$!" | ||
73 | fi | ||
74 | |||
56 | for N in $(seq $GLOBAL_N); do | 75 | for N in $(seq $GLOBAL_N); do |
57 | for M in $(seq $LOCAL_M); do | 76 | for M in $(seq $LOCAL_M); do |
58 | NODE=$(netjail_print_name "N" $N $M) | 77 | NODE=$(netjail_print_name "N" $N $M) |
@@ -62,11 +81,21 @@ for N in $(seq $GLOBAL_N); do | |||
62 | FD_Y=$(($INDEX * 2 + 3 + 1)) | 81 | FD_Y=$(($INDEX * 2 + 3 + 1)) |
63 | 82 | ||
64 | netjail_node_exec $NODE $FD_X $FD_Y $@ & | 83 | netjail_node_exec $NODE $FD_X $FD_Y $@ & |
84 | WAITING="$! $WAITING" | ||
65 | done | 85 | done |
66 | done | 86 | done |
67 | 87 | ||
88 | for PID in $WAITING; do wait $PID; done | ||
89 | for PID in $KILLING; do kill $PID; done | ||
68 | wait | 90 | wait |
69 | 91 | ||
92 | if [ $STUN -gt 0 ]; then | ||
93 | STUN_NODE=$(netjail_print_name "S" $(($GLOBAL_N + 1))) | ||
94 | |||
95 | netjail_node_unlink_bridge $STUN_NODE $NETWORK_NET | ||
96 | netjail_node_clear $STUN_NODE | ||
97 | fi | ||
98 | |||
70 | for N in $(seq $GLOBAL_N); do | 99 | for N in $(seq $GLOBAL_N); do |
71 | for M in $(seq $LOCAL_M); do | 100 | for M in $(seq $LOCAL_M); do |
72 | netjail_node_clear $(netjail_print_name "N" $N $M) | 101 | netjail_node_clear $(netjail_print_name "N" $N $M) |