#ifndef _SYS_FIBRE_CHANNEL_IMPL_FCGS2_H
#define _SYS_FIBRE_CHANNEL_IMPL_FCGS2_H
#include <sys/note.h>
#ifdef __cplusplus
extern "C" {
#endif
#define CT_REV 0x01
#define FCSTYPE_KEYSERVICE 0xF7
#define FCSTYPE_ALIAS 0xF8
#define FCSTYPE_MGMTSERVICE 0xFA
#define FCSTYPE_TIMESERVICE 0xFB
#define FCSTYPE_DIRECTORY 0xFC
#define FCSTYEP_FABRIC 0xFD
#define FCSSUB_DS_NAME_SERVER 0x02
#define FCSSUB_DS_IPADDR_SERVER 0x03
#define FCSSUB_MS_CONFIG_SERVER 0x01
#define FCSSUB_MS_UNZONED_NAME_SERVER 0x02
#define FCSSUB_MS_ZONE_SERVER 0x03
#define FCSSUB_TS_TIME_SERVER 0x01
#define FCSSUB_AS_ALIAS_SERVER 0x01
#define FCSSUB_KS_KEY_SERVER 0x00
#define FS_RJT_IU 0x8001
#define FS_ACC_IU 0x8002
#define FSRJT_BADCMD 0x01
#define FSRJT_BADVER 0x02
#define FSRJT_LOGICALERR 0x03
#define FSRJT_BADSIZE 0x04
#define FSRJT_BUSY 0x05
#define FSRJT_PROTOCOLERR 0x07
#define FSRJT_CMDFAILED 0x08
#define FSRJT_UNSUPP 0x0b
#define FSRJT_VENDOR 0xff
#define NS_GA_NXT 0x0100
#define NS_GPN_ID 0x0112
#define NS_GNN_ID 0x0113
#define NS_GCS_ID 0x0114
#define NS_GFT_ID 0x0117
#define NS_GSPN_ID 0x0118
#define NS_GPT_ID 0x011A
#define NS_GID_PN 0x0121
#define NS_GID_NN 0x0131
#define NS_GIP_NN 0x0135
#define NS_GIPA_NN 0x0136
#define NS_GSNN_NN 0x0139
#define NS_GNN_IP 0x0153
#define NS_GIPA_IP 0x0156
#define NS_GID_FT 0x0171
#define NS_GID_PT 0x01A1
#define NS_RPN_ID 0x0212
#define NS_RNN_ID 0x0213
#define NS_RCS_ID 0x0214
#define NS_RFT_ID 0x0217
#define NS_RSPN_ID 0x0218
#define NS_RPT_ID 0x021A
#define NS_RIP_NN 0x0235
#define NS_RIPA_NN 0x0236
#define NS_RSNN_NN 0x0239
#define NS_DA_ID 0x0300
#define NSRJTX_NONE 0x00
#define NSRJTX_PORTNOTREG 0x01
#define NSRJTX_PWWNNOTREG 0x02
#define NSRJTX_NWWNNOTREG 0x03
#define NSRJTX_CoSNOTREG 0x04
#define NSRJTX_IPNOTREG 0x05
#define NSRJTX_IPANOTREG 0x06
#define NSRJTX_FC4NOTREG 0x07
#define NSRJTX_SPNNOTREG 0x08
#define NSRJTX_SNNNOTREG 0x09
#define NSRJTX_TYPENOTREG 0x0a
#define NSRJTX_NOPERM 0x10
#define NSRJTX_BADPORTID 0x11
#define NSRJTX_DBEMPTY 0x12
#define MS_GIEL 0x0101
#define FC_NS_CLASSF 0x01
#define FC_NS_CLASS1 0x02
#define FC_NS_CLASS2 0x04
#define FC_NS_CLASS3 0x08
#define FC_NS_CLASS4 0x10
#define FC_NS_CLASS5 0x20
#define FC_NS_CLASS6 0x40
#define FC_NS_PORT_UNKNOWN 0x00
#define FC_NS_PORT_N 0x01
#define FC_NS_PORT_NL 0x02
#define FC_NS_PORT_F_NL 0x03
#define FC_NS_PORT_NX 0x7F
#define FC_NS_PORT_F 0x81
#define FC_NS_PORT_FL 0x82
#define FC_NS_PORT_E 0x84
#define FC_IS_CMD_A_QUERY(cmd) ((cmd) >= NS_GA_NXT && (cmd) <= NS_GID_PT)
#define FC_IS_CMD_A_REG(cmd) ((cmd) >= NS_RPN_ID && (cmd) <= NS_DA_ID)
#define NS_GAN_RESP_LEN (sizeof (ns_resp_gan_t))
#define FC_SCR_FABRIC_REGISTRATION 0x01
#define FC_SCR_NPORT_REGISTRATION 0x02
#define FC_SCR_FULL_REGISTRATION 0x03
#define FC_SCR_CLEAR_REGISTRATION 0xFF
typedef struct rxn_id {
fc_portid_t rxn_port_id;
la_wwn_t rxn_xname;
} ns_rxn_req_t;
typedef struct rcos {
fc_portid_t rcos_port_id;
uint32_t rcos_cos;
} ns_rcos_t;
typedef struct rfc_type {
fc_portid_t rfc_port_id;
uchar_t rfc_types[32];
} ns_rfc_type_t;
typedef struct spn {
fc_portid_t spn_port_id;
uchar_t spn_len;
} ns_spn_t;
typedef struct rpt {
fc_portid_t rpt_port_id;
fc_porttype_t rpt_type;
} ns_rpt_t;
typedef struct rip {
la_wwn_t rip_node_name;
uchar_t rip_ip_addr[16];
} ns_rip_t;
typedef struct ipa {
la_wwn_t ipa_node_name;
uchar_t ipa_value[8];
} ns_ipa_t;
typedef struct snn {
la_wwn_t snn_node_name;
uchar_t snn_len;
} ns_snn_t;
typedef struct remall {
fc_portid_t rem_port_id;
} ns_remall_t;
typedef fc_ct_header_t fc_reg_resp_t;
typedef fc_ct_header_t fc_query_resp_t;
typedef struct ns_req_gid_pt {
fc_porttype_t port_type;
} ns_req_gid_pt_t;
typedef struct ns_resp_gid_pt {
fc_portid_t gid_port_id;
} ns_resp_gid_pt_t;
typedef struct ns_req_gan {
fc_portid_t pid;
} ns_req_gan_t;
typedef struct ns_resp_gan {
fc_porttype_t gan_type_id;
la_wwn_t gan_pwwn;
uchar_t gan_spnlen;
char gan_spname[255];
la_wwn_t gan_nwwn;
uchar_t gan_snnlen;
char gan_snname[255];
uchar_t gan_ipa[8];
uchar_t gan_ip[16];
uint32_t gan_cos;
uint32_t gan_fc4types[8];
} ns_resp_gan_t;
typedef struct ns_req_gid_pn {
la_wwn_t pwwn;
} ns_req_gid_pn_t;
typedef struct ns_resp_gid_pn {
fc_portid_t pid;
} ns_resp_gid_pn_t;
typedef struct ns_req_gpn_id {
fc_portid_t pid;
} ns_req_gpn_id_t;
typedef struct ns_resp_gpn_id {
la_wwn_t pwwn;
} ns_resp_gpn_id_t;
typedef struct ns_req_gpt_id {
fc_portid_t pid;
} ns_req_gpt_id_t;
typedef struct ns_resp_gpt_id {
fc_porttype_t port_type;
} ns_resp_gpt_id_t;
#if !defined(__lint)
_NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_resp_gpn_id))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", rxn_id))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_req_gpn_id))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_resp_gid_pn))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_req_gid_pn))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_resp_gan))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_req_gan))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_req_gid_pt))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_req_gpt_id))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", ns_resp_gpt_id))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", remall))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", snn))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", ipa))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", rip))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", rpt))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", spn))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", rfc_type))
_NOTE(SCHEME_PROTECTS_DATA("unique per request", rcos))
#endif
#ifdef __cplusplus
}
#endif
#endif