You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.0 KiB
Plaintext

#!/bin/false
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
}
attach() {
machines/$mach/attach.sh "$@"
}
setup_statedir() {
dir="state/$mach"
mkdir "$dir"
for ns in $namespaces; do
nsfile="${ns#*=}"
touch "$nsfile"
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"
3 weeks ago
ip link show dev "$ve_br" >/dev/null 2>&1 && 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
}