--- /dev/null
+#!/bin/sh
+
+# We depend on network modules being loaded
+[ "$1" = "-d" ] && echo network
+
+# FIXME
+# If hostonly was requested, fail the check if we are not actually
+# booting from root.
+#[ "$1" = "-h" ] && ! egrep -q '/ /dev/nbd[0-9]*' /proc/mounts && exit 1
+
+exit 0
--- /dev/null
+#!/bin/sh
+
+# We use (fcoe_interface or fcoe_mac) and fcoe_dcb as set by parse-fcoe.sh
+# If neither mac nor interface are set we don't continue
+[ -z "$fcoe_interface" -a -z "$fcoe_mac" ] && return
+
+# Write udev rules
+{
+ if [ -n "$fcoe_mac" ] ; then
+ printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/fcoe-up $env{INTERFACE} %s"\n' "$fcoe_mac" "$fcoe_dcb"
+ else
+ printf 'ACTION=="add", SUBSYSTEM=="net", KERNEL=="%s", RUN+="/sbin/fcoe-up $env{INTERFACE} %s"\n' "$fcoe_interface" "$fcoe_dcb"
+ fi
+} > /etc/udev/rules.d/60-fcoe.rules
--- /dev/null
+#!/bin/sh
+#
+# We get called like this:
+# /sbin/fcoe-up <network-device> <dcb|nodcb>
+#
+# Note currently only nodcb is supported, the dcb option is reserved for
+# future use.
+
+# Huh? Missing arguments ??
+[ -z "$1" -o -z "$2" ] && exit 1
+
+netif=$1
+dcb=$2
+
+/sbin/ip link set "$netif" up
+echo -n "$netif" > /sys/module/fcoe/parameters/create
--- /dev/null
+#!/bin/bash
+
+dracut_install ip
+
+inst "$moddir/fcoe-up" "/sbin/fcoe-up"
+inst_hook pre-udev 60 "$moddir/fcoe-genrules.sh"
+inst_hook cmdline 99 "$moddir/parse-fcoe.sh"
--- /dev/null
+#!/bin/bash
+instmods fcoe
--- /dev/null
+#!/bin/sh
+#
+# Supported formats:
+# fcoe=<networkdevice>:<dcb|nodcb>
+# fcoe=<macaddress>:<dcb|nodcb>
+#
+# Note currently only nodcb is supported, the dcb option is reserved for
+# future use.
+#
+# Note letters in the macaddress must be lowercase!
+#
+# Examples:
+# fcoe=eth0:nodcb
+# fcoe=4A:3F:4C:04:F8:D7:nodcb
+
+[ -z "$fcoe" ] && fcoe=$(getarg fcoe=)
+
+# If it's not set we don't continue
+[ -z "$fcoe" ] && return
+
+parse_fcoe_opts() {
+ local IFS=:
+ set $fcoe
+
+ case $# in
+ 2)
+ fcoe_interface=$1
+ fcoe_dcb=$2
+ ;;
+ 7)
+ fcoe_mac=$1:$2:$3:$4:$5:$6
+ fcoe_dcb=$7
+ ;;
+ *)
+ die "Invalid arguments for fcoe="
+ ;;
+ esac
+}
+
+parse_fcoe_opts
+
+# currently only nodcb is supported
+if [ "$fcoe_dcb" != "nodcb" ] ; then
+ die "Invalid FCoE DCB option: $fcoe_dcb"
+fi
+
+# FCoE actually supported?
+[ -e /sys/module/fcoe/parameters/create ] || modprobe fcoe || die "FCoE requested but kernel/initrd does not support FCoE"