xref: /onnv-gate/usr/src/lib/libdtrace/common/fc.d (revision 9625:8aa5731291b4)
19578SSam.Cramer@Sun.COM /*
29578SSam.Cramer@Sun.COM  * CDDL HEADER START
39578SSam.Cramer@Sun.COM  *
49578SSam.Cramer@Sun.COM  * The contents of this file are subject to the terms of the
59578SSam.Cramer@Sun.COM  * Common Development and Distribution License (the "License").
69578SSam.Cramer@Sun.COM  * You may not use this file except in compliance with the License.
79578SSam.Cramer@Sun.COM  *
89578SSam.Cramer@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
99578SSam.Cramer@Sun.COM  * or http://www.opensolaris.org/os/licensing.
109578SSam.Cramer@Sun.COM  * See the License for the specific language governing permissions
119578SSam.Cramer@Sun.COM  * and limitations under the License.
129578SSam.Cramer@Sun.COM  *
139578SSam.Cramer@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
149578SSam.Cramer@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
159578SSam.Cramer@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
169578SSam.Cramer@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
179578SSam.Cramer@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
189578SSam.Cramer@Sun.COM  *
199578SSam.Cramer@Sun.COM  * CDDL HEADER END
209578SSam.Cramer@Sun.COM  */
219578SSam.Cramer@Sun.COM 
229578SSam.Cramer@Sun.COM /*
239578SSam.Cramer@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
249578SSam.Cramer@Sun.COM  * Use is subject to license terms.
259578SSam.Cramer@Sun.COM  */
269578SSam.Cramer@Sun.COM 
279578SSam.Cramer@Sun.COM #pragma	D depends_on library net.d
289578SSam.Cramer@Sun.COM #pragma	D depends_on library scsi.d
299578SSam.Cramer@Sun.COM #pragma	D depends_on module genunix
30*9625SSam.Cramer@Sun.COM #pragma	D depends_on module fct
319578SSam.Cramer@Sun.COM 
329578SSam.Cramer@Sun.COM /*
339578SSam.Cramer@Sun.COM  * FC port information.
349578SSam.Cramer@Sun.COM  */
359578SSam.Cramer@Sun.COM typedef struct fc_port_info {
369578SSam.Cramer@Sun.COM 	string fcp_node_wwn;		/* node WWN */
379578SSam.Cramer@Sun.COM 	string fcp_sym_node_name;	/* node symbolic name */
389578SSam.Cramer@Sun.COM 	string fcp_sym_port_name;	/* port symbolic name */
399578SSam.Cramer@Sun.COM 	uint32_t fcp_port_hard_address;	/* port hard address */
409578SSam.Cramer@Sun.COM } fc_port_info_t;
419578SSam.Cramer@Sun.COM 
429578SSam.Cramer@Sun.COM /*
439578SSam.Cramer@Sun.COM  * FC transfer info (somewhat analogous to iscsiinfo_t)
449578SSam.Cramer@Sun.COM  * Represents data transfer details.
459578SSam.Cramer@Sun.COM  */
469578SSam.Cramer@Sun.COM typedef struct fc_xferinfo {
479578SSam.Cramer@Sun.COM 	uint32_t fcx_len;
489578SSam.Cramer@Sun.COM 	uint32_t fcx_offset;
499578SSam.Cramer@Sun.COM 	uint16_t fcx_flags;	/* db_flags as defined in sys/stmf.h */
509578SSam.Cramer@Sun.COM } fc_xferinfo_t;
519578SSam.Cramer@Sun.COM 
529578SSam.Cramer@Sun.COM /*
539578SSam.Cramer@Sun.COM  * conninfo translators
549578SSam.Cramer@Sun.COM  */
559578SSam.Cramer@Sun.COM 
569578SSam.Cramer@Sun.COM /*
579578SSam.Cramer@Sun.COM  * Translator for conninfo, translating from the local port.
589578SSam.Cramer@Sun.COM  */
599578SSam.Cramer@Sun.COM #pragma D binding "1.5" translator
609578SSam.Cramer@Sun.COM translator conninfo_t < fct_local_port_t *P > {
619578SSam.Cramer@Sun.COM  	ci_local = P->port_pwwn_str[0] ?
629578SSam.Cramer@Sun.COM 	    P->port_pwwn_str : "<unknown>";
639578SSam.Cramer@Sun.COM  	ci_remote = "<unknown>";
649578SSam.Cramer@Sun.COM 	ci_protocol = "fc";
659578SSam.Cramer@Sun.COM };
669578SSam.Cramer@Sun.COM 
679578SSam.Cramer@Sun.COM /*
689578SSam.Cramer@Sun.COM  * Translator for conninfo, translating from the local port implementation.
699578SSam.Cramer@Sun.COM  */
709578SSam.Cramer@Sun.COM #pragma D binding "1.5" translator
719578SSam.Cramer@Sun.COM translator conninfo_t < fct_i_local_port_t *P > {
729578SSam.Cramer@Sun.COM  	ci_local = P->iport_port->port_pwwn_str[0] ?
739578SSam.Cramer@Sun.COM 		 P->iport_port->port_pwwn_str : "<unknown>";
749578SSam.Cramer@Sun.COM  	ci_remote = "<unknown>";
759578SSam.Cramer@Sun.COM 	ci_protocol = "fc";
769578SSam.Cramer@Sun.COM };
779578SSam.Cramer@Sun.COM 
789578SSam.Cramer@Sun.COM /*
799578SSam.Cramer@Sun.COM  * Translator for conninfo, translating from fct cmd struct.
809578SSam.Cramer@Sun.COM  */
819578SSam.Cramer@Sun.COM #pragma D binding "1.5" translator
829578SSam.Cramer@Sun.COM translator conninfo_t < fct_cmd_t *C > {
839578SSam.Cramer@Sun.COM  	ci_local = (C->cmd_port ?
849578SSam.Cramer@Sun.COM 		 (C->cmd_port->port_pwwn_str[0] ?
859578SSam.Cramer@Sun.COM 		  C->cmd_port->port_pwwn_str : "<unknown>") :
869578SSam.Cramer@Sun.COM 		 "<unknown>");
879578SSam.Cramer@Sun.COM 
889578SSam.Cramer@Sun.COM  	ci_remote = (C->cmd_rp ?
899578SSam.Cramer@Sun.COM 		 (C->cmd_rp->rp_pwwn_str[0] ?
909578SSam.Cramer@Sun.COM 		  C->cmd_rp->rp_pwwn_str : "<unknown>") :
919578SSam.Cramer@Sun.COM 		 "<unknown>");
929578SSam.Cramer@Sun.COM 
939578SSam.Cramer@Sun.COM 	ci_protocol = "fc";
949578SSam.Cramer@Sun.COM };
959578SSam.Cramer@Sun.COM 
969578SSam.Cramer@Sun.COM 
979578SSam.Cramer@Sun.COM /*
989578SSam.Cramer@Sun.COM  * fc_port_info_t translators.
999578SSam.Cramer@Sun.COM  */
1009578SSam.Cramer@Sun.COM 
1019578SSam.Cramer@Sun.COM /*
1029578SSam.Cramer@Sun.COM  * Translator for fc_port_info_t, translating from the local port.
1039578SSam.Cramer@Sun.COM  */
1049578SSam.Cramer@Sun.COM #pragma D binding "1.5" translator
1059578SSam.Cramer@Sun.COM translator fc_port_info_t < fct_local_port_t *P > {
1069578SSam.Cramer@Sun.COM         /* node WWN */
1079578SSam.Cramer@Sun.COM 	fcp_node_wwn = P->port_nwwn_str[0] ?
1089578SSam.Cramer@Sun.COM 		     P->port_nwwn_str : "<unknown>";
1099578SSam.Cramer@Sun.COM 
1109578SSam.Cramer@Sun.COM 	/* node symbolic name */
1119578SSam.Cramer@Sun.COM 	fcp_sym_node_name = P->port_sym_node_name ?
1129578SSam.Cramer@Sun.COM 		P->port_sym_node_name : `utsname.nodename;
1139578SSam.Cramer@Sun.COM 
1149578SSam.Cramer@Sun.COM 	/* port symbolic name */
1159578SSam.Cramer@Sun.COM 	fcp_sym_port_name = P->port_sym_port_name ?
1169578SSam.Cramer@Sun.COM 			P->port_sym_port_name : "<unknown>";
1179578SSam.Cramer@Sun.COM 
1189578SSam.Cramer@Sun.COM 	/* port hard address */
1199578SSam.Cramer@Sun.COM 	fcp_port_hard_address = P->port_hard_address;
1209578SSam.Cramer@Sun.COM };
1219578SSam.Cramer@Sun.COM 
1229578SSam.Cramer@Sun.COM 
1239578SSam.Cramer@Sun.COM /*
1249578SSam.Cramer@Sun.COM  * Translator for fc_port_info_t, translating from the local port impl.
1259578SSam.Cramer@Sun.COM  */
1269578SSam.Cramer@Sun.COM #pragma D binding "1.5" translator
1279578SSam.Cramer@Sun.COM translator fc_port_info_t < fct_i_local_port_t *P > {
1289578SSam.Cramer@Sun.COM         /* node WWN */
1299578SSam.Cramer@Sun.COM 
1309578SSam.Cramer@Sun.COM 	fcp_node_wwn = (P->iport_port ?
1319578SSam.Cramer@Sun.COM 			   (P->iport_port->port_nwwn_str[0] ?
1329578SSam.Cramer@Sun.COM 		               P->iport_port->port_nwwn_str :
1339578SSam.Cramer@Sun.COM 			       "<unknown>") :
1349578SSam.Cramer@Sun.COM 		           "<bad iport_port ptr>");
1359578SSam.Cramer@Sun.COM 
1369578SSam.Cramer@Sun.COM 	fcp_sym_node_name =
1379578SSam.Cramer@Sun.COM 			 (P->iport_port ?
1389578SSam.Cramer@Sun.COM 			   (P->iport_port->port_sym_node_name ?
1399578SSam.Cramer@Sun.COM 		            P->iport_port->port_sym_node_name : "<unknown>") :
1409578SSam.Cramer@Sun.COM 		           "<bad iport_port ptr>");
1419578SSam.Cramer@Sun.COM 
1429578SSam.Cramer@Sun.COM 	fcp_sym_port_name =
1439578SSam.Cramer@Sun.COM 			 (P->iport_port ?
1449578SSam.Cramer@Sun.COM 			   (P->iport_port->port_sym_port_name ?
1459578SSam.Cramer@Sun.COM 		            P->iport_port->port_sym_port_name : "<unknown>") :
1469578SSam.Cramer@Sun.COM 		           "<bad iport_port ptr>");
1479578SSam.Cramer@Sun.COM 
1489578SSam.Cramer@Sun.COM 	fcp_port_hard_address =
1499578SSam.Cramer@Sun.COM 			 (P->iport_port ?
1509578SSam.Cramer@Sun.COM 			   P->iport_port->port_hard_address : 0);
1519578SSam.Cramer@Sun.COM };
1529578SSam.Cramer@Sun.COM 
1539578SSam.Cramer@Sun.COM /*
1549578SSam.Cramer@Sun.COM  * Translator for fc_port_info, translating from the remote port impl
1559578SSam.Cramer@Sun.COM  */
1569578SSam.Cramer@Sun.COM #pragma D binding "1.5" translator
1579578SSam.Cramer@Sun.COM translator fc_port_info_t < fct_i_remote_port_t *P > {
1589578SSam.Cramer@Sun.COM 
1599578SSam.Cramer@Sun.COM         /* node WWN */
1609578SSam.Cramer@Sun.COM 	fcp_node_wwn = P->irp_rp ?
1619578SSam.Cramer@Sun.COM 			   (P->irp_rp->rp_nwwn_str[0] ?
1629578SSam.Cramer@Sun.COM 			     P->irp_rp->rp_nwwn_str : "<unknown>") :
1639578SSam.Cramer@Sun.COM                            "<unknown>";
1649578SSam.Cramer@Sun.COM 
1659578SSam.Cramer@Sun.COM 	/* node symbolic name */
1669578SSam.Cramer@Sun.COM 	fcp_sym_node_name = P->irp_snn ? P->irp_snn : "<unknown>";
1679578SSam.Cramer@Sun.COM 
1689578SSam.Cramer@Sun.COM 	/* port symbolic name */
1699578SSam.Cramer@Sun.COM 	fcp_sym_port_name = P->irp_spn ? P->irp_spn : "<unknown>";
1709578SSam.Cramer@Sun.COM 
1719578SSam.Cramer@Sun.COM 	/* port hard address */
1729578SSam.Cramer@Sun.COM 	fcp_port_hard_address = P->irp_rp ? P->irp_rp->rp_id : 0;
1739578SSam.Cramer@Sun.COM };
1749578SSam.Cramer@Sun.COM 
1759578SSam.Cramer@Sun.COM /*
1769578SSam.Cramer@Sun.COM  * Translator for fc_xferinfo, translating from stmf_data_buf_t.
1779578SSam.Cramer@Sun.COM  */
1789578SSam.Cramer@Sun.COM #pragma D binding "1.5" translator
1799578SSam.Cramer@Sun.COM translator fc_xferinfo_t < stmf_data_buf_t *B > {
1809578SSam.Cramer@Sun.COM 	   fcx_len = B->db_data_size;
1819578SSam.Cramer@Sun.COM 	   fcx_offset = B->db_relative_offset;
1829578SSam.Cramer@Sun.COM 	   fcx_flags = B->db_flags;
1839578SSam.Cramer@Sun.COM };
184