aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Valena <pvalena@redhat.com>2021-11-22 16:40:39 +0100
committerJóhann B. Guðmundsson <johannbg@gmail.com>2021-11-25 08:58:37 +0000
commit7938935267dd8824f074adf84c219340ad4c8db6 (patch)
tree322dfd518ae980b8c8dfbbef472343a4e059f837
parent5b18b06c7d9c3a4594ad9467f84eab4c44fa3335 (diff)
downloaddracut-7938935267dd8824f074adf84c219340ad4c8db6.tar.gz
fix(network): add errors and warnings when network interface does not exist
End with error, or show a warning when nonexistent device is specified for network setup like `ip=10.12.8.12::10.12.255.254:255.255.0.0:xk12:eth0:off`. I've added the error only for `write-ifcfg.sh`, as I think no such setup should be written. Resolves: #1712424
-rwxr-xr-xmodules.d/35network-legacy/ifup.sh6
-rwxr-xr-xmodules.d/35network-legacy/parse-ip-opts.sh5
-rwxr-xr-xmodules.d/45ifcfg/write-ifcfg.sh5
3 files changed, 15 insertions, 1 deletions
diff --git a/modules.d/35network-legacy/ifup.sh b/modules.d/35network-legacy/ifup.sh
index a05c4698..0dc9541c 100755
--- a/modules.d/35network-legacy/ifup.sh
+++ b/modules.d/35network-legacy/ifup.sh
@@ -446,7 +446,11 @@ for p in $(getargs ip=); do
# If this option isn't directed at our interface, skip it
if [ -n "$dev" ]; then
- [ "$dev" != "$netif" ] && continue
+ if [ "$dev" != "$netif" ]; then
+ [ ! -e "/sys/class/net/$dev" ] \
+ && warn "Network interface '$dev' does not exist!"
+ continue
+ fi
else
iface_is_enslaved "$netif" && continue
fi
diff --git a/modules.d/35network-legacy/parse-ip-opts.sh b/modules.d/35network-legacy/parse-ip-opts.sh
index 35917bbf..19af8789 100755
--- a/modules.d/35network-legacy/parse-ip-opts.sh
+++ b/modules.d/35network-legacy/parse-ip-opts.sh
@@ -97,6 +97,11 @@ for p in $(getargs ip=); do
fi
# IFACES list for later use
IFACES="$IFACES $dev"
+
+ # Interface should exist
+ if [ ! -e "/sys/class/net/$dev" ]; then
+ warn "Network interface '$dev' does not exist"
+ fi
fi
# Do we need to check for specific options?
diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh
index 5f71515a..345863f9 100755
--- a/modules.d/45ifcfg/write-ifcfg.sh
+++ b/modules.d/45ifcfg/write-ifcfg.sh
@@ -103,6 +103,11 @@ interface_bind() {
local _netif="$1"
local _macaddr="$2"
+ if [ ! -e "/sys/class/net/$_netif" ]; then
+ derror "Cannot find network interface '$_netif'!"
+ return 1
+ fi
+
# see, if we can bind it to some hw parms
if hw_bind "$_netif" "$_macaddr"; then
# only print out DEVICE, if it's user assigned