File 0060-45ifcfg-Add-SUSE-specific-write-ifcfg-file.patch of Package dracut.10038

From 105e96464320c8acae22ee730717e071e156aa0b Mon Sep 17 00:00:00 2001
From: Pawel Wieczorkiewicz <pwieczorkiewicz@suse.com>
Date: Wed, 4 Jun 2014 13:00:06 +0200
Subject: 45ifcfg: Add SUSE-specific write-ifcfg file

Signed-off-by: Pawel Wieczorkiewicz <pwieczorkiewicz@suse.com>
---
 modules.d/45ifcfg/write-ifcfg-suse.sh | 183 ++++++++++++++++++++++++++++++++++
 1 file changed, 183 insertions(+)
 create mode 100644 modules.d/45ifcfg/write-ifcfg-suse.sh

diff --git a/modules.d/45ifcfg/write-ifcfg-suse.sh b/modules.d/45ifcfg/write-ifcfg-suse.sh
new file mode 100644
index 0000000..4b6350f
--- /dev/null
+++ b/modules.d/45ifcfg/write-ifcfg-suse.sh
@@ -0,0 +1,183 @@
+#!/bin/sh
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+# NFS root might have reached here before /tmp/net.ifaces was written
+udevadm settle --timeout=30
+
+if [ -e /tmp/bridge.info ]; then
+    . /tmp/bridge.info
+fi
+
+if [ -e /tmp/vlan.info ]; then
+    . /tmp/vlan.info
+fi
+
+mkdir -m 0755 -p /tmp/ifcfg/
+mkdir -m 0755 -p /tmp/ifcfg-leases/
+
+get_vid() {
+    case "$1" in
+    vlan*)
+        echo ${1#vlan}
+        ;;
+    *.*)
+        echo ${1##*.}
+        ;;
+    esac
+}
+
+for netup in /tmp/net.*.did-setup ; do
+    [ -f $netup ] || continue
+
+    netif=${netup%%.did-setup}
+    netif=${netif##*/net.}
+    [ -e /tmp/ifcfg/ifcfg-$netif ] && continue
+    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)
+    if [ "$netif" = "$bridgename" ]; then
+        bridge=yes
+    elif [ "$netif" = "$bondname" ]; then
+    # $netif can't be bridge and bond at the same time
+        bond=yes
+    fi
+    if [ "$netif" = "$vlanname" ]; then
+        vlan=yes
+    fi
+    cat /sys/class/net/$netif/address > /tmp/net.$netif.hwaddr
+    {
+        echo "# Generated by dracut initrd"
+        echo "NAME='$netif'"
+        if [ -f /tmp/net.$netif.has_ibft_config ]; then
+            echo "STARTMODE='nfsroot'"
+        else
+            echo "STARTMODE='auto'"
+        fi
+
+        local bootproto="static"
+        if [ -f /tmp/leaseinfo.${netif}.dhcp.ipv6 ]; then
+            bootproto="dhcp6"
+        fi
+        if [ -f /tmp/leaseinfo.${netif}.dhcp.ipv4 ]; then
+            if [ "$bootproto" = "dhcp6" ]; then
+                bootproto="dhcp"
+            else
+                bootproto="dhcp4"
+            fi
+        fi
+
+        echo "BOOTPROTO='$bootproto'"
+
+        if [ "$bootproto" = "static" ]; then
+            # If we've booted with static ip= lines, the override file is there
+            [ -e /tmp/net.$netif.override ] && . /tmp/net.$netif.override
+            echo "IPADDR='$ip'"
+            if [ -n "$mask" ]; then
+                if strstr "$mask" "."; then
+                    echo "NETMASK='$mask'"
+                else
+                    echo "PREFIXLEN='$mask'"
+                fi
+            fi
+            if [ -n "$gw" ]; then
+                echo "GATEWAY='$gw'"
+            fi
+        fi
+        [ -n "$mtu" ] && echo "MTU='$mtu'"
+    } > /tmp/ifcfg/ifcfg-$netif
+
+    # bridge needs different things written to ifcfg
+    if [ -z "$bridge" ] && [ -z "$bond" ] && [ -z "$vlan" ]; then
+        # standard interface
+        {
+            if [ -n "$macaddr" ]; then
+                echo "LLADDR='$macaddr'"
+            else
+                echo "LLADDR='$(cat /sys/class/net/$netif/address)'"
+            fi
+            echo "INTERFACETYPE='Ethernet'"
+        } >> /tmp/ifcfg/ifcfg-$netif
+    fi
+
+    if [ -n "$vlan" ]; then
+        {
+            echo "INTERFACETYPE='Vlan'"
+            echo "VLAN_ID='$(get_vid $vlanname)'"
+            echo "ETHERDEVICE='$phydevice'"
+        } >> /tmp/ifcfg/ifcfg-$netif
+    fi
+
+    if [ -n "$bond" ] ; then
+        # bond interface
+        {
+            # This variable is an indicator of a bond interface for initscripts
+            echo "BONDING_MASTER='yes'"
+            echo "BONDING_MODULE_OPTS='$bondoptions'"
+            echo "INTERFACETYPE='Bond'"
+        } >> /tmp/ifcfg/ifcfg-$netif
+
+        local i=0
+        for slave in $bondslaves ; do
+            echo "BONDING_SLAVE_$i='$slave'" >> /tmp/ifcfg/ifcfg-$netif
+            i=$((i+1))
+            # write separate ifcfg file for the raw eth interface
+            {
+                echo "# Generated by dracut initrd"
+                echo "NAME='$slave'"
+                echo "INTERFACETYPE='Ethernet'"
+                echo "STARTMODE='hotplug'"
+                echo "BOOTPROTO='none'"
+                echo "# ETHTOOL=''"
+            } >> /tmp/ifcfg/ifcfg-$slave
+        done
+    fi
+
+    if [ -n "$bridge" ] ; then
+        # bridge
+        {
+            echo "INTERFACETYPE='Bridge'"
+            echo "BRIDGE='yes'"
+            echo "BRIDGE_STP='off'"
+            echo "BRIDGE_FORWARDDELAY='0'"
+            echo -n "BRIDGE_PORTS='"
+
+        } >> /tmp/ifcfg/ifcfg-$netif
+
+        if [ "$ethname" = "$bondname" ] ; then
+            {
+                for slave in $bondslaves ; do
+                    echo -n "$bondname "
+                done
+                echo "'"
+            } >> /tmp/ifcfg/ifcfg-$netif
+        else
+            echo "$ethname'" >> /tmp/ifcfg/ifcfg-$netif
+        fi
+    fi
+done
+
+# Pass network opts
+mkdir -m 0755 -p /run/initramfs/state/etc/sysconfig/network
+mkdir -m 0755 -p /run/initramfs/state/var/run/wicked
+echo "files /etc/sysconfig/network" >> /run/initramfs/rwtab
+echo "files /var/run/wicked" >> /run/initramfs/rwtab
+{
+    cp /tmp/net.* /run/initramfs/
+    cp /tmp/net.$netif.resolv.conf /run/initramfs/state/etc/resolv.conf
+    copytree /tmp/ifcfg /run/initramfs/state/etc/sysconfig/network
+    cp /tmp/leaseinfo.* /run/initramfs/state/var/run/wicked/
+} > /dev/null 2>&1
-- 
2.6.6

openSUSE Build Service is sponsored by