diff options
author | Vagrant Cascadian <vagrant@freegeek.org> | 2010-02-03 22:48:07 -0800 |
---|---|---|
committer | maximilian attems <maks@debian.org> | 2010-02-24 18:13:02 +0100 |
commit | 673abb77821433a67add61ac79d739c6cee9eee0 (patch) | |
tree | 2cafd8a394c7e814ec98158d781f153d708af0f3 /scripts | |
parent | 1bf31aaa5bc8bf53bf123d8d75a927c1a358171c (diff) | |
download | initramfs-tools-673abb77821433a67add61ac79d739c6cee9eee0.tar.gz initramfs-tools-673abb77821433a67add61ac79d739c6cee9eee0.zip |
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')
-rw-r--r-- | scripts/functions | 36 |
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 |