Bug#535008: configure_networking: support BOOTIF variable set by pxelinux
updated patch that only using only shell parameter expansion and cat:
diff --git a/scripts/functions b/scripts/functions
index 77de8f3..e9e94b3 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -258,6 +258,42 @@ parse_numeric() {
configure_networking()
{
+
+ # 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
+ if [ -n "${BOOTIF}" ]; then
+ # strip off the leading "01-", which isn't part of the mac
+ # address
+ temp_mac=${BOOTIF#*-}
+ bootif_mac=""
+ # given value is the right number of characters, so
+ # loop through replacing "-" with ":" 6 times...
+ for x in 1 2 3 4 5 6 ; do
+ # strip off everything before and including the last "-"
+ x=${temp_mac##*-}
+ # strip off everything before and including the
+ # first occurrance of $x
+ temp_mac=${temp_mac%%-$x}
+ if [ -z "$bootif_mac" ]; then
+ bootif_mac="$x"
+ else
+ bootif_mac="$x:$bootif_mac"
+ fi
+ done
+ 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
sure is starting to look ugly.
tested that it basically works, though it may have lingering bugs if unexpected
values end up in $BOOTIF.
live well,
vagrant
Reply to: