From Aaron Woo (via Jeff Weston): Optimized Link State Routing Protocol
[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.3 2003/11/07 08:50:44 guy 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 #define FC_ELS_AUTH          0x90
60
61 static const value_string fc_els_proto_val[] = {
62     {FC_ELS_LSRJT        , "LS_RJT"},
63     {FC_ELS_ACC          , "ACC"},
64     {FC_ELS_PLOGI        , "PLOGI"},
65     {FC_ELS_FLOGI        , "FLOGI"},
66     {FC_ELS_LOGOUT       , "LOGO"},
67     {FC_ELS_ABTX         , "ABTX"},
68     {FC_ELS_RSI          , "RSI"},
69     {FC_ELS_TEST         , "TEST"},
70     {FC_ELS_RRQ          , "RRQ"},
71     {FC_ELS_PRLI         , "PRLI"},
72     {FC_ELS_PRLO         , "PRLO"},
73     {FC_ELS_TPRLO        , "TPRLO"},
74     {FC_ELS_PDISC        , "PDISC"},
75     {FC_ELS_FDISC        , "FDISC"},
76     {FC_ELS_ADISC        , "ADISC"},
77     {FC_ELS_FARP_REQ     , "FARP-REQ"},
78     {FC_ELS_FARP_RPLY    , "FARP-REPLY"},
79     {FC_ELS_RPS          , "RPS"},
80     {FC_ELS_RPL          , "RPL"},
81     {FC_ELS_FAN          , "FAN"},
82     {FC_ELS_RSCN         , "RSCN"},
83     {FC_ELS_SCR          , "SCR"},
84     {FC_ELS_RNFT         , "RNFT"},
85     {FC_ELS_LINIT        , "LINIT"},
86     {FC_ELS_LSTS         , "LSTS"},
87     {FC_ELS_RNID         , "RNID"},
88     {FC_ELS_RLIR         , "RLIR"},
89     {FC_ELS_LIRR         , "LIRR"},
90     {FC_ELS_SRL          , "SRL"},
91     {FC_ELS_RPSC         , "RPSC"},
92     {FC_ELS_AUTH         , "AUTH"},
93     {0, NULL},
94 };
95
96 /* Reject Reason Codes */
97 #define FC_ELS_RJT_INVCMDCODE   0x01
98 #define FC_ELS_RJT_LOGERR       0x03
99 #define FC_ELS_RJT_LOGBSY       0x05
100 #define FC_ELS_RJT_PROTERR      0x07
101 #define FC_ELS_RJT_GENFAIL      0x09
102 #define FC_ELS_RJT_CMDNOTSUPP   0x0B
103 #define FC_ELS_RJT_GENFAIL2     0x0D
104 #define FC_ELS_RJT_CMDINPROG    0x0E
105 #define FC_ELS_RJT_VENDOR       0xFF
106
107 static const value_string fc_els_rjt_val[] = {
108     {FC_ELS_RJT_INVCMDCODE, "Invalid Cmd Code"},
109     {FC_ELS_RJT_LOGERR    , "Logical Error"},
110     {FC_ELS_RJT_LOGBSY    , "Logical Busy"},
111     {FC_ELS_RJT_PROTERR   , "Protocol Error"},
112     {FC_ELS_RJT_GENFAIL   , "Unable to Perform Cmd"},
113     {FC_ELS_RJT_CMDNOTSUPP, "Command Not Supported"},
114     {FC_ELS_RJT_GENFAIL2  , "Unable to Perform Cmd"},
115     {FC_ELS_RJT_CMDINPROG , "Command in Progress Already"},
116     {FC_ELS_RJT_VENDOR    , "Vendor Unique Error"},
117     {0, NULL},
118 };
119
120 #define FC_ELS_RJT_DET_NODET             0x00
121 #define FC_ELS_RJT_DET_SVCPARM_OPT       0x01
122 #define FC_ELS_RJT_DET_SVCPARM_INITCTL   0x03
123 #define FC_ELS_RJT_DET_SVCPARM_RCPTCTL   0x05
124 #define FC_ELS_RJT_DET_SVCPARM_RCVSZE    0x07
125 #define FC_ELS_RJT_DET_SVCPARM_CSEQ      0x09
126 #define FC_ELS_RJT_DET_SVCPARM_CREDIT    0x0B
127 #define FC_ELS_RJT_DET_INV_PFNAME        0x0D
128 #define FC_ELS_RJT_DET_INV_NFNAME        0x0E
129 #define FC_ELS_RJT_DET_INV_CMNSVCPARM    0x0F
130 #define FC_ELS_RJT_DET_INV_ASSOCHDR      0x11
131 #define FC_ELS_RJT_DET_ASSOCHDR_REQD     0x13
132 #define FC_ELS_RJT_DET_INV_OSID          0x15
133 #define FC_ELS_RJT_DET_EXCHG_COMBO       0x17
134 #define FC_ELS_RJT_DET_CMDINPROG         0x19
135 #define FC_ELS_RJT_DET_PLOGI_REQ         0x1E
136 #define FC_ELS_RJT_DET_INV_NPID          0x1F
137 #define FC_ELS_RJT_DET_INV_SEQID         0x21
138 #define FC_ELS_RJT_DET_INV_EXCHG         0x23
139 #define FC_ELS_RJT_DET_INACTIVE_EXCHG    0x25
140 #define FC_ELS_RJT_DET_RQUAL_REQD        0x27
141 #define FC_ELS_RJT_DET_OORSRC            0x29
142 #define FC_ELS_RJT_DET_SUPPLYFAIL        0x2A
143 #define FC_ELS_RJT_DET_REQNOTSUPP        0x2C
144 #define FC_ELS_RJT_DET_INV_PLEN          0x2D
145 #define FC_ELS_RJT_DET_INV_ALIASID       0x30
146 #define FC_ELS_RJT_DET_OORSRC_ALIASID    0x31
147 #define FC_ELS_RJT_DET_INACTIVE_ALIASID  0x32
148 #define FC_ELS_RJT_DET_DEACT_ALIAS_FAIL1 0x33
149 #define FC_ELS_RJT_DET_DEACT_ALIAS_FAIL2 0x34
150 #define FC_ELS_RJT_DET_SVCPARM_CONFLICT  0x35
151 #define FC_ELS_RJT_DET_INV_ALIASTOK      0x36 
152 #define FC_ELS_RJT_DET_UNSUPP_ALIASTOK   0x37
153 #define FC_ELS_RJT_DET_GRPFORM_FAIL      0x38
154 #define FC_ELS_RJT_DET_QOSPARM_ERR       0x40
155 #define FC_ELS_RJT_DET_INV_VCID          0x41
156 #define FC_ELS_RJT_DET_OORSRC_C4         0x42
157 #define FC_ELS_RJT_DET_INV_PNNAME        0x44
158 #define FC_ELS_RJT_DET_AUTH_REQD         0x48
159
160 static const value_string fc_els_rjt_det_val[] = {
161     {FC_ELS_RJT_DET_NODET            , "No further details"},
162     {FC_ELS_RJT_DET_SVCPARM_OPT      , "Svc Param - Options Error"},
163     {FC_ELS_RJT_DET_SVCPARM_INITCTL  , "Svc Param - Initiator Ctl Error"},
164     {FC_ELS_RJT_DET_SVCPARM_RCPTCTL  , "Svc Param - Recipient Ctl Error"},
165     {FC_ELS_RJT_DET_SVCPARM_RCVSZE   , "Svc Param - Recv Size Error"},
166     {FC_ELS_RJT_DET_SVCPARM_CSEQ     , "Svc Param - Concurrent Seq Error"},
167     {FC_ELS_RJT_DET_SVCPARM_CREDIT   , "Svc Param - Credit Error"},
168     {FC_ELS_RJT_DET_INV_PFNAME       , "Invalid N_/F_Port Name"},
169     {FC_ELS_RJT_DET_INV_NFNAME       , "Invalid Node/Fabric Name"},
170     {FC_ELS_RJT_DET_INV_CMNSVCPARM   , "Invalid Common Svc Param"},
171     {FC_ELS_RJT_DET_INV_ASSOCHDR     , "Invalid Association Header"},
172     {FC_ELS_RJT_DET_ASSOCHDR_REQD    , "Association Header Reqd"},
173     {FC_ELS_RJT_DET_INV_OSID         , "Invalid Orig S_ID"},
174     {FC_ELS_RJT_DET_EXCHG_COMBO      , "Invalid OXID-RXID Combo"},
175     {FC_ELS_RJT_DET_CMDINPROG        , "Cmd Already in Progress"},
176     {FC_ELS_RJT_DET_PLOGI_REQ        , "N_Port Login Required"},
177     {FC_ELS_RJT_DET_INV_NPID         , "Invalid N_Port Id"},
178     {FC_ELS_RJT_DET_INV_SEQID        , "Invalid SeqID"},
179     {FC_ELS_RJT_DET_INV_EXCHG        , "Attempt to Abort Invalid Exchg"},
180     {FC_ELS_RJT_DET_INACTIVE_EXCHG   , "Attempt to Abort Inactive Exchg"},
181     {FC_ELS_RJT_DET_RQUAL_REQD       , "Resource Qualifier Required"},
182     {FC_ELS_RJT_DET_OORSRC           , "Insufficient Resources for Login"},
183     {FC_ELS_RJT_DET_SUPPLYFAIL       , "Unable to Supply Req Data"},
184     {FC_ELS_RJT_DET_REQNOTSUPP       , "Command Not Supported"},
185     {FC_ELS_RJT_DET_INV_PLEN         , "Invalid Payload Length"},
186     {FC_ELS_RJT_DET_INV_ALIASID      , "No Alias IDs available"},
187     {FC_ELS_RJT_DET_OORSRC_ALIASID   , "Alias_ID Cannot be Activated (Out of Rsrc)"},
188     {FC_ELS_RJT_DET_INACTIVE_ALIASID , "Alias_ID Cannot be Activated (Inv AID)"},
189     {FC_ELS_RJT_DET_DEACT_ALIAS_FAIL1, "Alias_ID Cannot be Deactivated"},
190     {FC_ELS_RJT_DET_DEACT_ALIAS_FAIL2, "Alias_ID Cannot be Deactivated"},
191     {FC_ELS_RJT_DET_SVCPARM_CONFLICT , "Svc Parameter Conflict"},
192     {FC_ELS_RJT_DET_INV_ALIASTOK     , "Invalid Alias Token"},
193     {FC_ELS_RJT_DET_UNSUPP_ALIASTOK  , "Unsupported Alias Token"},
194     {FC_ELS_RJT_DET_GRPFORM_FAIL     , "Alias Grp Cannot be Formed"},
195     {FC_ELS_RJT_DET_QOSPARM_ERR      , "QoS Param Error"},
196     {FC_ELS_RJT_DET_INV_VCID         , "VC_ID Not Found"},
197     {FC_ELS_RJT_DET_OORSRC_C4        , "No Resources to Support Class 4 Conn"},
198     {FC_ELS_RJT_DET_INV_PNNAME       , "Invalid Port/Node Name"},
199     {FC_ELS_RJT_DET_AUTH_REQD        , "Authentication Required"},
200     {0, NULL},
201 };
202
203 static const value_string fc_els_flacompliance_val[] = {
204     {1, "FC-FLA Level 1"},
205     {2, "FC-FLA Level 2"},
206     {0, NULL},
207 };
208
209 static const value_string fc_els_loopstate_val[] = {
210     {1, "Online"},
211     {2, "Loop Failure"},
212     {3, "Initialization Failure"},
213     {4, "Initializing"},
214     {0, NULL},
215 };
216
217 static const value_string fc_els_scr_reg_val[] = {
218     {1, "Fabric Detected Regn"},
219     {2, "N_Port Detected Regn"},
220     {3, "Full Regn"},
221     {255, "Clear All Regn"},
222     {0, NULL},
223 };
224
225 static const value_string fc_els_farp_respaction_val[] = {
226     {0, "No Action"},
227     {1, "Login Using Requesting Port ID"},
228     {2, "Respond with FARP-REPLY"},
229     {3, "Login & send FARP-REPLY"},
230     {0, NULL},
231 };
232
233 static const value_string fc_els_portstatus_val[] = {
234     {0x20, "Point-to-Point Connection | No Fabric"},
235     {0x10, "AL Connection | No Fabric"},
236     {0x28, "Point-to-Point Connection | Fabric Detected"},
237     {0x2C, "Point-to-Point Connection | Fabric Detected | Loss of Signal"},
238     {0x24, "Point-to-Point Connection | Loss of Signal"},
239     {0x18, "AL Connection | Fabric Detected"},
240     {0x14, "AL Connection | Loss of Signal"},
241     {0x1C, "AL Connection | Fabric Detected | Loss of Signal"},
242     {0x04, "Loss of Signal"},
243     {0x02, "Loss of Synchronization"},
244     {0x01, "Link Reset Protocol in Progress"},
245     {0, NULL},
246 };
247
248 static const value_string fc_els_portspeed_val[] = {
249     {0x8000, "1 Gb"},
250     {0x4000, "2 Gb"},
251     {0x2000, "4 Gb"},
252     {0x1000, "10 Gb"},
253     {0x0002, "Unknown"},
254     {0x0001, "Speed Not Estd."},
255     {0, NULL}
256 };
257
258 static const value_string fc_els_lirr_regfunc_val[] = {
259     {0x1, "Set Reg: Conditionally Receive"},
260     {0x2, "Set Reg: Always Receive"},
261     {0xFF, "Clear Reg"},
262     {0, NULL},
263 };
264
265 static const value_string fc_els_rscn_evqual_val[] = {
266     {0x00, "Event is not specified"},
267     {0x01, "Changed Name Server Object"},
268     {0x02, "Changed Port Attribute"},
269     {0x03, "Changed Service Object"},
270     {0x04, "Changed Switch Config"},
271     {0, NULL},
272 };
273
274 static const value_string fc_els_rscn_addrfmt_val[] = {
275     {0, "Port Addr (single N/L Port or service)"},
276     {1, "Area Addr Group (area of E/L/N Port addresses)"},
277     {2, "Domain Addr Group"},
278     {3, "Fabric Addr Group"},
279     {0, NULL},
280 };
281
282 static const value_string fc_els_nodeid_val[] = {
283     {0x00, "Common Identification Data Only"},
284     {0x05, "IP Specific Data"},
285     {0x08, "FCP-Specific Data"},
286     {0x20, "FC_CT Specific Data"},
287     {0x22, "SW_ILS Specific Data"},
288     {0x23, "AL Specific Data"},
289     {0x24, "SNMP Specific Data"},
290     {0xDF, "Common ID Data + General Topology Discovery Format"},
291     {0, NULL},
292 };
293
294 static const value_string fc_els_rnid_asstype_val[] = {
295     {0x0, "Reserved"},
296     {0x1, "Unknown"},
297     {0x2, "Other"},
298     {0x3, "Hub"},
299     {0x4, "Switch"},
300     {0x5, "Gateway"},
301     {0x6, "Converter"},
302     {0x7, "HBA"},
303     {0x9, "Storage Device"},
304     {0xA, "Host"},
305     {0xB, "Storage Subsystem"},
306     {0xE, "Storage Access Device"},
307     {0x11, "NAS Device"},
308     {0, NULL},
309 };
310
311 static const value_string fc_els_rnid_mgmt_val[] = {
312     {0, "IP/UDP/SNMP"},
313     {1, "IP/TCP/Telnet"},
314     {2, "IP/TCP/HTTP"},
315     {3, "IP/TCP/HTTPS"},
316     {0, NULL},
317 };
318
319 static const value_string fc_els_rnid_ipvers_val[] = {
320     {0, "None"},
321     {1, "IPv4"},
322     {2, "IPv6"},
323     {0, NULL},
324 };
325
326 #endif