-#! /bin/sh /usr/share/dpatch/dpatch-run
-## 27_support_staticip.dpatch by <mru@grml.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: No description.
-
-@DPATCH@
-
-Index: live-boot-grml/components/9990-networking.sh
-===================================================================
---- live-boot-grml.orig/components/9990-networking.sh 2014-03-08 13:35:17.832580835 +0100
-+++ live-boot-grml/components/9990-networking.sh 2014-03-08 13:35:33.106789237 +0100
-@@ -44,7 +44,7 @@
-
- if [ "$bootif_mac" = "$current_mac" ]
- then
-- DEVICE=${device##*/}
-+ ETHDEVICE="${device##*/},$ETHDEVICE" # use ethdevice
- break
- fi
- fi
-@@ -52,6 +52,24 @@
- fi
- }
-
-+get_ipconfig_para()
-+{
-+ if [ $# != 1 ] ; then
-+ echo "Missin parameter for $0"
-+ return
-+ fi
-+ devname=$1
-+ for ip in ${STATICIP} ; do
-+ case $ip in
-+ *:$devname:*)
-+ echo $ip
-+ return
-+ ;;
-+ esac
-+ done
-+ echo $devname
-+}
-+
- do_netsetup ()
- {
- modprobe -q af_packet # For DHCP
-@@ -62,8 +80,20 @@
- [ -n "$ETHDEV_TIMEOUT" ] || ETHDEV_TIMEOUT=15
- echo "Using timeout of $ETHDEV_TIMEOUT seconds for network configuration."
-
-- if [ -z "${NETBOOT}" ] && [ -z "${FETCH}" ] && [ -z "${HTTPFS}" ] && [ -z "${FTPFS}" ]
-- then
-+ # Our modus operandi for getting a working network setup is this:
-+ # * If ip=* is set, pass that to ipconfig and be done
-+ # * Else, try dhcp on all devices in this order:
-+ # ethdevice= bootif= <all interfaces>
-+
-+ ALLDEVICES="$(cd /sys/class/net/ && ls -1 2>/dev/null | grep -v '^lo$' )"
-+
-+ # Turn on all interfaces before doing anything, to avoid timing problems
-+ # during link negotiation.
-+ echo "Net: Turning on all device links..."
-+ for device in ${ALLDEVICES}; do
-+ ipconfig -c none -d $device -t 1 2>/dev/null >/dev/null
-+ done
-+
- # See if we can select the device from BOOTIF
- Device_from_bootif
-
-@@ -73,14 +103,7 @@
- if [ -z "$ETHDEVICE" ]
- then
- echo "If you want to boot from a specific device use bootoption ethdevice=..."
-- for device in /sys/class/net/*
-- do
-- dev=${device##*/}
-- if [ "$dev" != "lo" ]
-- then
-- ETHDEVICE="$ETHDEVICE $dev"
-- fi
-- done
-+ ETHDEVICE="$ALLDEVICES"
- fi
-
- # split args of ethdevice=eth0,eth1 into "eth0 eth1"
-@@ -89,42 +112,29 @@
- devlist="$devlist $device"
- done
-
-- # this is tricky (and ugly) because ipconfig sometimes just hangs/runs into
-- # an endless loop; if execution fails give it two further tries, that's
-- # why we use '$devlist $devlist $devlist' for the other for loop
-- for dev in $devlist $devlist $devlist
-- do
-- echo "Executing ipconfig -t $ETHDEV_TIMEOUT $dev"
-- ipconfig -t "$ETHDEV_TIMEOUT" $dev | tee -a /netboot.config &
-- jobid=$!
-- sleep "$ETHDEV_TIMEOUT" ; sleep 1
-- if [ -r /proc/"$jobid"/status ]
-- then
-- echo "Killing job $jobid for device $dev as ipconfig ran into recursion..."
-- kill -9 $jobid
-+ for dev in $devlist ; do
-+ param="$(get_ipconfig_para $dev)"
-+ if [ -n "$NODHCP" ] && [ "$param" = "$dev" ] ; then
-+ echo "Ignoring network device $dev due to nodhcp." | tee -a /boot.log
-+ continue
- fi
-+ echo "Executing ipconfig -t $ETHDEV_TIMEOUT $param"
-+ ipconfig -t "$ETHDEV_TIMEOUT" "$param" | tee -a /netboot.config
-
- # if configuration of device worked we should have an assigned
- # IP address, if so let's use the device as $DEVICE for later usage.
- # simple and primitive approach which seems to work fine
-- if ifconfig $dev | grep -q 'inet.*addr:'
-- then
-- export DEVICE="$dev"
-- break
-+
-+ IPV4ADDR="0.0.0.0"
-+ if [ -e "/run/net-${device}.conf" ]; then
-+ . /run/net-${device}.conf
- fi
-- done
-- else
-- for interface in ${DEVICE}; do
-- ipconfig -t "$ETHDEV_TIMEOUT" ${interface} | tee /netboot-${interface}.config
--
-- [ -e /run/net-${interface}.conf ] && . /run/net-${interface}.conf
--
-- if [ "$IPV4ADDR" != "0.0.0.0" ]
-- then
-- break
-+ if [ "${IPV4ADDR}" != "0.0.0.0" ]; then
-+ export DEVICE="$dev $DEVICE"
-+ # break # exit loop as we just use the irst
- fi
- done
-- fi
-+ unset devlist
-
- for interface in ${DEVICE}
- do
-Index: live-boot-grml/components/9990-cmdline-old
-===================================================================
---- live-boot-grml.orig/components/9990-cmdline-old 2014-03-08 13:35:17.832580835 +0100
-+++ live-boot-grml/components/9990-cmdline-old 2014-03-08 13:35:17.828581304 +0100
-@@ -51,9 +51,8 @@
- ;;
-
- ethdevice=*)
-- DEVICE="${_PARAMETER#ethdevice=}"
-- ETHDEVICE="${DEVICE}"
-- export DEVICE ETHDEVICE
-+ ETHDEVICE="${_PARAMETER#ethdevice=}"
-+ export ETHDEVICE
- ;;
-
- ethdevice-timeout=*)
-@@ -110,13 +109,9 @@
- ;;
-
- ip=*)
-- STATICIP="${_PARAMETER#ip=}"
--
-- if [ -z "${STATICIP}" ]
-- then
-- STATICIP="frommedia"
-- fi
--
-+ # copy complete ip=args into staticip, and
-+ # keep multiple uses.
-+ STATICIP="${STATICIP} ${_PARAMETER}"
- export STATICIP
- ;;
-