diff options
Diffstat (limited to 'contrib/scripts/netjail/netjail_setup_internet.sh')
-rwxr-xr-x | contrib/scripts/netjail/netjail_setup_internet.sh | 105 |
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 | ||
4 | set -eu | 5 | set -eu |
@@ -6,6 +7,7 @@ set -x | |||
6 | 7 | ||
7 | export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | 8 | export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" |
8 | 9 | ||
10 | PREFIX=$PPID | ||
9 | LOCAL_M=$1 | 11 | LOCAL_M=$1 |
10 | GLOBAL_N=$2 | 12 | GLOBAL_N=$2 |
11 | 13 | ||
@@ -14,11 +16,14 @@ shift 2 | |||
14 | netjail_check $(($LOCAL_M * $GLOBAL_N)) | 16 | netjail_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" |
17 | KNOWN=$(netjail_opt '--known' $@) | 19 | netjail_opt '--known' $@ |
18 | KNOWN_NUM=$(netjail_opts '--known' 0 $@) | 20 | KNOWN=$RESULT |
21 | netjail_opts '--known' 0 $@ | ||
22 | KNOWN_NUM=$RESULT | ||
19 | 23 | ||
20 | # Starts optionally 'stunserver' on "92.68.150.254": | 24 | # Starts optionally 'stunserver' on "92.68.150.254": |
21 | STUN=$(netjail_opt '--stun' $@) | 25 | netjail_opt '--stun' $@ |
26 | STUN=$RESULT | ||
22 | 27 | ||
23 | if [ $KNOWN -gt 0 ]; then | 28 | if [ $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) | ||
37 | fi | 40 | fi |
38 | 41 | ||
39 | netjail_check_bin $1 | 42 | netjail_check_bin $1 |
@@ -45,43 +48,42 @@ KNOWN_GROUP="92.68.151" | |||
45 | CLEANUP=0 | 48 | CLEANUP=0 |
46 | echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/16, stun: $STUN]" | 49 | echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/16, stun: $STUN]" |
47 | 50 | ||
48 | NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M) | 51 | netjail_bridge |
49 | 52 | NETWORK_NET=$RESULT | |
50 | netjail_bridge $NETWORK_NET | ||
51 | 53 | ||
52 | for X in $(seq $KNOWN); do | 54 | for 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 |
57 | done | 59 | done |
58 | 60 | ||
59 | for N in $(seq $GLOBAL_N); do | 61 | declare -A NODES |
60 | ROUTER=$(netjail_print_name "R" $N) | 62 | declare -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) | 64 | for 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 |
86 | done | 88 | done |
87 | 89 | ||
@@ -89,67 +91,58 @@ WAITING="" | |||
89 | KILLING="" | 91 | KILLING="" |
90 | 92 | ||
91 | if [ $STUN -gt 0 ]; then | 93 | if [ $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="$!" |
97 | fi | 101 | fi |
98 | 102 | ||
99 | for X in $(seq $KNOWN); do | 103 | for 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" |
108 | done | 111 | done |
109 | 112 | ||
110 | for N in $(seq $GLOBAL_N); do | 113 | for 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 |
121 | done | 123 | done |
122 | 124 | ||
123 | cleanup() { | 125 | cleanup() { |
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 | ||
165 | trap 'trapped_cleanup' 2 | 158 | trap 'trapped_cleanup' ERR |
166 | 159 | ||
167 | netjail_waitall $WAITING | 160 | netjail_waitall $WAITING |
168 | netjail_killall $KILLING | 161 | netjail_killall $KILLING |