xref: /onnv-gate/usr/src/uts/common/sys/fibre-channel/impl/fcgs2.h (revision 10264:1196af6129ec)
17836SJohn.Forte@Sun.COM /*
27836SJohn.Forte@Sun.COM  * CDDL HEADER START
37836SJohn.Forte@Sun.COM  *
47836SJohn.Forte@Sun.COM  * The contents of this file are subject to the terms of the
57836SJohn.Forte@Sun.COM  * Common Development and Distribution License (the "License").
67836SJohn.Forte@Sun.COM  * You may not use this file except in compliance with the License.
77836SJohn.Forte@Sun.COM  *
87836SJohn.Forte@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97836SJohn.Forte@Sun.COM  * or http://www.opensolaris.org/os/licensing.
107836SJohn.Forte@Sun.COM  * See the License for the specific language governing permissions
117836SJohn.Forte@Sun.COM  * and limitations under the License.
127836SJohn.Forte@Sun.COM  *
137836SJohn.Forte@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
147836SJohn.Forte@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157836SJohn.Forte@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
167836SJohn.Forte@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
177836SJohn.Forte@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
187836SJohn.Forte@Sun.COM  *
197836SJohn.Forte@Sun.COM  * CDDL HEADER END
207836SJohn.Forte@Sun.COM  */
217836SJohn.Forte@Sun.COM /*
22*10264SZhong.Wang@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
237836SJohn.Forte@Sun.COM  * Use is subject to license terms.
247836SJohn.Forte@Sun.COM  */
257836SJohn.Forte@Sun.COM 
267836SJohn.Forte@Sun.COM #ifndef	_SYS_FIBRE_CHANNEL_IMPL_FCGS2_H
277836SJohn.Forte@Sun.COM #define	_SYS_FIBRE_CHANNEL_IMPL_FCGS2_H
287836SJohn.Forte@Sun.COM 
297836SJohn.Forte@Sun.COM 
307836SJohn.Forte@Sun.COM #include <sys/note.h>
317836SJohn.Forte@Sun.COM 
327836SJohn.Forte@Sun.COM #ifdef	__cplusplus
337836SJohn.Forte@Sun.COM extern "C" {
347836SJohn.Forte@Sun.COM #endif
357836SJohn.Forte@Sun.COM 
367836SJohn.Forte@Sun.COM /*
377836SJohn.Forte@Sun.COM  * A device handle describes the characterics of a device
387836SJohn.Forte@Sun.COM  * Node. Each device handle also contains information
397836SJohn.Forte@Sun.COM  * on the serveral different ports it is discovered on.
407836SJohn.Forte@Sun.COM  *
417836SJohn.Forte@Sun.COM  * Classification of Name Server Objects
427836SJohn.Forte@Sun.COM  *
437836SJohn.Forte@Sun.COM  * +-----------------------------------+---------------------------+
447836SJohn.Forte@Sun.COM  * |  Device (node) Specific           |  Port Specific            |
457836SJohn.Forte@Sun.COM  * +-----------------------------------+---------------------------+
467836SJohn.Forte@Sun.COM  * |  Node Name (NN)                   | Port type (PT)            |
477836SJohn.Forte@Sun.COM  * |  Symbolic Node Name Length        | Port Id (ID)              |
487836SJohn.Forte@Sun.COM  * |  Symbloic Node Name(SNN)          | Symbolic Port Name length |
497836SJohn.Forte@Sun.COM  * |  Initial Process associator(IPA)  | Symbolic Port Name (SPN)  |
507836SJohn.Forte@Sun.COM  * |                                   | Class of Service (CS)     |
517836SJohn.Forte@Sun.COM  * |                                   | fc4 types (FT)            |
527836SJohn.Forte@Sun.COM  * |                                   | IP Address (IP)           |
537836SJohn.Forte@Sun.COM  * +-----------------------------------+---------------------------+
547836SJohn.Forte@Sun.COM  *
557836SJohn.Forte@Sun.COM  * The above classification causes some inconvenience in not having
567836SJohn.Forte@Sun.COM  * the ability to directly copy all the nameserver objects into a
577836SJohn.Forte@Sun.COM  * contiguous piece of memory. But we'll live with it.
587836SJohn.Forte@Sun.COM  */
597836SJohn.Forte@Sun.COM 
607836SJohn.Forte@Sun.COM #define	CT_REV			0x01	/* Common Transport revision */
617836SJohn.Forte@Sun.COM 
627836SJohn.Forte@Sun.COM /* FCS types */
637836SJohn.Forte@Sun.COM #define	FCSTYPE_KEYSERVICE	0xF7
647836SJohn.Forte@Sun.COM #define	FCSTYPE_ALIAS		0xF8
657836SJohn.Forte@Sun.COM #define	FCSTYPE_MGMTSERVICE	0xFA
667836SJohn.Forte@Sun.COM #define	FCSTYPE_TIMESERVICE	0xFB
677836SJohn.Forte@Sun.COM #define	FCSTYPE_DIRECTORY	0xFC
687836SJohn.Forte@Sun.COM #define	FCSTYEP_FABRIC		0xFD
697836SJohn.Forte@Sun.COM 
707836SJohn.Forte@Sun.COM /*
717836SJohn.Forte@Sun.COM  * FCS subtypes for Directory Service
727836SJohn.Forte@Sun.COM  */
737836SJohn.Forte@Sun.COM #define	FCSSUB_DS_NAME_SERVER		0x02	/* Zoned Name Server */
747836SJohn.Forte@Sun.COM #define	FCSSUB_DS_IPADDR_SERVER		0x03	/* IP Address Server */
757836SJohn.Forte@Sun.COM 
767836SJohn.Forte@Sun.COM /*
777836SJohn.Forte@Sun.COM  * FCS subtypes for Management Service
787836SJohn.Forte@Sun.COM  */
797836SJohn.Forte@Sun.COM #define	FCSSUB_MS_CONFIG_SERVER		0x01	/* Fabric Config Server */
807836SJohn.Forte@Sun.COM #define	FCSSUB_MS_UNZONED_NAME_SERVER	0x02	/* Unzoned Name Server */
817836SJohn.Forte@Sun.COM #define	FCSSUB_MS_ZONE_SERVER		0x03	/* Fabric Zone Server */
827836SJohn.Forte@Sun.COM 
837836SJohn.Forte@Sun.COM /*
847836SJohn.Forte@Sun.COM  * FCS subtypes for Time Service
857836SJohn.Forte@Sun.COM  */
867836SJohn.Forte@Sun.COM #define	FCSSUB_TS_TIME_SERVER		0x01	/* Time Server */
877836SJohn.Forte@Sun.COM 
887836SJohn.Forte@Sun.COM /*
897836SJohn.Forte@Sun.COM  * FCS subtypes for Alias Service
907836SJohn.Forte@Sun.COM  */
917836SJohn.Forte@Sun.COM #define	FCSSUB_AS_ALIAS_SERVER		0x01	/* Alias Server */
927836SJohn.Forte@Sun.COM 
937836SJohn.Forte@Sun.COM /*
947836SJohn.Forte@Sun.COM  * FCS subtypes for Key Service
957836SJohn.Forte@Sun.COM  */
967836SJohn.Forte@Sun.COM #define	FCSSUB_KS_KEY_SERVER		0x00	/* Key Distribution Server */
977836SJohn.Forte@Sun.COM 
987836SJohn.Forte@Sun.COM /* FC-CT response codes */
997836SJohn.Forte@Sun.COM #define	FS_RJT_IU		0x8001
1007836SJohn.Forte@Sun.COM #define	FS_ACC_IU		0x8002
1017836SJohn.Forte@Sun.COM 
1027836SJohn.Forte@Sun.COM /* FS_RJT Reason Codes */
1037836SJohn.Forte@Sun.COM #define	FSRJT_BADCMD		0x01	/* Invalid command code */
1047836SJohn.Forte@Sun.COM #define	FSRJT_BADVER		0x02	/* Invalid version level */
1057836SJohn.Forte@Sun.COM #define	FSRJT_LOGICALERR	0x03	/* Logical error */
1067836SJohn.Forte@Sun.COM #define	FSRJT_BADSIZE		0x04	/* Invalid IU size */
1077836SJohn.Forte@Sun.COM #define	FSRJT_BUSY		0x05	/* Logical busy */
1087836SJohn.Forte@Sun.COM #define	FSRJT_PROTOCOLERR	0x07	/* Protocol error */
1097836SJohn.Forte@Sun.COM #define	FSRJT_CMDFAILED		0x08	/* Unable to perform command */
1107836SJohn.Forte@Sun.COM #define	FSRJT_UNSUPP		0x0b	/* Command not supported */
1117836SJohn.Forte@Sun.COM #define	FSRJT_VENDOR		0xff	/* vendor unique error */
1127836SJohn.Forte@Sun.COM 
1137836SJohn.Forte@Sun.COM /* Name Service Command Codes */
1147836SJohn.Forte@Sun.COM #define	NS_GA_NXT		0x0100	/* Get All next */
1157836SJohn.Forte@Sun.COM #define	NS_GPN_ID		0x0112	/* Get Port Name */
1167836SJohn.Forte@Sun.COM #define	NS_GNN_ID		0x0113	/* Get Node Name */
1177836SJohn.Forte@Sun.COM #define	NS_GCS_ID		0x0114	/* Get Class Of service */
1187836SJohn.Forte@Sun.COM #define	NS_GFT_ID		0x0117	/* Get FC-4 Types */
1197836SJohn.Forte@Sun.COM #define	NS_GSPN_ID		0x0118	/* Get Sym Port name */
1207836SJohn.Forte@Sun.COM #define	NS_GPT_ID		0x011A	/* Get Port Type */
1217836SJohn.Forte@Sun.COM #define	NS_GID_PN		0x0121	/* Get port id for PN */
1227836SJohn.Forte@Sun.COM #define	NS_GID_NN		0x0131	/* Get port id for NN */
1237836SJohn.Forte@Sun.COM #define	NS_GIP_NN		0x0135	/* Get IP address */
1247836SJohn.Forte@Sun.COM #define	NS_GIPA_NN		0x0136	/* Get I.P.A */
1257836SJohn.Forte@Sun.COM #define	NS_GSNN_NN		0x0139	/* Get Sym Node name */
1267836SJohn.Forte@Sun.COM #define	NS_GNN_IP		0x0153	/* Get Node name for IP */
1277836SJohn.Forte@Sun.COM #define	NS_GIPA_IP		0x0156	/* Get I.P.A for IP */
1287836SJohn.Forte@Sun.COM #define	NS_GID_FT		0x0171	/* Get port Id for FC-4 type */
1297836SJohn.Forte@Sun.COM #define	NS_GID_PT		0x01A1	/* Get port Id for type */
1307836SJohn.Forte@Sun.COM #define	NS_RPN_ID		0x0212	/* Reg port name */
1317836SJohn.Forte@Sun.COM #define	NS_RNN_ID		0x0213	/* Reg node name */
1327836SJohn.Forte@Sun.COM #define	NS_RCS_ID		0x0214	/* Reg C.O.S */
1337836SJohn.Forte@Sun.COM #define	NS_RFT_ID		0x0217	/* Reg FC-4 Types */
1347836SJohn.Forte@Sun.COM #define	NS_RSPN_ID		0x0218	/* Reg Sym Port name */
1357836SJohn.Forte@Sun.COM #define	NS_RPT_ID		0x021A	/* Reg Port Type */
1367836SJohn.Forte@Sun.COM #define	NS_RIP_NN		0x0235	/* Reg I.P address */
1377836SJohn.Forte@Sun.COM #define	NS_RIPA_NN		0x0236	/* Reg I.P.A */
1387836SJohn.Forte@Sun.COM #define	NS_RSNN_NN		0x0239	/* Reg Sym Node name */
1397836SJohn.Forte@Sun.COM #define	NS_DA_ID		0x0300	/* De-Register all */
1407836SJohn.Forte@Sun.COM 
1417836SJohn.Forte@Sun.COM /* Name service reject explanation codes */
1427836SJohn.Forte@Sun.COM #define	NSRJTX_NONE		0x00	/* No additional explanation */
1437836SJohn.Forte@Sun.COM #define	NSRJTX_PORTNOTREG	0x01	/* Port ID not registered */
1447836SJohn.Forte@Sun.COM #define	NSRJTX_PWWNNOTREG	0x02	/* Port Name not registered */
1457836SJohn.Forte@Sun.COM #define	NSRJTX_NWWNNOTREG	0x03	/* Node Name not registered */
1467836SJohn.Forte@Sun.COM #define	NSRJTX_CoSNOTREG	0x04	/* Class of Service no registered */
1477836SJohn.Forte@Sun.COM #define	NSRJTX_IPNOTREG		0x05	/* IP Address not registered */
1487836SJohn.Forte@Sun.COM #define	NSRJTX_IPANOTREG	0x06	/* Initial Proc. Assoc not reg. */
1497836SJohn.Forte@Sun.COM #define	NSRJTX_FC4NOTREG	0x07	/* FC$ types not registered */
1507836SJohn.Forte@Sun.COM #define	NSRJTX_SPNNOTREG	0x08	/* Symbolic port name not registered */
1517836SJohn.Forte@Sun.COM #define	NSRJTX_SNNNOTREG	0x09	/* Symbolic node name not registered */
1527836SJohn.Forte@Sun.COM #define	NSRJTX_TYPENOTREG	0x0a	/* Port type not registered */
1537836SJohn.Forte@Sun.COM #define	NSRJTX_NOPERM		0x10	/* Access denied */
1547836SJohn.Forte@Sun.COM #define	NSRJTX_BADPORTID	0x11	/* Unacceptable port ID */
1557836SJohn.Forte@Sun.COM #define	NSRJTX_DBEMPTY		0x12	/* Data base empty */
1567836SJohn.Forte@Sun.COM 
157*10264SZhong.Wang@Sun.COM /* Management Service Command Codes */
158*10264SZhong.Wang@Sun.COM #define	MS_GIEL		0x0101	/* Get Interconnect Element List */
159*10264SZhong.Wang@Sun.COM 
1607836SJohn.Forte@Sun.COM #define	FC_NS_CLASSF		0x01
1617836SJohn.Forte@Sun.COM #define	FC_NS_CLASS1		0x02
1627836SJohn.Forte@Sun.COM #define	FC_NS_CLASS2		0x04
1637836SJohn.Forte@Sun.COM #define	FC_NS_CLASS3		0x08
1647836SJohn.Forte@Sun.COM #define	FC_NS_CLASS4		0x10
1657836SJohn.Forte@Sun.COM #define	FC_NS_CLASS5		0x20
1667836SJohn.Forte@Sun.COM #define	FC_NS_CLASS6		0x40
1677836SJohn.Forte@Sun.COM 
1687836SJohn.Forte@Sun.COM #define	FC_NS_PORT_UNKNOWN	0x00
1697836SJohn.Forte@Sun.COM #define	FC_NS_PORT_N		0x01
1707836SJohn.Forte@Sun.COM #define	FC_NS_PORT_NL		0x02
1717836SJohn.Forte@Sun.COM #define	FC_NS_PORT_F_NL		0x03
1727836SJohn.Forte@Sun.COM #define	FC_NS_PORT_NX		0x7F
1737836SJohn.Forte@Sun.COM #define	FC_NS_PORT_F		0x81
1747836SJohn.Forte@Sun.COM #define	FC_NS_PORT_FL		0x82
1757836SJohn.Forte@Sun.COM #define	FC_NS_PORT_E		0x84
1767836SJohn.Forte@Sun.COM 
1777836SJohn.Forte@Sun.COM #define	FC_IS_CMD_A_QUERY(cmd)	((cmd) >= NS_GA_NXT && (cmd) <= NS_GID_PT)
1787836SJohn.Forte@Sun.COM #define	FC_IS_CMD_A_REG(cmd)	((cmd) >= NS_RPN_ID && (cmd) <= NS_DA_ID)
1797836SJohn.Forte@Sun.COM #define	NS_GAN_RESP_LEN		(sizeof (ns_resp_gan_t))
1807836SJohn.Forte@Sun.COM 
1817836SJohn.Forte@Sun.COM /*
1827836SJohn.Forte@Sun.COM  * SCR registration function codes
1837836SJohn.Forte@Sun.COM  */
1847836SJohn.Forte@Sun.COM #define	FC_SCR_FABRIC_REGISTRATION	0x01
1857836SJohn.Forte@Sun.COM #define	FC_SCR_NPORT_REGISTRATION	0x02
1867836SJohn.Forte@Sun.COM #define	FC_SCR_FULL_REGISTRATION	0x03
1877836SJohn.Forte@Sun.COM #define	FC_SCR_CLEAR_REGISTRATION	0xFF
1887836SJohn.Forte@Sun.COM 
1897836SJohn.Forte@Sun.COM /*
1907836SJohn.Forte@Sun.COM  * Register port/node name request payload
1917836SJohn.Forte@Sun.COM  *
1927836SJohn.Forte@Sun.COM  * 'x' means either P (port) or N (node)
1937836SJohn.Forte@Sun.COM  */
1947836SJohn.Forte@Sun.COM typedef struct rxn_id {
1957836SJohn.Forte@Sun.COM 	fc_portid_t	rxn_port_id;	/* Port Identfier */
1967836SJohn.Forte@Sun.COM 	la_wwn_t	rxn_xname;		/* Port/Node Name */
1977836SJohn.Forte@Sun.COM } ns_rxn_req_t;
1987836SJohn.Forte@Sun.COM 
1997836SJohn.Forte@Sun.COM /*
2007836SJohn.Forte@Sun.COM  * Register Class of service request payload
2017836SJohn.Forte@Sun.COM  */
2027836SJohn.Forte@Sun.COM typedef struct rcos {
2037836SJohn.Forte@Sun.COM 	fc_portid_t	rcos_port_id;
2047836SJohn.Forte@Sun.COM 	uint32_t	rcos_cos;
2057836SJohn.Forte@Sun.COM } ns_rcos_t;
2067836SJohn.Forte@Sun.COM 
2077836SJohn.Forte@Sun.COM /*
2087836SJohn.Forte@Sun.COM  * Register FC-4 TYPEs request payload
2097836SJohn.Forte@Sun.COM  */
2107836SJohn.Forte@Sun.COM typedef struct rfc_type {
2117836SJohn.Forte@Sun.COM 	fc_portid_t	rfc_port_id;
2127836SJohn.Forte@Sun.COM 	uchar_t		rfc_types[32];	/* bit map of ULP types */
2137836SJohn.Forte@Sun.COM } ns_rfc_type_t;
2147836SJohn.Forte@Sun.COM 
2157836SJohn.Forte@Sun.COM /*
2167836SJohn.Forte@Sun.COM  * Register symbolic port name request payload
2177836SJohn.Forte@Sun.COM  */
2187836SJohn.Forte@Sun.COM typedef struct spn {
2197836SJohn.Forte@Sun.COM 	fc_portid_t	spn_port_id;
2207836SJohn.Forte@Sun.COM 	uchar_t		spn_len;
2217836SJohn.Forte@Sun.COM 	/*
2227836SJohn.Forte@Sun.COM 	 * What follows here is the actual name
2237836SJohn.Forte@Sun.COM 	 * which is allocated on the fly during
2247836SJohn.Forte@Sun.COM 	 * packet allocation.
2257836SJohn.Forte@Sun.COM 	 */
2267836SJohn.Forte@Sun.COM } ns_spn_t;
2277836SJohn.Forte@Sun.COM 
2287836SJohn.Forte@Sun.COM /*
2297836SJohn.Forte@Sun.COM  * Register port type request payload
2307836SJohn.Forte@Sun.COM  */
2317836SJohn.Forte@Sun.COM typedef struct rpt {
2327836SJohn.Forte@Sun.COM 	fc_portid_t	rpt_port_id;
2337836SJohn.Forte@Sun.COM 	fc_porttype_t	rpt_type;
2347836SJohn.Forte@Sun.COM } ns_rpt_t;
2357836SJohn.Forte@Sun.COM 
2367836SJohn.Forte@Sun.COM /*
2377836SJohn.Forte@Sun.COM  * Register IP address request payload
2387836SJohn.Forte@Sun.COM  */
2397836SJohn.Forte@Sun.COM typedef struct rip {
2407836SJohn.Forte@Sun.COM 	la_wwn_t	rip_node_name;
2417836SJohn.Forte@Sun.COM 	uchar_t		rip_ip_addr[16];
2427836SJohn.Forte@Sun.COM } ns_rip_t;
2437836SJohn.Forte@Sun.COM 
2447836SJohn.Forte@Sun.COM /*
2457836SJohn.Forte@Sun.COM  * Register Initial Process Associator request payload
2467836SJohn.Forte@Sun.COM  */
2477836SJohn.Forte@Sun.COM typedef struct ipa {
2487836SJohn.Forte@Sun.COM 	la_wwn_t	ipa_node_name;
2497836SJohn.Forte@Sun.COM 	uchar_t		ipa_value[8];
2507836SJohn.Forte@Sun.COM } ns_ipa_t;
2517836SJohn.Forte@Sun.COM 
2527836SJohn.Forte@Sun.COM /*
2537836SJohn.Forte@Sun.COM  * Register Symbolic Node Name request payload
2547836SJohn.Forte@Sun.COM  */
2557836SJohn.Forte@Sun.COM typedef struct snn {
2567836SJohn.Forte@Sun.COM 	la_wwn_t	snn_node_name;
2577836SJohn.Forte@Sun.COM 	uchar_t		snn_len;
2587836SJohn.Forte@Sun.COM 	/*
2597836SJohn.Forte@Sun.COM 	 * What follows here is the actual name
2607836SJohn.Forte@Sun.COM 	 * which is allocated on the fly during
2617836SJohn.Forte@Sun.COM 	 * packet allocation.
2627836SJohn.Forte@Sun.COM 	 */
2637836SJohn.Forte@Sun.COM } ns_snn_t;
2647836SJohn.Forte@Sun.COM 
2657836SJohn.Forte@Sun.COM /*
2667836SJohn.Forte@Sun.COM  * Remove all request payload
2677836SJohn.Forte@Sun.COM  */
2687836SJohn.Forte@Sun.COM typedef struct remall {
2697836SJohn.Forte@Sun.COM 	fc_portid_t	rem_port_id;
2707836SJohn.Forte@Sun.COM } ns_remall_t;
2717836SJohn.Forte@Sun.COM 
2727836SJohn.Forte@Sun.COM typedef fc_ct_header_t fc_reg_resp_t;
2737836SJohn.Forte@Sun.COM typedef fc_ct_header_t fc_query_resp_t;
2747836SJohn.Forte@Sun.COM 
2757836SJohn.Forte@Sun.COM typedef struct ns_req_gid_pt {
2767836SJohn.Forte@Sun.COM 	fc_porttype_t	port_type;
2777836SJohn.Forte@Sun.COM } ns_req_gid_pt_t;
2787836SJohn.Forte@Sun.COM 
2797836SJohn.Forte@Sun.COM typedef struct ns_resp_gid_pt {
2807836SJohn.Forte@Sun.COM 	fc_portid_t	gid_port_id;
2817836SJohn.Forte@Sun.COM } ns_resp_gid_pt_t;
2827836SJohn.Forte@Sun.COM 
2837836SJohn.Forte@Sun.COM typedef struct ns_req_gan {
2847836SJohn.Forte@Sun.COM 	fc_portid_t	pid;
2857836SJohn.Forte@Sun.COM } ns_req_gan_t;
2867836SJohn.Forte@Sun.COM 
2877836SJohn.Forte@Sun.COM typedef struct ns_resp_gan {
2887836SJohn.Forte@Sun.COM 	fc_porttype_t	gan_type_id;		/* type and id next */
2897836SJohn.Forte@Sun.COM 	la_wwn_t	gan_pwwn;		/* Port Name */
2907836SJohn.Forte@Sun.COM 	uchar_t		gan_spnlen;		/* Sym P Name Len */
2917836SJohn.Forte@Sun.COM 	char		gan_spname[255];	/* Sym Port name */
2927836SJohn.Forte@Sun.COM 
2937836SJohn.Forte@Sun.COM 	la_wwn_t	gan_nwwn;		/* Node Name */
2947836SJohn.Forte@Sun.COM 	uchar_t		gan_snnlen;		/* Sym N name Len */
2957836SJohn.Forte@Sun.COM 	char		gan_snname[255];	/* Sym Node name */
2967836SJohn.Forte@Sun.COM 
2977836SJohn.Forte@Sun.COM 	uchar_t		gan_ipa[8];		/* Initial Proc assoc */
2987836SJohn.Forte@Sun.COM 	uchar_t		gan_ip[16];		/* IP Address */
2997836SJohn.Forte@Sun.COM 	uint32_t	gan_cos;		/* Class of Service */
3007836SJohn.Forte@Sun.COM 
3017836SJohn.Forte@Sun.COM 	uint32_t	gan_fc4types[8];	/* FC-4 Types */
3027836SJohn.Forte@Sun.COM } ns_resp_gan_t;
3037836SJohn.Forte@Sun.COM 
3047836SJohn.Forte@Sun.COM typedef struct ns_req_gid_pn {
3057836SJohn.Forte@Sun.COM 	la_wwn_t	pwwn;
3067836SJohn.Forte@Sun.COM } ns_req_gid_pn_t;
3077836SJohn.Forte@Sun.COM 
3087836SJohn.Forte@Sun.COM typedef struct ns_resp_gid_pn {
3097836SJohn.Forte@Sun.COM 	fc_portid_t	pid;
3107836SJohn.Forte@Sun.COM } ns_resp_gid_pn_t;
3117836SJohn.Forte@Sun.COM 
3127836SJohn.Forte@Sun.COM typedef struct ns_req_gpn_id {
3137836SJohn.Forte@Sun.COM 	fc_portid_t	pid;
3147836SJohn.Forte@Sun.COM } ns_req_gpn_id_t;
3157836SJohn.Forte@Sun.COM 
3167836SJohn.Forte@Sun.COM typedef struct ns_resp_gpn_id {
3177836SJohn.Forte@Sun.COM 	la_wwn_t	pwwn;
3187836SJohn.Forte@Sun.COM } ns_resp_gpn_id_t;
3197836SJohn.Forte@Sun.COM 
3207836SJohn.Forte@Sun.COM typedef struct ns_req_gpt_id {
3217836SJohn.Forte@Sun.COM 	fc_portid_t	pid;
3227836SJohn.Forte@Sun.COM } ns_req_gpt_id_t;
3237836SJohn.Forte@Sun.COM 
3247836SJohn.Forte@Sun.COM typedef struct ns_resp_gpt_id {
3257836SJohn.Forte@Sun.COM 	fc_porttype_t	port_type;
3267836SJohn.Forte@Sun.COM } ns_resp_gpt_id_t;
3277836SJohn.Forte@Sun.COM 
3287836SJohn.Forte@Sun.COM #if	!defined(__lint)
3297836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_resp_gpn_id))
3307836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", rxn_id))
3317836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_req_gpn_id))
3327836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_resp_gid_pn))
3337836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_req_gid_pn))
3347836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_resp_gan))
3357836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_req_gan))
3367836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_req_gid_pt))
3377836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_req_gpt_id))
3387836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_resp_gpt_id))
3397836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", remall))
3407836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", snn))
3417836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", ipa))
3427836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", rip))
3437836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", rpt))
3447836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", spn))
3457836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", rfc_type))
3467836SJohn.Forte@Sun.COM _NOTE(SCHEME_PROTECTS_DATA("unique per request", rcos))
3477836SJohn.Forte@Sun.COM #endif /* __lint */
3487836SJohn.Forte@Sun.COM 
3497836SJohn.Forte@Sun.COM #ifdef	__cplusplus
3507836SJohn.Forte@Sun.COM }
3517836SJohn.Forte@Sun.COM #endif
3527836SJohn.Forte@Sun.COM 
3537836SJohn.Forte@Sun.COM #endif	/* _SYS_FIBRE_CHANNEL_IMPL_FCGS2_H */
354