File 0094-Implement-shortcut-ip-ifname-static-for-static-confi.patch of Package dracut.892

From a345cf3c3d7c15cfca5735c531f825062235c135 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare@suse.de>
Date: Wed, 2 Jul 2014 11:20:22 +0200
Subject: Implement shortcut 'ip=<ifname>:static' for static configuration

To simplify static configurate we should be pulling in the
existing 'ifcfg' files when running in hostonly mode.
With that we can implement the shortcut 'ip=<ifname>:static'
to use the existing configuration from the ifcfg file.

Signed-off-by: Hannes Reinecke <hare@suse.de>
---
 modules.d/40network/ifup.sh          | 14 +++++++++++++-
 modules.d/40network/module-setup.sh  |  4 ++++
 modules.d/40network/parse-ip-opts.sh |  8 +++++++-
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
index 6f279a4..f3e07a6 100755
--- a/modules.d/40network/ifup.sh
+++ b/modules.d/40network/ifup.sh
@@ -399,6 +399,18 @@ for p in $(getargs ip=); do
     [ "$use_bridge" != 'true' ] && \
     [ "$use_vlan" != 'true' ] && continue
 
+    if [ "$autoconf" = "static" ] &&
+        [ -e /etc/sysconfig/network/ifcfg-${netif} ] ; then
+        # Pull in existing static configuration
+        . /etc/sysconfig/network/ifcfg-${netif}
+        ip=${IPADDR}
+        mask=${PREFIXLEN}
+        mtu=${MTU}
+        server=${REMOTE_IPADDR}
+        gw=${GATEWAY}
+        autoconf=${BOOTPROTO}
+    fi
+
     # setup nameserver
     namesrv="$dns1 $dns2 $(getargs nameserver)"
     for s in $namesrv; do
@@ -411,7 +423,7 @@ for p in $(getargs ip=); do
     done > /tmp/net.$netif.override
 
     case $autoconf in
-        dhcp|on|any)
+        dhcp4|dhcp|on|any)
             do_dhcp -4 ;;
         dhcp6)
             load_ipv6
diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
index 7e7f087..690ff08 100755
--- a/modules.d/40network/module-setup.sh
+++ b/modules.d/40network/module-setup.sh
@@ -101,6 +101,10 @@ install() {
 
     _arch=$(uname -m)
 
+    [[ $hostonly ]] && {
+        inst_multiple /etc/sysconfig/network/ifcfg-*
+    }
+
     inst_libdir_file {"tls/$_arch/",tls/,"$_arch/",}"libnss_dns.so.*" \
         {"tls/$_arch/",tls/,"$_arch/",}"libnss_mdns4_minimal.so.*"
 
diff --git a/modules.d/40network/parse-ip-opts.sh b/modules.d/40network/parse-ip-opts.sh
index 7e73574..e48b0f3 100755
--- a/modules.d/40network/parse-ip-opts.sh
+++ b/modules.d/40network/parse-ip-opts.sh
@@ -64,7 +64,13 @@ for p in $(getargs ip=); do
     # Error checking for autoconf in combination with other values
     case $autoconf in
         error) die "Error parsing option 'ip=$p'";;
-        bootp|rarp|both) die "Sorry, ip=$autoconf is currenty unsupported";;
+        bootp|rarp|both) die "Sorry, ip=$autoconf is currently unsupported";;
+        static)
+            if [ ! -e /etc/sysconfig/network/ifcfg-${dev} ] ; then
+                warn "No ifcfg configuration present for interface $dev, skipping"
+                continue
+            fi
+            ;;
         none|off)
             [ -z "$ip" ] && \
             die "For argument 'ip=$p'\nValue '$autoconf' without static configuration does not make sense"
-- 
1.8.4.5