about summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authordatafoo <34766150+datafoo@users.noreply.github.com>2020-05-29 12:20:06 +0200
committerdatafoo <34766150+datafoo@users.noreply.github.com>2020-05-29 12:20:06 +0200
commit8f16f66b27c6abcfaa04244f9e715376035dcfcb (patch)
treeedbf6df4b3ae70e211b65ec945110118d91c79cd /nixos
parentd9f9fcfd164bd7e48ad9da757979694474a223d5 (diff)
downloadnixlib-8f16f66b27c6abcfaa04244f9e715376035dcfcb.tar
nixlib-8f16f66b27c6abcfaa04244f9e715376035dcfcb.tar.gz
nixlib-8f16f66b27c6abcfaa04244f9e715376035dcfcb.tar.bz2
nixlib-8f16f66b27c6abcfaa04244f9e715376035dcfcb.tar.lz
nixlib-8f16f66b27c6abcfaa04244f9e715376035dcfcb.tar.xz
nixlib-8f16f66b27c6abcfaa04244f9e715376035dcfcb.tar.zst
nixlib-8f16f66b27c6abcfaa04244f9e715376035dcfcb.zip
nixos/networking: check interface state files exist before acting on them
Fix #89158
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/tasks/network-interfaces-scripted.nix24
1 files changed, 14 insertions, 10 deletions
diff --git a/nixos/modules/tasks/network-interfaces-scripted.nix b/nixos/modules/tasks/network-interfaces-scripted.nix
index d895c58bab03..2e87197176b6 100644
--- a/nixos/modules/tasks/network-interfaces-scripted.nix
+++ b/nixos/modules/tasks/network-interfaces-scripted.nix
@@ -232,18 +232,22 @@ let
               '';
             preStop = ''
               state="/run/nixos/network/routes/${i.name}"
-              while read cidr; do
-                echo -n "deleting route $cidr... "
-                ip route del "$cidr" dev "${i.name}" >/dev/null 2>&1 && echo "done" || echo "failed"
-              done < "$state"
-              rm -f "$state"
+              if [ -e "$state" ]; then
+                while read cidr; do
+                  echo -n "deleting route $cidr... "
+                  ip route del "$cidr" dev "${i.name}" >/dev/null 2>&1 && echo "done" || echo "failed"
+                done < "$state"
+                rm -f "$state"
+              fi
 
               state="/run/nixos/network/addresses/${i.name}"
-              while read cidr; do
-                echo -n "deleting address $cidr... "
-                ip addr del "$cidr" dev "${i.name}" >/dev/null 2>&1 && echo "done" || echo "failed"
-              done < "$state"
-              rm -f "$state"
+              if [ -e "$state" ]; then
+                while read cidr; do
+                  echo -n "deleting address $cidr... "
+                  ip addr del "$cidr" dev "${i.name}" >/dev/null 2>&1 && echo "done" || echo "failed"
+                done < "$state"
+                rm -f "$state"
+              fi
             '';
           };