From caf207afa7c2a65f25be26a735643a873f5c092f Mon Sep 17 00:00:00 2001 From: Harald Hoyer 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