]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
Don't explode when mixing BOOTIF and ip=
authorWill Woods <wwoods@redhat.com>
Thu, 23 Aug 2012 18:59:35 +0000 (14:59 -0400)
committerHarald Hoyer <harald@redhat.com>
Thu, 13 Jun 2013 12:07:17 +0000 (14:07 +0200)
Now that we can use a MAC as a device identifier, we can just bring up
the device specified by BOOTIF as a normal interface.

So instead of ignoring everything but BOOTIF, we'll put BOOTIF in the
IFACES list and bring it up as normal, defaulting to DHCP if nothing
else is specified.

We can also handle anaconda-style 'ksdevice=bootif' this way.

modules.d/40network/net-lib.sh
modules.d/40network/parse-ip-opts.sh

index 056fbc924c53317a1967e606ac752d4c3ddee66c..416102169ae088e71087db5993c055659ced4386 100644 (file)
@@ -294,7 +294,10 @@ ip_to_var() {
             fi
            ;;
     esac
-    # anaconda-style argument cluster
+
+    # ip=<ipv4-address> means anaconda-style static config argument cluster:
+    # ip=<ip> gateway=<gw> netmask=<nm> hostname=<host> mtu=<mtu>
+    # ksdevice={link|bootif|ibft|<MAC>|<ifname>}
     if strstr "$autoconf" "*.*.*.*"; then
         ip="$autoconf"
         gw=$(getarg gateway=)
@@ -303,9 +306,12 @@ ip_to_var() {
         dev=$(getarg ksdevice=)
         autoconf="none"
         mtu=$(getarg mtu=)
+
+        # handle special values for ksdevice
         case "$dev" in
-            # ignore fancy values for ksdevice=XXX
-            link|bootif|BOOTIF|ibft|*:*:*:*:*:*) dev="" ;;
+            bootif|BOOTIF) dev=$(fix_bootif $(getarg BOOTIF=)) ;;
+            link) dev="" ;; # FIXME: do something useful with this
+            ibft) dev="" ;; # ignore - ibft is handled elsewhere
         esac
     fi
 }
index f64c93678a434aeeed7b0b34d43b4ce0498ae3e4..bdd71db7975285b3752f560bad08a39e84dbf4ec 100755 (executable)
 command -v getarg >/dev/null          || . /lib/dracut-lib.sh
 command -v ibft_to_cmdline >/dev/null || . /lib/net-lib.sh
 
-# Don't mix BOOTIF=macaddr from pxelinux and ip= lines
-getarg ip= >/dev/null && getarg BOOTIF= >/dev/null && \
-    die "Mixing BOOTIF and ip= lines is dangerous"
-
-# No more parsing stuff, BOOTIF says everything
-[ -n "$(getarg BOOTIF)" ] && return
-
 if [ -n "$netroot" ] && [ -z "$(getarg ip=)" ] ; then
     # No ip= argument(s) for netroot provided, defaulting to DHCP
     return;
@@ -118,6 +111,11 @@ for p in $(getargs ip=); do
 
 done
 
+# put BOOTIF in IFACES to make sure it comes up
+if BOOTIF="$(getarg BOOTIF=)"; then
+    IFACES="$IFACES $(fix_bootif $BOOTIF)"
+fi
+
 # This ensures that BOOTDEV is always first in IFACES
 if [ -n "$BOOTDEV" ] && [ -n "$IFACES" ] ; then
     IFACES="${IFACES%$BOOTDEV*} ${IFACES#*$BOOTDEV}"