xref: /aosp_15_r20/external/sg3_utils/scripts/fc_wwpn_id (revision 44704f698541f6367e81f991ef8bb54ccbf3fc18)
1*44704f69SBart Van Assche#!/bin/bash
2*44704f69SBart Van Assche#
3*44704f69SBart Van Assche# fc_wwpn_id
4*44704f69SBart Van Assche#
5*44704f69SBart Van Assche# Generates device node names links based on FC WWPN
6*44704f69SBart Van Assche# Copyright (c) 2016-2021 Hannes Reinecke, SUSE Linux GmbH
7*44704f69SBart Van Assche#
8*44704f69SBart Van Assche# This program is free software; you can redistribute it and/or modify it
9*44704f69SBart Van Assche# under the terms of the GNU General Public License as published by the
10*44704f69SBart Van Assche# Free Software Foundation version 2 of the License.
11*44704f69SBart Van Assche#
12*44704f69SBart Van Assche
13*44704f69SBart Van AsscheDEVPATH=$1
14*44704f69SBart Van AsscheSCSIPATH=$(cd -P "/sys$DEVPATH/device" || exit; echo "$PWD")
15*44704f69SBart Van Assche
16*44704f69SBart Van Assched=$SCSIPATH
17*44704f69SBart Van Assche[ -d "$d/scsi_disk" ] || exit 0
18*44704f69SBart Van Asschetarget_lun=${d##*:}
19*44704f69SBart Van Assche
20*44704f69SBart Van Asschewhile [ -n "$d" ] ; do
21*44704f69SBart Van Assche    d=${d%/*}
22*44704f69SBart Van Assche    e=${d##*/}
23*44704f69SBart Van Assche    case "$e" in
24*44704f69SBart Van Assche	rport*)
25*44704f69SBart Van Assche	    rport=$e
26*44704f69SBart Van Assche	    rport_dir="/sys/class/fc_remote_ports/$rport"
27*44704f69SBart Van Assche	    if [ -d "$rport_dir" ] ; then
28*44704f69SBart Van Assche		rport_wwpn=$(cat "$rport_dir/port_name")
29*44704f69SBart Van Assche	    fi
30*44704f69SBart Van Assche	    ;;
31*44704f69SBart Van Assche	host*)
32*44704f69SBart Van Assche	    host=$e
33*44704f69SBart Van Assche	    host_dir="/sys/class/fc_host/$host"
34*44704f69SBart Van Assche	    if [ -d "$host_dir" ] ; then
35*44704f69SBart Van Assche		host_wwpn=$(cat "$host_dir/port_name")
36*44704f69SBart Van Assche		break;
37*44704f69SBart Van Assche	    fi
38*44704f69SBart Van Assche    esac
39*44704f69SBart Van Asschedone
40*44704f69SBart Van Assche
41*44704f69SBart Van Asscheif [ -n "$rport_wwpn" ] || [ -n "$host_wwpn" ] ; then
42*44704f69SBart Van Assche    echo "FC_TARGET_LUN=$target_lun"
43*44704f69SBart Van Asschefi
44*44704f69SBart Van Assche
45*44704f69SBart Van Asscheif [ -n "$rport_wwpn" ] ; then
46*44704f69SBart Van Assche    echo "FC_TARGET_WWPN=$rport_wwpn"
47*44704f69SBart Van Asschefi
48*44704f69SBart Van Assche
49*44704f69SBart Van Asscheif [ -n "$host_wwpn" ] ; then
50*44704f69SBart Van Assche    echo "FC_INITIATOR_WWPN=$host_wwpn"
51*44704f69SBart Van Asschefi
52