aboutsummaryrefslogtreecommitdiff
path: root/contrib/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/scripts')
-rwxr-xr-xcontrib/scripts/netjail/netjail_core.sh17
-rwxr-xr-xcontrib/scripts/netjail/netjail_setup_internet.sh50
2 files changed, 60 insertions, 7 deletions
diff --git a/contrib/scripts/netjail/netjail_core.sh b/contrib/scripts/netjail/netjail_core.sh
index 1cdbca816..d070f7220 100755
--- a/contrib/scripts/netjail/netjail_core.sh
+++ b/contrib/scripts/netjail/netjail_core.sh
@@ -28,6 +28,23 @@ netjail_opt() {
28 printf "%d" 0 28 printf "%d" 0
29} 29}
30 30
31netjail_opts() {
32 local OPT=$1
33 local DEF=$2
34 shift 2
35
36 while [ $# -gt 0 ]; do
37 if [ "$1" = "$OPT" ]; then
38 printf "$2"
39 return
40 fi
41
42 shift 1
43 done
44
45 printf "$DEF"
46}
47
31netjail_check() { 48netjail_check() {
32 local NODE_COUNT=$1 49 local NODE_COUNT=$1
33 local FD_COUNT=$(($(ls /proc/self/fd | wc -w) - 4)) 50 local FD_COUNT=$(($(ls /proc/self/fd | wc -w) - 4))
diff --git a/contrib/scripts/netjail/netjail_setup_internet.sh b/contrib/scripts/netjail/netjail_setup_internet.sh
index de8ef8f15..6ae047274 100755
--- a/contrib/scripts/netjail/netjail_setup_internet.sh
+++ b/contrib/scripts/netjail/netjail_setup_internet.sh
@@ -9,15 +9,25 @@ export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
9LOCAL_M=$1 9LOCAL_M=$1
10GLOBAL_N=$2 10GLOBAL_N=$2
11 11
12# TODO: globally known peer?
13
14shift 2 12shift 2
15 13
16netjail_check $(($LOCAL_M * $GLOBAL_N)) 14netjail_check $(($LOCAL_M * $GLOBAL_N))
17 15
18# Starts optionally 'stunserver' on "92.68.150.$(($GLOBAL_N + 1))": 16# Starts optionally an amount of nodes without NAT starting with "92.68.151.1"
17KNOWN=$(netjail_opt '--known' $@)
18KNOWN_NUM=$(netjail_opts '--known' 0 $@)
19
20# Starts optionally 'stunserver' on "92.68.150.254":
19STUN=$(netjail_opt '--stun' $@) 21STUN=$(netjail_opt '--stun' $@)
20 22
23if [ $KNOWN -gt 0 ]; then
24 shift 2
25
26 KNOWN=$KNOWN_NUM
27
28 netjail_check $(($LOCAL_M * $GLOBAL_N + $KNOWN))
29fi
30
21if [ $STUN -gt 0 ]; then 31if [ $STUN -gt 0 ]; then
22 netjail_check_bin stunserver 32 netjail_check_bin stunserver
23 33
@@ -30,19 +40,27 @@ netjail_check_bin $1
30 40
31LOCAL_GROUP="192.168.15" 41LOCAL_GROUP="192.168.15"
32GLOBAL_GROUP="92.68.150" 42GLOBAL_GROUP="92.68.150"
43KNOWN_GROUP="92.68.151"
33 44
34CLEANUP=0 45CLEANUP=0
35echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/24, stun: $STUN]" 46echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/16, stun: $STUN]"
36 47
37NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M) 48NETWORK_NET=$(netjail_print_name "n" $GLOBAL_N $LOCAL_M)
38 49
39netjail_bridge $NETWORK_NET 50netjail_bridge $NETWORK_NET
40 51
52for X in $(seq $KNOWN); do
53 KNOWN_NODE=$(netjail_print_name "K" $X)
54
55 netjail_node $KNOWN_NODE
56 netjail_node_link_bridge $KNOWN_NODE $NETWORK_NET "$KNOWN_GROUP.$X" 16
57done
58
41for N in $(seq $GLOBAL_N); do 59for N in $(seq $GLOBAL_N); do
42 ROUTER=$(netjail_print_name "R" $N) 60 ROUTER=$(netjail_print_name "R" $N)
43 61
44 netjail_node $ROUTER 62 netjail_node $ROUTER
45 netjail_node_link_bridge $ROUTER $NETWORK_NET "$GLOBAL_GROUP.$N" 24 63 netjail_node_link_bridge $ROUTER $NETWORK_NET "$GLOBAL_GROUP.$N" 16
46 64
47 ROUTER_NET=$(netjail_print_name "r" $N) 65 ROUTER_NET=$(netjail_print_name "r" $N)
48 66
@@ -72,16 +90,27 @@ KILLING=""
72 90
73if [ $STUN -gt 0 ]; then 91if [ $STUN -gt 0 ]; then
74 netjail_node $STUN_NODE 92 netjail_node $STUN_NODE
75 netjail_node_link_bridge $STUN_NODE $NETWORK_NET "$GLOBAL_GROUP.254" 24 93 netjail_node_link_bridge $STUN_NODE $NETWORK_NET "$GLOBAL_GROUP.254" 16
76 94
77 netjail_node_exec $STUN_NODE 0 1 stunserver & 95 netjail_node_exec $STUN_NODE 0 1 stunserver &
78 KILLING="$!" 96 KILLING="$!"
79fi 97fi
80 98
99for X in $(seq $KNOWN); do
100 KNOWN_NODE=$(netjail_print_name "K" $X)
101 INDEX=$(($X - 1))
102
103 FD_X=$(($INDEX * 2 + 3 + 0))
104 FD_Y=$(($INDEX * 2 + 3 + 1))
105
106 netjail_node_exec $KNOWN_NODE $FD_X $FD_Y $@ &
107 WAITING="$! $WAITING"
108done
109
81for N in $(seq $GLOBAL_N); do 110for N in $(seq $GLOBAL_N); do
82 for M in $(seq $LOCAL_M); do 111 for M in $(seq $LOCAL_M); do
83 NODE=$(netjail_print_name "N" $N $M) 112 NODE=$(netjail_print_name "N" $N $M)
84 INDEX=$(($LOCAL_M * ($N - 1) + $M - 1)) 113 INDEX=$(($LOCAL_M * ($N - 1) + $M - 1 + $KNOWN))
85 114
86 FD_X=$(($INDEX * 2 + 3 + 0)) 115 FD_X=$(($INDEX * 2 + 3 + 0))
87 FD_Y=$(($INDEX * 2 + 3 + 1)) 116 FD_Y=$(($INDEX * 2 + 3 + 1))
@@ -99,6 +128,13 @@ cleanup() {
99 netjail_node_clear $STUN_NODE 128 netjail_node_clear $STUN_NODE
100 fi 129 fi
101 130
131 for X in $(seq $KNOWN); do
132 KNOWN_NODE=$(netjail_print_name "K" $X)
133
134 netjail_node_unlink_bridge $KNOWN_NODE $NETWORK_NET
135 netjail_node_clear $KNOWN_NODE
136 done
137
102 for N in $(seq $GLOBAL_N); do 138 for N in $(seq $GLOBAL_N); do
103 ROUTER_NET=$(netjail_print_name "r" $N) 139 ROUTER_NET=$(netjail_print_name "r" $N)
104 140