1d8c54e3dSSam Cramer /* 2d8c54e3dSSam Cramer * CDDL HEADER START 3d8c54e3dSSam Cramer * 4d8c54e3dSSam Cramer * The contents of this file are subject to the terms of the 5d8c54e3dSSam Cramer * Common Development and Distribution License (the "License"). 6d8c54e3dSSam Cramer * You may not use this file except in compliance with the License. 7d8c54e3dSSam Cramer * 8d8c54e3dSSam Cramer * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9d8c54e3dSSam Cramer * or http://www.opensolaris.org/os/licensing. 10d8c54e3dSSam Cramer * See the License for the specific language governing permissions 11d8c54e3dSSam Cramer * and limitations under the License. 12d8c54e3dSSam Cramer * 13d8c54e3dSSam Cramer * When distributing Covered Code, include this CDDL HEADER in each 14d8c54e3dSSam Cramer * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15d8c54e3dSSam Cramer * If applicable, add the following below this CDDL HEADER, with the 16d8c54e3dSSam Cramer * fields enclosed by brackets "[]" replaced with your own identifying 17d8c54e3dSSam Cramer * information: Portions Copyright [yyyy] [name of copyright owner] 18d8c54e3dSSam Cramer * 19d8c54e3dSSam Cramer * CDDL HEADER END 20d8c54e3dSSam Cramer */ 21d8c54e3dSSam Cramer 22d8c54e3dSSam Cramer /* 23d8c54e3dSSam Cramer * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24d8c54e3dSSam Cramer * Use is subject to license terms. 25d8c54e3dSSam Cramer */ 26d8c54e3dSSam Cramer 27d8c54e3dSSam Cramer #pragma D depends_on library net.d 28d8c54e3dSSam Cramer #pragma D depends_on library scsi.d 29d8c54e3dSSam Cramer #pragma D depends_on module genunix 30*072f7b95SSam Cramer #pragma D depends_on module fct 31d8c54e3dSSam Cramer 32d8c54e3dSSam Cramer /* 33d8c54e3dSSam Cramer * FC port information. 34d8c54e3dSSam Cramer */ 35d8c54e3dSSam Cramer typedef struct fc_port_info { 36d8c54e3dSSam Cramer string fcp_node_wwn; /* node WWN */ 37d8c54e3dSSam Cramer string fcp_sym_node_name; /* node symbolic name */ 38d8c54e3dSSam Cramer string fcp_sym_port_name; /* port symbolic name */ 39d8c54e3dSSam Cramer uint32_t fcp_port_hard_address; /* port hard address */ 40d8c54e3dSSam Cramer } fc_port_info_t; 41d8c54e3dSSam Cramer 42d8c54e3dSSam Cramer /* 43d8c54e3dSSam Cramer * FC transfer info (somewhat analogous to iscsiinfo_t) 44d8c54e3dSSam Cramer * Represents data transfer details. 45d8c54e3dSSam Cramer */ 46d8c54e3dSSam Cramer typedef struct fc_xferinfo { 47d8c54e3dSSam Cramer uint32_t fcx_len; 48d8c54e3dSSam Cramer uint32_t fcx_offset; 49d8c54e3dSSam Cramer uint16_t fcx_flags; /* db_flags as defined in sys/stmf.h */ 50d8c54e3dSSam Cramer } fc_xferinfo_t; 51d8c54e3dSSam Cramer 52d8c54e3dSSam Cramer /* 53d8c54e3dSSam Cramer * conninfo translators 54d8c54e3dSSam Cramer */ 55d8c54e3dSSam Cramer 56d8c54e3dSSam Cramer /* 57d8c54e3dSSam Cramer * Translator for conninfo, translating from the local port. 58d8c54e3dSSam Cramer */ 59d8c54e3dSSam Cramer #pragma D binding "1.5" translator 60d8c54e3dSSam Cramer translator conninfo_t < fct_local_port_t *P > { 61d8c54e3dSSam Cramer ci_local = P->port_pwwn_str[0] ? 62d8c54e3dSSam Cramer P->port_pwwn_str : "<unknown>"; 63d8c54e3dSSam Cramer ci_remote = "<unknown>"; 64d8c54e3dSSam Cramer ci_protocol = "fc"; 65d8c54e3dSSam Cramer }; 66d8c54e3dSSam Cramer 67d8c54e3dSSam Cramer /* 68d8c54e3dSSam Cramer * Translator for conninfo, translating from the local port implementation. 69d8c54e3dSSam Cramer */ 70d8c54e3dSSam Cramer #pragma D binding "1.5" translator 71d8c54e3dSSam Cramer translator conninfo_t < fct_i_local_port_t *P > { 72d8c54e3dSSam Cramer ci_local = P->iport_port->port_pwwn_str[0] ? 73d8c54e3dSSam Cramer P->iport_port->port_pwwn_str : "<unknown>"; 74d8c54e3dSSam Cramer ci_remote = "<unknown>"; 75d8c54e3dSSam Cramer ci_protocol = "fc"; 76d8c54e3dSSam Cramer }; 77d8c54e3dSSam Cramer 78d8c54e3dSSam Cramer /* 79d8c54e3dSSam Cramer * Translator for conninfo, translating from fct cmd struct. 80d8c54e3dSSam Cramer */ 81d8c54e3dSSam Cramer #pragma D binding "1.5" translator 82d8c54e3dSSam Cramer translator conninfo_t < fct_cmd_t *C > { 83d8c54e3dSSam Cramer ci_local = (C->cmd_port ? 84d8c54e3dSSam Cramer (C->cmd_port->port_pwwn_str[0] ? 85d8c54e3dSSam Cramer C->cmd_port->port_pwwn_str : "<unknown>") : 86d8c54e3dSSam Cramer "<unknown>"); 87d8c54e3dSSam Cramer 88d8c54e3dSSam Cramer ci_remote = (C->cmd_rp ? 89d8c54e3dSSam Cramer (C->cmd_rp->rp_pwwn_str[0] ? 90d8c54e3dSSam Cramer C->cmd_rp->rp_pwwn_str : "<unknown>") : 91d8c54e3dSSam Cramer "<unknown>"); 92d8c54e3dSSam Cramer 93d8c54e3dSSam Cramer ci_protocol = "fc"; 94d8c54e3dSSam Cramer }; 95d8c54e3dSSam Cramer 96d8c54e3dSSam Cramer 97d8c54e3dSSam Cramer /* 98d8c54e3dSSam Cramer * fc_port_info_t translators. 99d8c54e3dSSam Cramer */ 100d8c54e3dSSam Cramer 101d8c54e3dSSam Cramer /* 102d8c54e3dSSam Cramer * Translator for fc_port_info_t, translating from the local port. 103d8c54e3dSSam Cramer */ 104d8c54e3dSSam Cramer #pragma D binding "1.5" translator 105d8c54e3dSSam Cramer translator fc_port_info_t < fct_local_port_t *P > { 106d8c54e3dSSam Cramer /* node WWN */ 107d8c54e3dSSam Cramer fcp_node_wwn = P->port_nwwn_str[0] ? 108d8c54e3dSSam Cramer P->port_nwwn_str : "<unknown>"; 109d8c54e3dSSam Cramer 110d8c54e3dSSam Cramer /* node symbolic name */ 111d8c54e3dSSam Cramer fcp_sym_node_name = P->port_sym_node_name ? 112d8c54e3dSSam Cramer P->port_sym_node_name : `utsname.nodename; 113d8c54e3dSSam Cramer 114d8c54e3dSSam Cramer /* port symbolic name */ 115d8c54e3dSSam Cramer fcp_sym_port_name = P->port_sym_port_name ? 116d8c54e3dSSam Cramer P->port_sym_port_name : "<unknown>"; 117d8c54e3dSSam Cramer 118d8c54e3dSSam Cramer /* port hard address */ 119d8c54e3dSSam Cramer fcp_port_hard_address = P->port_hard_address; 120d8c54e3dSSam Cramer }; 121d8c54e3dSSam Cramer 122d8c54e3dSSam Cramer 123d8c54e3dSSam Cramer /* 124d8c54e3dSSam Cramer * Translator for fc_port_info_t, translating from the local port impl. 125d8c54e3dSSam Cramer */ 126d8c54e3dSSam Cramer #pragma D binding "1.5" translator 127d8c54e3dSSam Cramer translator fc_port_info_t < fct_i_local_port_t *P > { 128d8c54e3dSSam Cramer /* node WWN */ 129d8c54e3dSSam Cramer 130d8c54e3dSSam Cramer fcp_node_wwn = (P->iport_port ? 131d8c54e3dSSam Cramer (P->iport_port->port_nwwn_str[0] ? 132d8c54e3dSSam Cramer P->iport_port->port_nwwn_str : 133d8c54e3dSSam Cramer "<unknown>") : 134d8c54e3dSSam Cramer "<bad iport_port ptr>"); 135d8c54e3dSSam Cramer 136d8c54e3dSSam Cramer fcp_sym_node_name = 137d8c54e3dSSam Cramer (P->iport_port ? 138d8c54e3dSSam Cramer (P->iport_port->port_sym_node_name ? 139d8c54e3dSSam Cramer P->iport_port->port_sym_node_name : "<unknown>") : 140d8c54e3dSSam Cramer "<bad iport_port ptr>"); 141d8c54e3dSSam Cramer 142d8c54e3dSSam Cramer fcp_sym_port_name = 143d8c54e3dSSam Cramer (P->iport_port ? 144d8c54e3dSSam Cramer (P->iport_port->port_sym_port_name ? 145d8c54e3dSSam Cramer P->iport_port->port_sym_port_name : "<unknown>") : 146d8c54e3dSSam Cramer "<bad iport_port ptr>"); 147d8c54e3dSSam Cramer 148d8c54e3dSSam Cramer fcp_port_hard_address = 149d8c54e3dSSam Cramer (P->iport_port ? 150d8c54e3dSSam Cramer P->iport_port->port_hard_address : 0); 151d8c54e3dSSam Cramer }; 152d8c54e3dSSam Cramer 153d8c54e3dSSam Cramer /* 154d8c54e3dSSam Cramer * Translator for fc_port_info, translating from the remote port impl 155d8c54e3dSSam Cramer */ 156d8c54e3dSSam Cramer #pragma D binding "1.5" translator 157d8c54e3dSSam Cramer translator fc_port_info_t < fct_i_remote_port_t *P > { 158d8c54e3dSSam Cramer 159d8c54e3dSSam Cramer /* node WWN */ 160d8c54e3dSSam Cramer fcp_node_wwn = P->irp_rp ? 161d8c54e3dSSam Cramer (P->irp_rp->rp_nwwn_str[0] ? 162d8c54e3dSSam Cramer P->irp_rp->rp_nwwn_str : "<unknown>") : 163d8c54e3dSSam Cramer "<unknown>"; 164d8c54e3dSSam Cramer 165d8c54e3dSSam Cramer /* node symbolic name */ 166d8c54e3dSSam Cramer fcp_sym_node_name = P->irp_snn ? P->irp_snn : "<unknown>"; 167d8c54e3dSSam Cramer 168d8c54e3dSSam Cramer /* port symbolic name */ 169d8c54e3dSSam Cramer fcp_sym_port_name = P->irp_spn ? P->irp_spn : "<unknown>"; 170d8c54e3dSSam Cramer 171d8c54e3dSSam Cramer /* port hard address */ 172d8c54e3dSSam Cramer fcp_port_hard_address = P->irp_rp ? P->irp_rp->rp_id : 0; 173d8c54e3dSSam Cramer }; 174d8c54e3dSSam Cramer 175d8c54e3dSSam Cramer /* 176d8c54e3dSSam Cramer * Translator for fc_xferinfo, translating from stmf_data_buf_t. 177d8c54e3dSSam Cramer */ 178d8c54e3dSSam Cramer #pragma D binding "1.5" translator 179d8c54e3dSSam Cramer translator fc_xferinfo_t < stmf_data_buf_t *B > { 180d8c54e3dSSam Cramer fcx_len = B->db_data_size; 181d8c54e3dSSam Cramer fcx_offset = B->db_relative_offset; 182d8c54e3dSSam Cramer fcx_flags = B->db_flags; 183d8c54e3dSSam Cramer }; 184