updated patch against current master, using only shell, and with a cleaner
method to convert BOOTF to a typical mac address.

diff --git a/scripts/functions b/scripts/functions
index 77de8f3..cb6cf08 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -258,6 +258,42 @@ parse_numeric() {
 
 configure_networking()
 {
+       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="$x:$bootif_mac"
+                       fi
+               done
+               unset IFS
+
+               # look for devices with matching mac address, and set DEVICE to
+               # appropriate value if match is found.
+               for device in /sys/class/net/* ; do
+                       if [ -f "$device/address" ]; then
+                               current_mac=$(cat "$device/address")
+                               if [ "$bootif_mac" = "$current_mac" ]; then
+                                       DEVICE=${device##*/}
+                                       break
+                               fi
+                       fi
+               done
+       fi
+
        # networking already configured thus bail out
        [ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ] && return 0
 

it may need special handling to make sure BOOTIF is exported, such as if run
from the scripts/*-top/*.

since it's a whole block of code, maybe it could go into it's own function.

please consider applying this patch for squeeze. :)

live well,
  vagrant



-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to