diff options
Diffstat (limited to 'contrib/scripts/netjail/netjail_setup_internet.sh')
-rwxr-xr-x | contrib/scripts/netjail/netjail_setup_internet.sh | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/contrib/scripts/netjail/netjail_setup_internet.sh b/contrib/scripts/netjail/netjail_setup_internet.sh new file mode 100755 index 000000000..d99709555 --- /dev/null +++ b/contrib/scripts/netjail/netjail_setup_internet.sh | |||
@@ -0,0 +1,81 @@ | |||
1 | #!/bin/sh | ||
2 | . "./netjail_core.sh" | ||
3 | |||
4 | set -eu | ||
5 | set -x | ||
6 | |||
7 | export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | ||
8 | |||
9 | LOCAL_M=$1 | ||
10 | GLOBAL_N=$2 | ||
11 | |||
12 | # TODO: stunserver? ..and globally known peer? | ||
13 | |||
14 | shift 2 | ||
15 | |||
16 | netjail_check $(($LOCAL_M * $GLOBAL_N)) | ||
17 | |||
18 | LOCAL_GROUP="192.168.15" | ||
19 | GLOBAL_GROUP="92.68.150" | ||
20 | |||
21 | echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/24]" | ||
22 | |||
23 | NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M) | ||
24 | |||
25 | netjail_bridge $NETWORK_NET | ||
26 | |||
27 | for N in $(seq $GLOBAL_N); do | ||
28 | ROUTER=$(netjail_print_name "R" $N) | ||
29 | |||
30 | netjail_node $ROUTER | ||
31 | netjail_node_link_bridge $ROUTER $NETWORK_NET "$GLOBAL_GROUP.$N" 24 | ||
32 | |||
33 | ROUTER_NET=$(netjail_print_name "r" $N) | ||
34 | |||
35 | netjail_bridge $ROUTER_NET | ||
36 | |||
37 | for M in $(seq $LOCAL_M); do | ||
38 | NODE=$(netjail_print_name "N" $N $M) | ||
39 | |||
40 | netjail_node $NODE | ||
41 | netjail_node_link_bridge $NODE $ROUTER_NET "$LOCAL_GROUP.$M" 24 | ||
42 | done | ||
43 | |||
44 | ROUTER_ADDR="$LOCAL_GROUP.$(($LOCAL_M+1))" | ||
45 | |||
46 | netjail_node_link_bridge $ROUTER $ROUTER_NET $ROUTER_ADDR 24 | ||
47 | netjail_node_add_nat $ROUTER $ROUTER_ADDR 24 | ||
48 | |||
49 | for M in $(seq $LOCAL_M); do | ||
50 | NODE=$(netjail_print_name "N" $N $M) | ||
51 | |||
52 | netjail_node_add_default $NODE $ROUTER_ADDR | ||
53 | done | ||
54 | done | ||
55 | |||
56 | for N in $(seq $GLOBAL_N); do | ||
57 | for M in $(seq $LOCAL_M); do | ||
58 | NODE=$(netjail_print_name "N" $N $M) | ||
59 | INDEX=$(($LOCAL_M * ($N - 1) + $M - 1)) | ||
60 | |||
61 | FD_X=$(($INDEX * 2 + 3 + 0)) | ||
62 | FD_Y=$(($INDEX * 2 + 3 + 1)) | ||
63 | |||
64 | netjail_node_exec $NODE $FD_X $FD_Y $@ & | ||
65 | done | ||
66 | done | ||
67 | |||
68 | wait | ||
69 | |||
70 | for N in $(seq $GLOBAL_N); do | ||
71 | for M in $(seq $LOCAL_M); do | ||
72 | netjail_node_clear $(netjail_print_name "N" $N $M) | ||
73 | done | ||
74 | |||
75 | netjail_bridge_clear $(netjail_print_name "r" $N) | ||
76 | netjail_node_clear $(netjail_print_name "R" $N) | ||
77 | done | ||
78 | |||
79 | netjail_bridge_clear $NETWORK_NET | ||
80 | |||
81 | echo "Done" | ||