summaryrefslogtreecommitdiff
path: root/scripts/functions
diff options
context:
space:
mode:
authorVagrant Cascadian <vagrant@freegeek.org>2010-02-03 22:48:07 -0800
committermaximilian attems <maks@debian.org>2010-02-24 18:13:02 +0100
commit673abb77821433a67add61ac79d739c6cee9eee0 (patch)
tree2cafd8a394c7e814ec98158d781f153d708af0f3 /scripts/functions
parent1bf31aaa5bc8bf53bf123d8d75a927c1a358171c (diff)
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. (closes: #567540) Signed-off-by: maximilian attems <maks@debian.org>
Diffstat (limited to 'scripts/functions')
-rw-r--r--scripts/functions36
1 files changed, 36 insertions, 0 deletions
diff --git a/scripts/functions b/scripts/functions
index c34dd4a..60cfc11 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