From b22afa48bc111794259230cf3144262c719b55f5 Mon Sep 17 00:00:00 2001 From: Pawel Wieczorkiewicz Date: Wed, 4 Jun 2014 13:00:06 +0200 Subject: 45ifcfg: Add SUSE-specific write-ifcfg file Signed-off-by: Pawel Wieczorkiewicz --- modules.d/45ifcfg/write-ifcfg-suse.sh | 183 ++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100755 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 100755 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 -- 1.8.4.5