We have networks!

master
LEdoian 3 weeks ago
parent ea8df9e7b3
commit d72865bc07

@ -1,6 +1,12 @@
#!/bin/sh
set -eu
for mach in machines/*; do
statedir="state/${mach##*/}"
rm -rvf "$statedir"
done
for net in networks/*; do
test -e $net/down.sh && $net/down.sh
done

@ -1,6 +1,11 @@
#!/bin/sh
set -eu
for net in networks/*; do
$net/up.sh
done
for mach in machines/*; do
$mach/run-shim.sh
done

@ -5,6 +5,15 @@ mach=$(basename $(dirname "$0"))
netns=netns
nethorror_root="`pwd`" # and hope?
warn() {
echo >&2 "Warning:" "$@"
}
die() {
echo >&2 "DIE:" "$@"
exit 42
}
ensure_started() {
test -e state/$mach/$netns || machines/$mach/start.sh
}
@ -22,3 +31,26 @@ setup_statedir() {
done
}
bridge_name() {
echo "br_$1"
}
make_bridge() {
br="$(bridge_name "$mach")"
ip link add name "$br" type bridge
ip link set dev "$br" up
}
veth_to_bridge() {
ifname="$1"
br_raw="$2"
br="$(bridge_name "$br_raw")"
ve_br_orig="ve_${mach}_${br_raw}"
ve_br="${ve_br_orig::15}"
test "$ve_br" != "$ve_br_orig" && warn "interface name $ve_br_orig shortened to $ve_br"
ip link show dev "$ve_br" >/dev/null && die "interface $ve_br already exists!"
ip link add name "$ifname" type veth peer "$ve_br"
ip link set dev "$ve_br" master "$br"
ip link set dev "$ve_br" up
ip link set dev "$ifname" netns ./state/$mach/netns # FIXME: hardcoded
}

@ -2,7 +2,6 @@
set -eu
# typically: bring up the networks
# TODO: veth naming?
ip addr add 100.100.0.1/29 dev vps_ve
ip link set vps_ve up
# dummy for now:
ip route add unreachable 192.168.3.0/24

@ -7,4 +7,4 @@ setup_statedir
unshare $namespaces /bin/true # just create the namespaces
# TODO: connect to the bridges
veth_to_bridge vps_ve vpsuplink

@ -0,0 +1,5 @@
#!/bin/sh
set -eu
. ./lib.shs
make_bridge
Loading…
Cancel
Save