From 679506794b7a07a956ff01385d13a0916956324f Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Tue, 18 Aug 2015 12:56:17 +0200 Subject: [PATCH] backport Allow-selecting-boot-eth-dev-by-MAC-address.patch from upstream --- ...low-selecting-boot-eth-dev-by-MAC-address.patch | 130 +++++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 131 insertions(+) create mode 100644 debian/patches/0001-Allow-selecting-boot-eth-dev-by-MAC-address.patch create mode 100644 debian/patches/series diff --git a/debian/patches/0001-Allow-selecting-boot-eth-dev-by-MAC-address.patch b/debian/patches/0001-Allow-selecting-boot-eth-dev-by-MAC-address.patch new file mode 100644 index 0000000..e17b609 --- /dev/null +++ b/debian/patches/0001-Allow-selecting-boot-eth-dev-by-MAC-address.patch @@ -0,0 +1,130 @@ +From e951deaaeeb2b7badc5a6f53c6af18c1504289ee Mon Sep 17 00:00:00 2001 +From: Riccardo Murri +Date: Fri, 19 Jun 2015 17:50:52 +0200 +Subject: [PATCH] Allow selecting boot eth dev by MAC address + +--- + components/9990-select-eth-device.sh | 101 +++++++++++++++++++++-------------- + 1 file changed, 61 insertions(+), 40 deletions(-) + +diff --git a/components/9990-select-eth-device.sh b/components/9990-select-eth-device.sh +index df00666..6bc67fd 100755 +--- a/components/9990-select-eth-device.sh ++++ b/components/9990-select-eth-device.sh +@@ -49,21 +49,32 @@ Select_eth_device () + return + fi + +- # If user force to use specific device, write it +- for ARGUMENT in ${LIVE_BOOT_CMDLINE} +- do +- case "${ARGUMENT}" in +- live-netdev=*) +- NETDEV="${ARGUMENT#live-netdev=}" +- echo "DEVICE=$NETDEV" >> /conf/param.conf +- echo "Found live-netdev parameter, forcing to to use network device $NETDEV." +- return +- ;; +- esac +- done +- else +- l_interfaces="$DEVICE" +- fi ++ # If user force to use specific device, write it ++ for ARGUMENT in ${LIVE_BOOT_CMDLINE} ++ do ++ case "${ARGUMENT}" in ++ live-netdev=*) ++ NETDEV="${ARGUMENT#live-netdev=}" ++ # net device could be specified by MAC address ++ hex="[0-9A-Fa-f][0-9A-Fa-f]" ++ case "${NETDEV}" in ++ ${hex}:${hex}:${hex}:${hex}:${hex}:${hex}) ++ # MAC address; record it and select later ++ netdev_mac_addr="${NETDEV}" ++ ;; ++ *) ++ # interface name ++ echo "DEVICE=$NETDEV" >> /conf/param.conf ++ echo "Found live-netdev parameter, forcing to to use network device $NETDEV." ++ return ++ ;; ++ esac ++ ;; ++ esac ++ done ++ else ++ l_interfaces="$DEVICE" ++ fi + + found_eth_dev="" + while true +@@ -79,30 +90,40 @@ Select_eth_device () + + echo '' + +- for step in 1 2 3 4 5 +- do +- for interface in $l_interfaces +- do +- carrier=$(cat /sys/class/net/$interface/carrier \ +- 2>/dev/null) +- # link detected ++ for step in 1 2 3 4 5 ++ do ++ for interface in $l_interfaces ++ do ++ if [ -z "$netdev_mac_addr" ]; then ++ carrier=$(cat /sys/class/net/$interface/carrier \ ++ 2>/dev/null) ++ # link detected + +- case "${carrier}" in +- 1) +- echo "Connected $interface found" +- # inform initrd's init script : +- found_eth_dev="$found_eth_dev $interface" +- ;; +- esac +- done +- if [ -n "$found_eth_dev" ] +- then +- echo "DEVICE='$found_eth_dev'" >> /conf/param.conf +- return +- else +- # wait a bit +- sleep 1 +- fi +- done +- done ++ case "${carrier}" in ++ 1) ++ echo "Connected $interface found" ++ # inform initrd's init script : ++ found_eth_dev="$found_eth_dev $interface" ++ ;; ++ esac ++ else ++ # MAC addr given, check for that ++ mac_addr=$(ifconfig "$interface" \ ++ | grep HWaddr \ ++ | { read _ _ _ _ mac_addr; echo $mac_addr; }) ++ if [ "$mac_addr" = "$netdev_mac_addr" ]; then ++ found_eth_dev="$interface" ++ fi ++ fi ++ done ++ if [ -n "$found_eth_dev" ] ++ then ++ echo "DEVICE='$found_eth_dev'" >> /conf/param.conf ++ return ++ else ++ # wait a bit ++ sleep 1 ++ fi ++ done ++ done + } +-- +2.5.0 + diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..dc0986b --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +0001-Allow-selecting-boot-eth-dev-by-MAC-address.patch -- 2.1.4