From d521cbe70ce0271f22b1168a9a28db2ce6a44b17 Mon Sep 17 00:00:00 2001 From: Kroese Date: Fri, 21 Apr 2023 21:24:24 +0200 Subject: [PATCH] Sync --- run/network.sh | 64 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/run/network.sh b/run/network.sh index b218e6d..bc4b261 100644 --- a/run/network.sh +++ b/run/network.sh @@ -3,6 +3,8 @@ set -eu # Docker environment variabeles +: ${VM_NET_TAP:='qemu'} +: ${VM_NET_DEV:='eth0'} : ${VM_NET_HOST:='QEMU'} : ${VM_NET_MAC:='82:cf:d0:5e:57:66'} @@ -18,24 +20,28 @@ set -eu configureDHCP() { - # Create /dev/vhost-net - if [ ! -c /dev/vhost-net ]; then - mknod /dev/vhost-net c 10 238 - chmod 660 /dev/vhost-net - fi + VM_NET_VLAN="vlan" + GATEWAY=$(ip r | grep default | awk '{print $3}') + NETWORK=$(ip -o route | grep "${VM_NET_DEV}" | grep -v default | awk '{print $1}') + IP=$(ip address show dev "${VM_NET_DEV}" | grep inet | awk '/inet / { print $2 }' | cut -f1 -d/) - if [ ! -c /dev/vhost-net ]; then - echo -n "Error: VHOST interface not available. Please add the following " - echo "docker variable to your container: --device=/dev/vhost-net" && exit 85 - fi + ip l add link "${VM_NET_DEV}" "${VM_NET_VLAN}" type macvlan mode bridge + + ip address add "${IP}" dev "${VM_NET_VLAN}" + ip link set dev "${VM_NET_VLAN}" up + + ip route flush dev "${VM_NET_DEV}" + ip route flush dev "${VM_NET_VLAN}" + + ip route add "${NETWORK}" dev "${VM_NET_VLAN}" metric 0 + ip route add default via "${GATEWAY}" - VM_NET_TAP="qemu" echo "Info: Retrieving IP via DHCP using MAC ${VM_NET_MAC}..." - ip l add link eth0 name "${VM_NET_TAP}" address "${VM_NET_MAC}" type macvtap mode bridge || true + ip l add link "${VM_NET_DEV}" name "${VM_NET_TAP}" address "${VM_NET_MAC}" type macvtap mode bridge || true ip l set "${VM_NET_TAP}" up - ip a flush eth0 + ip a flush "${VM_NET_DEV}" ip a flush "${VM_NET_TAP}" DHCP_IP=$( dhclient -v "${VM_NET_TAP}" 2>&1 | grep ^bound | cut -d' ' -f3 ) @@ -48,7 +54,19 @@ configureDHCP() { ip a flush "${VM_NET_TAP}" - TAP_PATH="/dev/tap$(