#!/bin/bash #%stage: device #%depends: network lldpad #%programs: fcoeadm #%programs: fipvlan #%programs: ip #%programs: sed #%programs: sleep #%programs: vconfig #%modules: fcoe 8021q #%if: "$root_fcoe" # ##### FCoE initialization ## ## This script initializes FCoE (FC over Ethernet). load_modules create_fcoe_vlan() { local if=$1 local vlan=$2 local vif=$3 vconfig add $if $vlan tmp_vif=$(sed -n "s/\([^ ]*\).*${vlan}.*${if}/\1/p" /proc/net/vlan/config) if [ "$vif" ] && [ "$tmp_vif" != "$vif" ] ; then ip link set dev $tmp_vif name $vif fi wait_for_events ip link set $if up ip link set $vif up } wait_for_fcoe_if() { local ifname=$1 local retry_count=$udev_timeout echo -n "Wait for FCoE link on $ifname: " while [ $retry_count -gt 0 ] ; do status=$(fcoeadm -i $ifname 2> /dev/null | sed -n "s/.*State: *\(.*\)/\1/p") if [ "$status" = "Online" ] ; then echo "Ok" return 0 fi echo -n "." retry_count=$(($retry_count-1)) sleep 2 done emergency "Failed!" } create_fcoe_vlan $fcoe_if $fcoe_vlan $fcoe_vif fipvlan -s $fcoe_if wait_for_fcoe_if $fcoe_vif