diff options
Diffstat (limited to 'contrib/scripts/netjail/netjail_setup_internet.sh')
-rwxr-xr-x | contrib/scripts/netjail/netjail_setup_internet.sh | 78 |
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" | |||
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 | |||
21 | if [ $STUN -gt 0 ]; then | ||
22 | netjail_check_bin stunserver | ||
23 | |||
24 | shift 1 | ||
25 | |||
26 | STUN_NODE=$(netjail_print_name "S" 254) | ||
27 | fi | ||
28 | |||
29 | netjail_check_bin $1 | ||
30 | |||
18 | LOCAL_GROUP="192.168.15" | 31 | LOCAL_GROUP="192.168.15" |
19 | GLOBAL_GROUP="92.68.150" | 32 | GLOBAL_GROUP="92.68.150" |
20 | 33 | ||
21 | echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/24]" | 34 | CLEANUP=0 |
35 | echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/24, stun: $STUN]" | ||
22 | 36 | ||
23 | NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M) | 37 | NETWORK_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 |
54 | done | 68 | done |
55 | 69 | ||
70 | WAITING="" | ||
71 | KILLING="" | ||
72 | |||
73 | if [ $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="$!" | ||
79 | fi | ||
80 | |||
56 | for N in $(seq $GLOBAL_N); do | 81 | for 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 |
66 | done | 92 | done |
67 | 93 | ||
68 | wait | 94 | cleanup() { |
95 | if [ $STUN -gt 0 ]; then | ||
96 | STUN_NODE=$(netjail_print_name "S" 254) | ||
69 | 97 | ||
70 | for 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) | ||
77 | done | ||
78 | 118 | ||
79 | netjail_bridge_clear $NETWORK_NET | 119 | netjail_bridge_clear $NETWORK_NET |
120 | } | ||
121 | |||
122 | trapped_cleanup() { | ||
123 | netjail_killall $WAITING | ||
124 | netjail_killall $KILLING | ||
125 | |||
126 | cleanup | ||
127 | } | ||
128 | |||
129 | trap 'trapped_cleanup' 2 | ||
130 | |||
131 | netjail_waitall $WAITING | ||
132 | netjail_killall $KILLING | ||
133 | wait | ||
134 | |||
135 | cleanup | ||
80 | 136 | ||
81 | echo "Done" | 137 | echo "Done" |