]> git.ipfire.org Git - thirdparty/wireguard-tools.git/commitdiff
wg-quick: wait for interface to disappear on freebsd
authorJason A. Donenfeld <Jason@zx2c4.com>
Fri, 12 Oct 2018 14:55:35 +0000 (16:55 +0200)
committerJason A. Donenfeld <Jason@zx2c4.com>
Fri, 12 Oct 2018 23:55:31 +0000 (01:55 +0200)
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
src/wg-quick/freebsd.bash

index a2bdafb3df89a6140e0cf5b79d623460a9c4b285..c302a60e364e4061e292fdb9b33646f504694615 100755 (executable)
@@ -137,8 +137,17 @@ del_routes() {
 }
 
 del_if() {
+       local line monitor_pid
        [[ $HAVE_SET_DNS -eq 0 ]] || unset_dns
+       exec 39< <(exec route -n monitor 2>/dev/null)
+       monitor_pid=$!
        cmd rm -f "/var/run/wireguard/$INTERFACE.sock"
+       while ifconfig "$INTERFACE" >/dev/null 2>&1; do
+               while read -r line; do
+                       [[ $line =~ ^RTM_IFANNOUNCE:.* ]] && break
+               done <&39
+       done
+       kill $monitor_pid
 }
 
 up_if() {