Given `proxy` & `router` processes have been merged, `launch-proxy`, `launch-router`, `stop-proxy`, `stop-router` do not make sense any more, and should just be `launch` and `stop` with the appropriate flags.
69 lines
2.0 KiB
Bash
Executable File
69 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# You may need to adjust
|
|
# echo 4096 >/proc/sys/net/ipv4/neigh/default/gc_thresh3
|
|
# where the number is greater than NUM_WEAVES*(NUM_WEAVES-1) plus some
|
|
# fudge.
|
|
#
|
|
# Without that, some connections between the weaves may fail to get
|
|
# established, and networking on the host in general becomes
|
|
# broken. There will also be some "net_ratelimit: nnn callbacks
|
|
# suppressed" messages in the syslog.
|
|
|
|
START=${FIRST_WEAVE:-1}
|
|
COUNT=${NUM_WEAVES:-28}
|
|
FINISH=$((START+COUNT-1))
|
|
|
|
SUBNET=192.168.7
|
|
|
|
weavedir=$(dirname $0)/..
|
|
|
|
# Generate a random MAC value - copied from 'weave' script
|
|
random_mac() {
|
|
# In the first byte of the MAC, the 'multicast' bit should be
|
|
# clear and 'locally administered' bit should be set. All other
|
|
# bits should be random.
|
|
od -txC -An -N6 /dev/urandom | ( read a b c d e f && printf "%02x:$b:$c:$d:$e:$f" $((0x$a & ~1 | 2)) )
|
|
}
|
|
|
|
weave() {
|
|
i=$1
|
|
shift
|
|
WEAVE_CONTAINER_NAME=weave$i WEAVE_HTTP_ADDR=$SUBNET.$i:6784 $weavedir/weave "$@"
|
|
}
|
|
|
|
case "$1" in
|
|
launch)
|
|
shift 1
|
|
echo $(date -R) launching
|
|
ip link show multiweave >/dev/null 2>&1 || sudo ip link add name multiweave type bridge
|
|
for i in $(seq $START $FINISH); do
|
|
IP=$SUBNET.$i
|
|
sudo ip addr add $IP/24 dev multiweave
|
|
weave $i launch --datapath '' --iface '' --no-dns --host $IP \
|
|
--name $(random_mac) --nickname weave$i "$@"
|
|
done
|
|
echo $(date -R) connecting
|
|
[ $START -gt 1 ] || START=2
|
|
for i in $(seq $START $FINISH); do
|
|
TO=$SUBNET.$((i-1))
|
|
echo connecting weave$i to $TO
|
|
weave $i connect $TO
|
|
done
|
|
echo $(date -R) done
|
|
;;
|
|
stop)
|
|
for i in $(seq $FINISH -1 $START); do
|
|
IP=$SUBNET.$i
|
|
echo Stopping weave$i
|
|
weave $i stop
|
|
sudo ip addr del $IP/24 dev multiweave || true
|
|
done
|
|
[ -z "$(ip -4 -o addr show multiweave)" ] && sudo ip link del multiweave
|
|
;;
|
|
*)
|
|
weave "$@"
|
|
;;
|
|
esac
|