aboutsummaryrefslogtreecommitdiff
path: root/scripts/fc_wwpn_id
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/fc_wwpn_id')
-rw-r--r--scripts/fc_wwpn_id51
1 files changed, 51 insertions, 0 deletions
diff --git a/scripts/fc_wwpn_id b/scripts/fc_wwpn_id
new file mode 100644
index 00000000..17c74fe8
--- /dev/null
+++ b/scripts/fc_wwpn_id
@@ -0,0 +1,51 @@
+#!/bin/bash
+#
+# fc_wwpn_id
+#
+# Generates device node names links based on FC WWPN
+# Copyright (c) 2016-2021 Hannes Reinecke, SUSE Linux GmbH
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation version 2 of the License.
+#
+
+DEVPATH=$1
+SCSIPATH=$(cd -P "/sys$DEVPATH/device" || exit; echo "$PWD")
+
+d=$SCSIPATH
+[ -d "$d/scsi_disk" ] || exit 0
+target_lun=${d##*:}
+
+while [ -n "$d" ] ; do
+ d=${d%/*}
+ e=${d##*/}
+ case "$e" in
+ rport*)
+ rport=$e
+ rport_dir="/sys/class/fc_remote_ports/$rport"
+ if [ -d "$rport_dir" ] ; then
+ rport_wwpn=$(cat "$rport_dir/port_name")
+ fi
+ ;;
+ host*)
+ host=$e
+ host_dir="/sys/class/fc_host/$host"
+ if [ -d "$host_dir" ] ; then
+ host_wwpn=$(cat "$host_dir/port_name")
+ break;
+ fi
+ esac
+done
+
+if [ -n "$rport_wwpn" ] || [ -n "$host_wwpn" ] ; then
+ echo "FC_TARGET_LUN=$target_lun"
+fi
+
+if [ -n "$rport_wwpn" ] ; then
+ echo "FC_TARGET_WWPN=$rport_wwpn"
+fi
+
+if [ -n "$host_wwpn" ] ; then
+ echo "FC_INITIATOR_WWPN=$host_wwpn"
+fi