Bug#535008: configure_networking: support BOOTIF variable set by pxelinux
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
Reply to: