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