Blob Blame History Raw
From caf207afa7c2a65f25be26a735643a873f5c092f Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 30 May 2013 14:37:41 +0200
Subject: [PATCH] ifcfg/write-ifcfg.sh: fixed logic

seems like nobody tested this with recent dracut versions.
---
 modules.d/45ifcfg/write-ifcfg.sh | 75 ++++++++++++++++++++++------------------
 1 file changed, 41 insertions(+), 34 deletions(-)

diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh
index 625d00b..2e78c49 100755
--- a/modules.d/45ifcfg/write-ifcfg.sh
+++ b/modules.d/45ifcfg/write-ifcfg.sh
@@ -4,10 +4,6 @@
 
 # NFS root might have reached here before /tmp/net.ifaces was written
 udevadm settle --timeout=30
-# Don't write anything if we don't know our bootdev
-[ -f /tmp/net.ifaces ] || return 1
-
-read IFACES < /tmp/net.ifaces
 
 if [ -e /tmp/bridge.info ]; then
     . /tmp/bridge.info
@@ -79,15 +75,25 @@ print_s390() {
     echo "OPTIONS=\"${OPTIONS}\""
 }
 
+for netup in /tmp/net.*.did-setup ; do
+    [ -f $netup ] || continue
 
-for netif in $IFACES ; do
+    netif=${netup%%.did-setup}
+    netif=${netif##*/net.}
     [ -e /tmp/ifcfg/ifcfg-$netif ] && continue
-    # bridge?
     unset bridge
     unset bond
     unset bondslaves
     unset bondname
     unset bondoptions
+    unset uuid
+    unset ip
+    unset gw
+    unset mtu
+    unset mask
+    unset macaddr
+    unset slave
+    unset ethname
     [ -e /tmp/bond.${netif}.info ] && . /tmp/bond.${netif}.info
 
     uuid=$(cat /proc/sys/kernel/random/uuid)
@@ -100,45 +106,46 @@ for netif in $IFACES ; do
     cat /sys/class/net/$netif/address > /tmp/net.$netif.hwaddr
     {
         echo "# Generated by dracut initrd"
-        echo "DEVICE=$netif"
+        echo "DEVICE=\"$netif\""
         echo "ONBOOT=yes"
         echo "NETBOOT=yes"
-        echo "UUID=$uuid"
-        [ -n "$mtu" ] && echo "MTU=$mtu"
-        if [ -f /tmp/net.$netif.lease ]; then
+        echo "UUID=\"$uuid\""
+        if [ -f /tmp/dhclient.$netif.lease ]; then
+            [ -f /tmp/dhclient.$netif.dhcpopts ] && . /tmp/dhclient.$netif.dhcpopts
             strstr "$ip" '*:*:*' && echo "IPV6INIT=yes"
             if [ -f /tmp/net.$netif.has_ibft_config ]; then
                 echo "BOOTPROTO=ibft"
             else
                 echo "BOOTPROTO=dhcp"
             fi
-            cp /tmp/net.$netif.lease /tmp/ifcfg-leases/dhclient-$uuid-$netif.lease
+            cp /tmp/dhclient.$netif.lease /tmp/ifcfg-leases/dhclient-$uuid-$netif.lease
         else
             # If we've booted with static ip= lines, the override file is there
             [ -e /tmp/net.$netif.override ] && . /tmp/net.$netif.override
             if strstr "$ip" '*:*:*'; then
                 echo "IPV6INIT=yes"
                 echo "IPV6_AUTOCONF=no"
-                echo "IPV6ADDR=$ip/$mask"
+                echo "IPV6ADDR=\"$ip/$mask\""
             else
                 if [ -f /tmp/net.$netif.has_ibft_config ]; then
                     echo "BOOTPROTO=ibft"
                 else
                     echo "BOOTPROTO=none"
-                    echo "IPADDR=$ip"
+                    echo "IPADDR=\"$ip\""
                     if strstr "$mask" "."; then
-                        echo "NETMASK=$mask"
+                        echo "NETMASK=\"$mask\""
                     else
-                        echo "PREFIX=$mask"
+                        echo "PREFIX=\"$mask\""
                     fi
                 fi
             fi
             if strstr "$gw" '*:*:*'; then
-                echo "IPV6_DEFAULTGW=$gw"
+                echo "IPV6_DEFAULTGW=\"$gw\""
             elif [ -n "$gw" ]; then
-                echo "GATEWAY=$gw"
+                echo "GATEWAY=\"$gw\""
             fi
         fi
+        [ -n "$mtu" ] && echo "MTU=\"$mtu\""
     } > /tmp/ifcfg/ifcfg-$netif
 
     # bridge needs different things written to ifcfg
@@ -146,14 +153,14 @@ for netif in $IFACES ; do
         # standard interface
         {
             if [ -n "$macaddr" ]; then
-                echo "MACADDR=$macaddr"
+                echo "MACADDR=\"$macaddr\""
             else
                 echo "HWADDR=\"$(cat /sys/class/net/$netif/address)\""
             fi
             print_s390 $netif
             echo "TYPE=Ethernet"
             echo "NAME=\"$netif\""
-            [ -n "$mtu" ] && echo "MTU=$mtu"
+            [ -n "$mtu" ] && echo "MTU=\"$mtu\""
         } >> /tmp/ifcfg/ifcfg-$netif
     fi
 
@@ -170,14 +177,14 @@ for netif in $IFACES ; do
             # write separate ifcfg file for the raw eth interface
             {
                 echo "# Generated by dracut initrd"
-                echo "DEVICE=$slave"
+                echo "DEVICE=\"$slave\""
                 echo "TYPE=Ethernet"
                 echo "ONBOOT=yes"
                 echo "NETBOOT=yes"
-                echo "HWADDR=$(cat /sys/class/net/$slave/address)"
+                echo "HWADDR=\"$(cat /sys/class/net/$slave/address)\""
                 echo "SLAVE=yes"
-                echo "MASTER=$netif"
-                echo "NAME=$slave"
+                echo "MASTER=\"$netif\""
+                echo "NAME=\"$slave\""
             } >> /tmp/ifcfg/ifcfg-$slave
         done
     fi
@@ -191,45 +198,45 @@ for netif in $IFACES ; do
         if [ "$ethname" = "$bondname" ] ; then
             {
                 echo "# Generated by dracut initrd"
-                echo "DEVICE=$bondname"
+                echo "DEVICE=\"$bondname\""
                 echo "ONBOOT=yes"
                 echo "NETBOOT=yes"
                 # This variable is an indicator of a bond interface for initscripts
                 echo "BONDING_OPTS=\"$bondoptions\""
-                echo "BRIDGE=$netif"
+                echo "BRIDGE=\"$netif\""
                 echo "NAME=\"$bondname\""
             } >> /tmp/ifcfg/ifcfg-$bondname
             for slave in $bondslaves ; do
                 # write separate ifcfg file for the raw eth interface
                 {
                     echo "# Generated by dracut initrd"
-                    echo "DEVICE=$slave"
+                    echo "DEVICE=\"$slave\""
                     echo "TYPE=Ethernet"
                     echo "ONBOOT=yes"
                     echo "NETBOOT=yes"
-                    echo "HWADDR=$(cat /sys/class/net/$slave/address)"
+                    echo "HWADDR=\"$(cat /sys/class/net/$slave/address)\""
                     echo "SLAVE=yes"
-                    echo "MASTER=$bondname"
-                    echo "NAME=$slave"
+                    echo "MASTER=\"$bondname\""
+                    echo "NAME=\"$slave\""
                 } >> /tmp/ifcfg/ifcfg-$slave
             done
         else
             # write separate ifcfg file for the raw eth interface
             {
                 echo "# Generated by dracut initrd"
-                echo "DEVICE=$ethname"
+                echo "DEVICE=\"$ethname\""
                 echo "TYPE=Ethernet"
                 echo "ONBOOT=yes"
                 echo "NETBOOT=yes"
-                echo "HWADDR=$(cat /sys/class/net/$ethname/address)"
-                echo "BRIDGE=$netif"
-                echo "NAME=$ethname"
+                echo "HWADDR=\"$(cat /sys/class/net/$ethname/address)\""
+                echo "BRIDGE=\"$netif\""
+                echo "NAME=\"$ethname\""
             } >> /tmp/ifcfg/ifcfg-$ethname
         fi
     fi
     i=1
     for ns in $(getargs nameserver); do
-        echo "DNS${i}=${ns}" >> /tmp/ifcfg/ifcfg-$netif
+        echo "DNS${i}=\"${ns}\"" >> /tmp/ifcfg/ifcfg-$netif
         i=$((i+1))
     done
 done