backport Allow-selecting-boot-eth-dev-by-MAC-address.patch from upstream
authorEvgeni Golov <evgeni@grml.org>
Tue, 18 Aug 2015 10:56:17 +0000 (12:56 +0200)
committerEvgeni Golov <evgeni@grml.org>
Tue, 18 Aug 2015 10:56:17 +0000 (12:56 +0200)
debian/patches/0001-Allow-selecting-boot-eth-dev-by-MAC-address.patch [new file with mode: 0644]
debian/patches/series [new file with mode: 0644]

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 (file)
index 0000000..e17b609
--- /dev/null
@@ -0,0 +1,130 @@
+From e951deaaeeb2b7badc5a6f53c6af18c1504289ee Mon Sep 17 00:00:00 2001
+From: Riccardo Murri <riccardo.murri@gmail.com>
+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 (file)
index 0000000..dc0986b
--- /dev/null
@@ -0,0 +1 @@
+0001-Allow-selecting-boot-eth-dev-by-MAC-address.patch