: ${WORK=$TOP/work}
: ${MOUNT=$TOP/mnt}
: ${NSNAME=$NAME}
-: ${BRIDGES=homenet}
+: ${BRIDGES=lan_br}
: ${CONFIG=$TOP/config}
[ -e "$CONFIG" ] && . "$CONFIG"
# Create a simple overlay subhost without its own image file
create_subhost() {
mkdir -p $TARGET $MOUNT $UPPER $WORK
- [ -d "$OSROOT" ] || OSROOT=$SUBHOST/daedalus/root
+ [ -d "$OSROOT" ] || OSROOT=$SUBHOST/chimaera/base
[ -e $CONFIG ] || cat <<EOF > "$CONFIG"
# Subhost $NAME is an autogenerated overlay subhost with shared filesystem
OSROOT="$OSROOT"
EOF
}
-# generate a mac for given $1 (interface) using the last 5 characters
+# map a string into a hexadecimal number with 10-digits by folding the given string into 9-digit ascii-code numbers and adding them
+hexfoldsum() {
+ local V
+ V="$(b2sum -l 40 <<< "$1" | sed 's/\(..\)/\1:/g')"
+ echo "02:${V:0:14}"
+}
+
+# Generate a mac address for given interface by passing hostname,
+# subhost name and interface through 40-bit b2sum and with 02: prefix.
macaddr() {
- local M="$(xxd -p <<< "${1:$(( ${#1} - 5)):5}")66666666"
- echo "0a:${M:0:2}:${M:2:2}:${M:4:2}:${M:6:2}:${M:8:2}"
+ local V="$(b2sum -l 40 <<< "$(hostname)$NAME$1" | sed 's/\(..\)/\1:/g')"
+ echo "02:${V:0:14}"
}
# setup the subhost network namespace and link up the host side
if is_mounted $TARGET ; then
mount -oremount $TARGET
else
- if [ -f "$IMAGE" ] ; then
- # The subhost has an image file with /root and /work in it
+ if [ -e "$IMAGE" ] ; then
+ # $IMAGE is either an image file or a link to a partition,
+ # with /root and /work in it.
is_mounted $MOUNT || mount $IMAGE $MOUNT || exit 1
UPPER=$MOUNT/root
WORK=$MOUNT/work
exec ip netns exec $NSNAME unshare \
--fork --pid --mount-proc --kill-child \
--uts --ipc --mount --cgroup \
- "--root=$TARGET" $START
+ chroot $TARGET $START
;;
stop)
umount $TARGET