-
-
- # support for Syslinux IPAPPEND parameter
-@@ -653,7 +676,7 @@ do_netsetup ()
-
- if [ "$bootif_mac" = "$current_mac" ]
- then
-- DEVICE=${device##*/}
-+ ETHDEVICE="${device##*/},$ETHDEVICE" # use ethdevice
- break
- fi
- fi
-@@ -665,12 +688,7 @@ do_netsetup ()
- # for *every* present network device (except for loopback of course)
- 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
++
+ # 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