]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
network/ifname-genrules.sh: check for multiple ifname= lines
authorHarald Hoyer <harald@redhat.com>
Fri, 6 Jul 2012 10:57:17 +0000 (12:57 +0200)
committerHarald Hoyer <harald@redhat.com>
Fri, 6 Jul 2012 10:57:17 +0000 (12:57 +0200)
modules.d/40network/ifname-genrules.sh

index d5f8b0f7f0db3b90c2c6e049c9b4f7bead2ebbd9..3cf4be76bab5ee7033fa420fb1fec4eb43b30ec4 100755 (executable)
@@ -12,7 +12,23 @@ command -v parse_ifname_opts >/dev/null || . /lib/net-lib.sh
 {
     for p in $(getargs ifname=); do
         parse_ifname_opts $p
+
+        if [ -f /tmp/ifname-$ifname_mac ]; then
+            read oldif < /tmp/ifname-$ifname_mac
+        fi
+        if [ -f /tmp/ifname-$ifname_if ]; then
+            read oldmac < /tmp/ifname-$ifname_if
+        fi
+        if [ -n "$oldif" -a -n "$oldmac" -a "$oldif" = "$ifname_if" -a "$oldmac" = "$ifname_mac" ]; then
+            # skip same ifname= declaration
+            continue
+        fi
+
+        [ -n "$oldif" ] && warn "Multiple interface names specified for MAC $ifname_mac: $oldif"
+        [ -n "$oldmac" ] && warn "Multiple MAC specified for $ifname_if: $oldmac"
+
         printf 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="%s", ATTR{type}=="1", NAME="%s"\n' "$ifname_mac" "$ifname_if"
+        echo $ifname_if > /tmp/ifname-$ifname_mac
+        echo $ifname_mac > /tmp/ifname-$ifname_if
     done
-
 } >> /etc/udev/rules.d/80-ifname.rules