Put "WTP" into the Info column for segmented invoke/result PDUs on which
[obnox/wireshark/wip.git] / packet-fcels.h
1 /* packet-fcels.h
2  * Fibre Channel Extended Link Services Definitions (ddutt@cisco.com)
3  * Copyright 2001, Dinesh G Dutt <ddutt@cisco.com>
4  *
5  * $Id: packet-fcels.h,v 1.1 2002/12/08 02:32:17 gerald Exp $
6  *
7  * Ethereal - Network traffic analyzer
8  * By Gerald Combs <gerald@ethereal.com>
9  * Copyright 1998 Gerald Combs
10  * 
11  * This program is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU General Public License
13  * as published by the Free Software Foundation; either version 2
14  * of the License, or (at your option) any later version.
15  * 
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  * 
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  */
25
26 #ifndef __PACKET_FCELS_H_
27 #define __PACKET_FCELS_H_
28
29 #define FC_ELS_LSRJT         0x01
30 #define FC_ELS_ACC           0x02  
31 #define FC_ELS_PLOGI         0x03
32 #define FC_ELS_FLOGI         0x04
33 #define FC_ELS_LOGOUT        0x05
34 #define FC_ELS_ABTX          0x06
35 #define FC_ELS_RSI           0x0A
36 #define FC_ELS_TEST          0x11
37 #define FC_ELS_RRQ           0x12
38 #define FC_ELS_PRLI          0x20
39 #define FC_ELS_PRLO          0x21
40 #define FC_ELS_TPRLO         0x24
41 #define FC_ELS_PDISC         0x50
42 #define FC_ELS_FDISC         0x51
43 #define FC_ELS_ADISC         0x52
44 #define FC_ELS_FARP_REQ      0x54
45 #define FC_ELS_FARP_RPLY     0x55
46 #define FC_ELS_RPS           0x56
47 #define FC_ELS_RPL           0x57
48 #define FC_ELS_FAN           0x60
49 #define FC_ELS_RSCN          0x61
50 #define FC_ELS_SCR           0x62
51 #define FC_ELS_RNFT          0x63
52 #define FC_ELS_LINIT         0x70
53 #define FC_ELS_LSTS          0x72
54 #define FC_ELS_RNID          0x78
55 #define FC_ELS_RLIR          0x79
56 #define FC_ELS_LIRR          0x7A
57 #define FC_ELS_SRL           0x7B
58 #define FC_ELS_RPSC          0x7D
59
60 static const value_string fc_els_proto_val[] = {
61     {FC_ELS_LSRJT        , "LS_RJT"},
62     {FC_ELS_ACC          , "ACC"},
63     {FC_ELS_PLOGI        , "PLOGI"},
64     {FC_ELS_FLOGI        , "FLOGI"},
65     {FC_ELS_LOGOUT       , "LOGO"},
66     {FC_ELS_ABTX         , "ABTX"},
67     {FC_ELS_RSI          , "RSI"},
68     {FC_ELS_TEST         , "TEST"},
69     {FC_ELS_RRQ          , "RRQ"},
70     {FC_ELS_PRLI         , "PRLI"},
71     {FC_ELS_PRLO         , "PRLO"},
72     {FC_ELS_TPRLO        , "TPRLO"},
73     {FC_ELS_PDISC        , "PDISC"},
74     {FC_ELS_FDISC        , "FDISC"},
75     {FC_ELS_ADISC        , "ADISC"},
76     {FC_ELS_FARP_REQ     , "FARP-REQ"},
77     {FC_ELS_FARP_RPLY    , "FARP-REPLY"},
78     {FC_ELS_RPS          , "RPS"},
79     {FC_ELS_RPL          , "RPL"},
80     {FC_ELS_FAN          , "FAN"},
81     {FC_ELS_RSCN         , "RSCN"},
82     {FC_ELS_SCR          , "SCR"},
83     {FC_ELS_RNFT         , "RNFT"},
84     {FC_ELS_LINIT        , "LINIT"},
85     {FC_ELS_LSTS         , "LSTS"},
86     {FC_ELS_RNID         , "RNID"},
87     {FC_ELS_RLIR         , "RLIR"},
88     {FC_ELS_LIRR         , "LIRR"},
89     {FC_ELS_SRL          , "SRL"},
90     {FC_ELS_RPSC         , "RPSC"},
91     {0, NULL},
92 };
93
94 /* Reject Reason Codes */
95 #define FC_ELS_RJT_INVCMDCODE   0x01
96 #define FC_ELS_RJT_LOGERR       0x03
97 #define FC_ELS_RJT_LOGBSY       0x05
98 #define FC_ELS_RJT_PROTERR      0x07
99 #define FC_ELS_RJT_GENFAIL      0x09
100 #define FC_ELS_RJT_CMDNOTSUPP   0x0B
101 #define FC_ELS_RJT_GENFAIL2     0x0D
102 #define FC_ELS_RJT_CMDINPROG    0x0E
103 #define FC_ELS_RJT_VENDOR       0xFF
104
105 static const value_string fc_els_rjt_val[] = {
106     {FC_ELS_RJT_INVCMDCODE, "Invalid Cmd Code"},
107     {FC_ELS_RJT_LOGERR    , "Logical Error"},
108     {FC_ELS_RJT_LOGBSY    , "Logical Busy"},
109     {FC_ELS_RJT_PROTERR   , "Protocol Error"},
110     {FC_ELS_RJT_GENFAIL   , "Unable to Perform Cmd"},
111     {FC_ELS_RJT_CMDNOTSUPP, "Command Not Supported"},
112     {FC_ELS_RJT_GENFAIL2  , "Unable to Perform Cmd"},
113     {FC_ELS_RJT_CMDINPROG , "Command in Progress Already"},
114     {FC_ELS_RJT_VENDOR    , "Vendor Unique Error"},
115     {0, NULL},
116 };
117
118 #define FC_ELS_RJT_DET_NODET             0x00
119 #define FC_ELS_RJT_DET_SVCPARM_OPT       0x01
120 #define FC_ELS_RJT_DET_SVCPARM_INITCTL   0x03
121 #define FC_ELS_RJT_DET_SVCPARM_RCPTCTL   0x05
122 #define FC_ELS_RJT_DET_SVCPARM_RCVSZE    0x07
123 #define FC_ELS_RJT_DET_SVCPARM_CSEQ      0x09
124 #define FC_ELS_RJT_DET_SVCPARM_CREDIT    0x0B
125 #define FC_ELS_RJT_DET_INV_PFNAME        0x0D
126 #define FC_ELS_RJT_DET_INV_NFNAME        0x0E
127 #define FC_ELS_RJT_DET_INV_CMNSVCPARM    0x0F
128 #define FC_ELS_RJT_DET_INV_ASSOCHDR      0x11
129 #define FC_ELS_RJT_DET_ASSOCHDR_REQD     0x13
130 #define FC_ELS_RJT_DET_INV_OSID          0x15
131 #define FC_ELS_RJT_DET_EXCHG_COMBO       0x17
132 #define FC_ELS_RJT_DET_CMDINPROG         0x19
133 #define FC_ELS_RJT_DET_PLOGI_REQ         0x1E
134 #define FC_ELS_RJT_DET_INV_NPID          0x1F
135 #define FC_ELS_RJT_DET_INV_SEQID         0x21
136 #define FC_ELS_RJT_DET_INV_EXCHG         0x23
137 #define FC_ELS_RJT_DET_INACTIVE_EXCHG    0x25
138 #define FC_ELS_RJT_DET_RQUAL_REQD        0x27
139 #define FC_ELS_RJT_DET_OORSRC            0x29
140 #define FC_ELS_RJT_DET_SUPPLYFAIL        0x2A
141 #define FC_ELS_RJT_DET_REQNOTSUPP        0x2C
142 #define FC_ELS_RJT_DET_INV_PLEN          0x2D
143 #define FC_ELS_RJT_DET_INV_ALIASID       0x30
144 #define FC_ELS_RJT_DET_OORSRC_ALIASID    0x31
145 #define FC_ELS_RJT_DET_INACTIVE_ALIASID  0x32
146 #define FC_ELS_RJT_DET_DEACT_ALIAS_FAIL1 0x33
147 #define FC_ELS_RJT_DET_DEACT_ALIAS_FAIL2 0x34
148 #define FC_ELS_RJT_DET_SVCPARM_CONFLICT  0x35
149 #define FC_ELS_RJT_DET_INV_ALIASTOK      0x36 
150 #define FC_ELS_RJT_DET_UNSUPP_ALIASTOK   0x37
151 #define FC_ELS_RJT_DET_GRPFORM_FAIL      0x38
152 #define FC_ELS_RJT_DET_QOSPARM_ERR       0x40
153 #define FC_ELS_RJT_DET_INV_VCID          0x41
154 #define FC_ELS_RJT_DET_OORSRC_C4         0x42
155 #define FC_ELS_RJT_DET_INV_PNNAME        0x44
156
157 static const value_string fc_els_rjt_det_val[] = {
158     {FC_ELS_RJT_DET_NODET            , "No further details"},
159     {FC_ELS_RJT_DET_SVCPARM_OPT      , "Svc Param - Options Error"},
160     {FC_ELS_RJT_DET_SVCPARM_INITCTL  , "Svc Param - Initiator Ctl Error"},
161     {FC_ELS_RJT_DET_SVCPARM_RCPTCTL  , "Svc Param - Recipient Ctl Error"},
162     {FC_ELS_RJT_DET_SVCPARM_RCVSZE   , "Svc Param - Recv Size Error"},
163     {FC_ELS_RJT_DET_SVCPARM_CSEQ     , "Svc Param - Concurrent Seq Error"},
164     {FC_ELS_RJT_DET_SVCPARM_CREDIT   , "Svc Param - Credit Error"},
165     {FC_ELS_RJT_DET_INV_PFNAME       , "Invalid N_/F_Port Name"},
166     {FC_ELS_RJT_DET_INV_NFNAME       , "Invalid Node/Fabric Name"},
167     {FC_ELS_RJT_DET_INV_CMNSVCPARM   , "Invalid Common Svc Param"},
168     {FC_ELS_RJT_DET_INV_ASSOCHDR     , "Invalid Association Header"},
169     {FC_ELS_RJT_DET_ASSOCHDR_REQD    , "Association Header Reqd"},
170     {FC_ELS_RJT_DET_INV_OSID         , "Invalid Orig S_ID"},
171     {FC_ELS_RJT_DET_EXCHG_COMBO      , "Invalid OXID-RXID Combo"},
172     {FC_ELS_RJT_DET_CMDINPROG        , "Cmd Already in Progress"},
173     {FC_ELS_RJT_DET_PLOGI_REQ        , "N_Port Login Required"},
174     {FC_ELS_RJT_DET_INV_NPID         , "Invalid N_Port Id"},
175     {FC_ELS_RJT_DET_INV_SEQID        , "Invalid SeqID"},
176     {FC_ELS_RJT_DET_INV_EXCHG        , "Attempt to Abort Invalid Exchg"},
177     {FC_ELS_RJT_DET_INACTIVE_EXCHG   , "Attempt to Abort Inactive Exchg"},
178     {FC_ELS_RJT_DET_RQUAL_REQD       , "Resource Qualifier Required"},
179     {FC_ELS_RJT_DET_OORSRC           , "Insufficient Resources for Login"},
180     {FC_ELS_RJT_DET_SUPPLYFAIL       , "Unable to Supply Req Data"},
181     {FC_ELS_RJT_DET_REQNOTSUPP       , "Command Not Supported"},
182     {FC_ELS_RJT_DET_INV_PLEN         , "Invalid Payload Length"},
183     {FC_ELS_RJT_DET_INV_ALIASID      , "No Alias IDs available"},
184     {FC_ELS_RJT_DET_OORSRC_ALIASID   , "Alias_ID Cannot be Activated (Out of Rsrc)"},
185     {FC_ELS_RJT_DET_INACTIVE_ALIASID , "Alias_ID Cannot be Activated (Inv AID)"},
186     {FC_ELS_RJT_DET_DEACT_ALIAS_FAIL1, "Alias_ID Cannot be Deactivated"},
187     {FC_ELS_RJT_DET_DEACT_ALIAS_FAIL2, "Alias_ID Cannot be Deactivated"},
188     {FC_ELS_RJT_DET_SVCPARM_CONFLICT , "Svc Parameter Conflict"},
189     {FC_ELS_RJT_DET_INV_ALIASTOK     , "Invalid Alias Token"},
190     {FC_ELS_RJT_DET_UNSUPP_ALIASTOK  , "Unsupported Alias Token"},
191     {FC_ELS_RJT_DET_GRPFORM_FAIL     , "Alias Grp Cannot be Formed"},
192     {FC_ELS_RJT_DET_QOSPARM_ERR      , "QoS Param Error"},
193     {FC_ELS_RJT_DET_INV_VCID         , "VC_ID Not Found"},
194     {FC_ELS_RJT_DET_OORSRC_C4        , "No Resources to Support Class 4 Conn"},
195     {FC_ELS_RJT_DET_INV_PNNAME       , "Invalid Port/Node Name"},
196 };
197
198 static const value_string fc_els_flacompliance_val[] = {
199     {1, "FC-FLA Level 1"},
200     {2, "FC-FLA Level 2"},
201     {0, NULL},
202 };
203
204 static const value_string fc_els_loopstate_val[] = {
205     {1, "Online"},
206     {2, "Loop Failure"},
207     {3, "Initialization Failure"},
208     {4, "Initializing"},
209     {0, NULL},
210 };
211
212 static const value_string fc_els_scr_reg_val[] = {
213     {1, "Fabric Detected Regn"},
214     {2, "N_Port Detected Regn"},
215     {3, "Full Regn"},
216     {255, "Clear All Regn"},
217     {0, NULL},
218 };
219
220 static const value_string fc_els_farp_respaction_val[] = {
221     {0, "No Action"},
222     {1, "Login Using Requesting Port ID"},
223     {2, "Respond with FARP-REPLY"},
224     {3, "Login & send FARP-REPLY"},
225     {0, NULL},
226 };
227
228 static const value_string fc_els_portstatus_val[] = {
229     {0x20, "Point-to-Point Connection | No Fabric"},
230     {0x10, "AL Connection | No Fabric"},
231     {0x28, "Point-to-Point Connection | Fabric Detected"},
232     {0x2C, "Point-to-Point Connection | Fabric Detected | Loss of Signal"},
233     {0x24, "Point-to-Point Connection | Loss of Signal"},
234     {0x18, "AL Connection | Fabric Detected"},
235     {0x14, "AL Connection | Loss of Signal"},
236     {0x1C, "AL Connection | Fabric Detected | Loss of Signal"},
237     {0x04, "Loss of Signal"},
238     {0x02, "Loss of Synchronization"},
239     {0x01, "Link Reset Protocol in Progress"},
240     {0, NULL},
241 };
242
243 static const value_string fc_els_portspeed_val[] = {
244     {0x8000, "1 Gb"},
245     {0x4000, "2 Gb"},
246     {0x2000, "4 Gb"},
247     {0x1000, "10 Gb"},
248     {0x0002, "Unknown"},
249     {0x0001, "Speed Not Estd."},
250     {0, NULL}
251 };
252
253 static const value_string fc_els_lirr_regfunc_val[] = {
254     {0x1, "Set Reg: Conditionally Receive"},
255     {0x2, "Set Reg: Always Receive"},
256     {0xFF, "Clear Reg"},
257     {0, NULL},
258 };
259
260 static const value_string fc_els_rscn_evqual_val[] = {
261     {0x00, "Event is not specified"},
262     {0x01, "Changed Name Server Object"},
263     {0x02, "Changed Port Attribute"},
264     {0x03, "Changed Service Object"},
265     {0x04, "Changed Switch Config"},
266     {0, NULL},
267 };
268
269 static const value_string fc_els_rscn_addrfmt_val[] = {
270     {0, "Port Addr (single N/L Port or service)"},
271     {1, "Area Addr Group (area of E/L/N Port addresses)"},
272     {2, "Domain Addr Group"},
273     {3, "Fabric Addr Group"},
274     {0, NULL},
275 };
276
277 static const value_string fc_els_nodeid_val[] = {
278     {0x00, "Common Identification Data Only"},
279     {0x05, "IP Specific Data"},
280     {0x08, "FCP-Specific Data"},
281     {0x20, "FC_CT Specific Data"},
282     {0x22, "SW_ILS Specific Data"},
283     {0x23, "AL Specific Data"},
284     {0x24, "SNMP Specific Data"},
285     {0xDF, "Common ID Data + General Topology Discovery Format"},
286     {0, NULL},
287 };
288
289 static const value_string fc_els_rnid_asstype_val[] = {
290     {0x0, "Reserved"},
291     {0x1, "Unknown"},
292     {0x2, "Other"},
293     {0x3, "Hub"},
294     {0x4, "Switch"},
295     {0x5, "Gateway"},
296     {0x6, "Converter"},
297     {0x7, "HBA"},
298     {0x9, "Storage Device"},
299     {0xA, "Host"},
300     {0xB, "Storage Subsystem"},
301     {0xE, "Storage Access Device"},
302     {0x11, "NAS Device"},
303     {0, NULL},
304 };
305
306 static const value_string fc_els_rnid_mgmt_val[] = {
307     {0, "IP/UDP/SNMP"},
308     {1, "IP/TCP/Telnet"},
309     {2, "IP/TCP/HTTP"},
310     {3, "IP/TCP/HTTPS"},
311     {0, NULL},
312 };
313
314 static const value_string fc_els_rnid_ipvers_val[] = {
315     {0, "None"},
316     {1, "IPv4"},
317     {2, "IPv6"},
318     {0, NULL},
319 };
320
321 #endif