Remove sourcing /scripts/functions in components
[live-boot-grml.git] / components / 9990-networking.sh
index cdec92a..8e059c9 100755 (executable)
@@ -9,48 +9,47 @@ Device_from_bootif ()
 
        if [ -n "${BOOTIF}" ]
        then
-       # pxelinux sets BOOTIF to a value based on the mac address of the
-       # network card used to PXE boot, so use this value for DEVICE rather
-       # than a hard-coded device name from initramfs.conf. this facilitates
-       # network booting when machines may have multiple network cards.
-       # pxelinux sets BOOTIF to 01-$mac_address
-
-       # strip off the leading "01-", which isn't part of the mac
-       # address
-       temp_mac=${BOOTIF#*-}
-
-       # convert to typical mac address format by replacing "-" with ":"
-       bootif_mac=""
-       IFS='-'
-       for x in $temp_mac
-       do
-               if [ -z "$bootif_mac" ]
-               then
-                       bootif_mac="$x"
-               else
-                       bootif_mac="$bootif_mac:$x"
-               fi
-       done
-       unset IFS
-
-       # look for devices with matching mac address, and set DEVICE to
-       # appropriate value if match is found.
+               # pxelinux sets BOOTIF to a value based on the mac address of the
+               # network card used to PXE boot, so use this value for DEVICE rather
+               # than a hard-coded device name from initramfs.conf. this facilitates
+               # network booting when machines may have multiple network cards.
+               # pxelinux sets BOOTIF to 01-$mac_address
+
+               # strip off the leading "01-", which isn't part of the mac
+               # address
+               temp_mac=${BOOTIF#*-}
+
+               # convert to typical mac address format by replacing "-" with ":"
+               bootif_mac=""
+               IFS='-'
+               for x in $temp_mac
+               do
+                       if [ -z "$bootif_mac" ]
+                       then
+                               bootif_mac="$x"
+                       else
+                               bootif_mac="$bootif_mac:$x"
+                       fi
+               done
+               unset IFS
 
-       for device in /sys/class/net/*
-       do
-               if [ -f "$device/address" ]
-               then
-               current_mac=$(cat "$device/address")
+               # look for devices with matching mac address, and set DEVICE to
+               # appropriate value if match is found.
 
-                       if [ "$bootif_mac" = "$current_mac" ]
+               for device in /sys/class/net/*
+               do
+                       if [ -f "$device/address" ]
                        then
-                               DEVICE=${device##*/}
-                               break
+                       current_mac=$(cat "$device/address")
+
+                               if [ "$bootif_mac" = "$current_mac" ]
+                               then
+                                       DEVICE=${device##*/}
+                                       break
+                               fi
                        fi
-               fi
-       done
+               done
        fi
-
 }
 
 do_netsetup ()
@@ -90,25 +89,15 @@ do_netsetup ()
                        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
+               for dev in $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
-                       fi
+                       ipconfig -t "$ETHDEV_TIMEOUT" $dev | 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:'
+                       if ifconfig $dev | grep -q -E 'inet.*addr:|inet [0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*'
                        then
                                export DEVICE="$dev"
                                break
@@ -152,7 +141,7 @@ do_netsetup ()
                                echo "search ${DNSDOMAIN}" >> /etc/resolv.conf
                        fi
 
-                       for i in ${IPV4DNS0} ${IPV4DNS1} ${IPV4DNS1}
+                       for i in ${IPV4DNS0} ${IPV4DNS1} ${IPV4DNS1} ${DNSSERVERS}
                        do
                                if [ -n "$i" ] && [ "$i" != 0.0.0.0 ]
                                then