From 9600c521736a0a2515857e5bec303cbc05c293bc Mon Sep 17 00:00:00 2001 From: Kroese Date: Wed, 5 Mar 2025 04:57:24 +0100 Subject: [PATCH] fix: Network shutdown --- src/network.sh | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/network.sh b/src/network.sh index b1ef243..34fd580 100644 --- a/src/network.sh +++ b/src/network.sh @@ -207,7 +207,6 @@ configureNAT() { fi # Create a bridge with a static IP for the VM guest - { ip link add dev dockerbridge type bridge ; rc=$?; } || : if (( rc != 0 )); then @@ -287,6 +286,22 @@ configureNAT() { return 0 } +closeBridge() { + + local pid="/var/run/dnsmasq.pid" + [ -s "$pid" ] && pKill "$(<"$pid")" + + [[ "${NETWORK,,}" == "user"* ]] && return 0 + + ip link set "$VM_NET_TAP" down promisc off &> null || true + ip link delete "$VM_NET_TAP" &> null || true + + ip link set dockerbridge down &> null || true + ip link delete dockerbridge &> null || true + + return 0 +} + closeNetwork() { # Shutdown nginx @@ -298,26 +313,16 @@ closeNetwork() { exec 30<&- || true exec 40<&- || true - if [[ "$DHCP" == [Yy1]* ]]; then + if [[ "$DHCP" != [Yy1]* ]]; then - ip link set "$VM_NET_TAP" down || true - ip link delete "$VM_NET_TAP" || true - - else - - local pid="/var/run/dnsmasq.pid" - [ -s "$pid" ] && pKill "$(<"$pid")" - - [[ "${NETWORK,,}" == "user"* ]] && return 0 - - ip link set "$VM_NET_TAP" down promisc off || true - ip link delete "$VM_NET_TAP" || true - - ip link set dockerbridge down || true - ip link delete dockerbridge || true + closeBridge + return 0 fi + ip link set "$VM_NET_TAP" down || true + ip link delete "$VM_NET_TAP" || true + return 0 } @@ -457,15 +462,10 @@ else # Configure for tap interface if ! configureNAT; then + closeBridge NETWORK="user" warn "falling back to usermode networking! Performance will be bad and port mapping will not work." - ip link set "$VM_NET_TAP" down promisc off &> null || true - ip link delete "$VM_NET_TAP" &> null || true - - ip link set dockerbridge down &> null || true - ip link delete dockerbridge &> null || true - fi fi