summaryrefslogtreecommitdiffstats
path: root/modules.d/45net-lib/ifname-genrules.sh
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 14:01:37 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 14:01:37 +0000
commit734d725d62d2cbe4445524448de024e3b9e7f4b3 (patch)
tree88d8385f24a0efda248b3480fe39037b85e76552 /modules.d/45net-lib/ifname-genrules.sh
parentReleasing progress-linux version 060+5-8~progress7.99u1. (diff)
downloaddracut-734d725d62d2cbe4445524448de024e3b9e7f4b3.tar.xz
dracut-734d725d62d2cbe4445524448de024e3b9e7f4b3.zip
Merging upstream version 102.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'modules.d/45net-lib/ifname-genrules.sh')
-rwxr-xr-xmodules.d/45net-lib/ifname-genrules.sh32
1 files changed, 32 insertions, 0 deletions
diff --git a/modules.d/45net-lib/ifname-genrules.sh b/modules.d/45net-lib/ifname-genrules.sh
new file mode 100755
index 0000000..b9b95c4
--- /dev/null
+++ b/modules.d/45net-lib/ifname-genrules.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# if there are no ifname parameters, just use NAME=KERNEL
+if ! getarg ifname= > /dev/null; then
+ return
+fi
+
+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 -r oldif < /tmp/ifname-"$ifname_mac"
+ fi
+ if [ -f /tmp/ifname-"$ifname_if" ]; then
+ read -r 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