d1a34d
From 94ec96c35678f56bc74b9c12c3229971bc40c9b3 Mon Sep 17 00:00:00 2001
d1a34d
From: Pavel Valena <pvalena@redhat.com>
d1a34d
Date: Mon, 22 Nov 2021 16:40:39 +0100
d1a34d
Subject: [PATCH] fix(network): add errors and warnings when network interface
d1a34d
 does not exist
d1a34d
d1a34d
End with error, or show a warning when nonexistent device is specified for network setup like
d1a34d
`ip=10.12.8.12::10.12.255.254:255.255.0.0:xk12:eth0:off`.
d1a34d
d1a34d
I've added the error only for `write-ifcfg.sh`, as I think no such setup should be written.
d1a34d
d1a34d
(cherry picked from commit 7938935267dd8824f074adf84c219340ad4c8db6)
d1a34d
d1a34d
Resolves: #2050562
d1a34d
---
d1a34d
 modules.d/35network-legacy/ifup.sh          | 6 +++++-
d1a34d
 modules.d/35network-legacy/parse-ip-opts.sh | 5 +++++
d1a34d
 modules.d/45ifcfg/write-ifcfg.sh            | 5 +++++
d1a34d
 3 files changed, 15 insertions(+), 1 deletion(-)
d1a34d
d1a34d
diff --git a/modules.d/35network-legacy/ifup.sh b/modules.d/35network-legacy/ifup.sh
d1a34d
index a05c4698..0dc9541c 100755
d1a34d
--- a/modules.d/35network-legacy/ifup.sh
d1a34d
+++ b/modules.d/35network-legacy/ifup.sh
d1a34d
@@ -446,7 +446,11 @@ for p in $(getargs ip=); do
d1a34d
 
d1a34d
     # If this option isn't directed at our interface, skip it
d1a34d
     if [ -n "$dev" ]; then
d1a34d
-        [ "$dev" != "$netif" ] && continue
d1a34d
+        if [ "$dev" != "$netif" ]; then
d1a34d
+            [ ! -e "/sys/class/net/$dev" ] \
d1a34d
+                && warn "Network interface '$dev' does not exist!"
d1a34d
+            continue
d1a34d
+        fi
d1a34d
     else
d1a34d
         iface_is_enslaved "$netif" && continue
d1a34d
     fi
d1a34d
diff --git a/modules.d/35network-legacy/parse-ip-opts.sh b/modules.d/35network-legacy/parse-ip-opts.sh
d1a34d
index 35917bbf..19af8789 100755
d1a34d
--- a/modules.d/35network-legacy/parse-ip-opts.sh
d1a34d
+++ b/modules.d/35network-legacy/parse-ip-opts.sh
d1a34d
@@ -97,6 +97,11 @@ for p in $(getargs ip=); do
d1a34d
         fi
d1a34d
         # IFACES list for later use
d1a34d
         IFACES="$IFACES $dev"
d1a34d
+
d1a34d
+        # Interface should exist
d1a34d
+        if [ ! -e "/sys/class/net/$dev" ]; then
d1a34d
+            warn "Network interface '$dev' does not exist"
d1a34d
+        fi
d1a34d
     fi
d1a34d
 
d1a34d
     # Do we need to check for specific options?
d1a34d
diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh
d1a34d
index 5f71515a..345863f9 100755
d1a34d
--- a/modules.d/45ifcfg/write-ifcfg.sh
d1a34d
+++ b/modules.d/45ifcfg/write-ifcfg.sh
d1a34d
@@ -103,6 +103,11 @@ interface_bind() {
d1a34d
     local _netif="$1"
d1a34d
     local _macaddr="$2"
d1a34d
 
d1a34d
+    if [ ! -e "/sys/class/net/$_netif" ]; then
d1a34d
+        derror "Cannot find network interface '$_netif'!"
d1a34d
+        return 1
d1a34d
+    fi
d1a34d
+
d1a34d
     # see, if we can bind it to some hw parms
d1a34d
     if hw_bind "$_netif" "$_macaddr"; then
d1a34d
         # only print out DEVICE, if it's user assigned
d1a34d