summaryrefslogtreecommitdiffstats
path: root/modules.d/95fcoe-uefi
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 13:54:25 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 13:54:25 +0000
commit9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a (patch)
tree2efb72864cc69e174c9c5ee33efb88a5f1553b48 /modules.d/95fcoe-uefi
parentInitial commit. (diff)
downloaddracut-9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a.tar.xz
dracut-9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a.zip
Adding upstream version 060+5.upstream/060+5
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'modules.d/95fcoe-uefi')
-rwxr-xr-xmodules.d/95fcoe-uefi/module-setup.sh27
-rwxr-xr-xmodules.d/95fcoe-uefi/parse-uefifcoe.sh33
2 files changed, 60 insertions, 0 deletions
diff --git a/modules.d/95fcoe-uefi/module-setup.sh b/modules.d/95fcoe-uefi/module-setup.sh
new file mode 100755
index 0000000..9dc1e73
--- /dev/null
+++ b/modules.d/95fcoe-uefi/module-setup.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+# called by dracut
+check() {
+ is_fcoe() {
+ block_is_fcoe "$1" || return 1
+ }
+
+ [[ $hostonly ]] || [[ $mount_needs ]] && {
+ for_each_host_dev_and_slaves is_fcoe || return 255
+ [ -d /sys/firmware/efi ] || return 255
+ }
+
+ require_binaries dcbtool fipvlan lldpad ip readlink || return 1
+ return 0
+}
+
+# called by dracut
+depends() {
+ echo fcoe uefi-lib bash
+ return 0
+}
+
+# called by dracut
+install() {
+ inst_hook cmdline 20 "$moddir/parse-uefifcoe.sh"
+}
diff --git a/modules.d/95fcoe-uefi/parse-uefifcoe.sh b/modules.d/95fcoe-uefi/parse-uefifcoe.sh
new file mode 100755
index 0000000..e120dec
--- /dev/null
+++ b/modules.d/95fcoe-uefi/parse-uefifcoe.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+command -v getarg > /dev/null || . /lib/dracut-lib.sh
+command -v get_fcoe_boot_mac > /dev/null || . /lib/uefi-lib.sh
+command -v set_ifname > /dev/null || . /lib/net-lib.sh
+
+print_fcoe_uefi_conf() {
+ local mac dev vlan
+ mac=$(get_fcoe_boot_mac "$1")
+ [ -z "$mac" ] && return 1
+ dev=$(set_ifname fcoe "$mac")
+ vlan=$(get_fcoe_boot_vlan "$1")
+ if [ "$vlan" -ne "0" ]; then
+ case "$vlan" in
+ [0-9]*)
+ printf "%s\n" "vlan=$dev.$vlan:$dev"
+ dev="$dev.$vlan"
+ ;;
+ *)
+ printf "%s\n" "vlan=$vlan:$dev"
+ dev="$vlan"
+ ;;
+ esac
+ fi
+ # fcoe=eth0:nodcb
+ printf "fcoe=%s\n" "$dev:nodcb"
+ return 0
+}
+
+for i in /sys/firmware/efi/efivars/FcoeBootDevice-*; do
+ [ -e "$i" ] || continue
+ print_fcoe_uefi_conf "$i" > /etc/cmdline.d/40-fcoe-uefi.conf && break
+done