iPXE
fcns.h
Go to the documentation of this file.
1#ifndef _IPXE_FCNS_H
2#define _IPXE_FCNS_H
3
4/**
5 * @file
6 *
7 * Fibre Channel name server lookups
8 *
9 */
10
11FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
12
13#include <stdint.h>
14#include <ipxe/fc.h>
15
16/** A Fibre Channel Common Transport header */
18 /** Revision */
20 /** Original requestor ID */
22 /** Generic service type */
24 /** Generic service subtype */
26 /** Options */
28 /** Reserved */
30 /** Command/response code */
32 /** Maximum/residual size */
34 /** Fragment ID */
36 /** Reason code */
38 /** Reason code explanation */
40 /** Vendor specific */
42} __attribute__ (( packed ));
43
44/** Fibre Channel Common Transport revision */
45#define FC_CT_REVISION 1
46
47/** Fibre Channel generic service type */
49 /** Directory service */
51};
52
53/** Fibre Channel generic service response codes */
55 /** Accepted */
56 FC_GS_ACCEPT = 0x8002,
57 /** Rejected */
58 FC_GS_REJECT = 0x8001,
59};
60
61/** Fibre Channel generic service rejection reason codes */
63 /** Invalid command code */
65 /** Invalid version level */
67 /** Logical error */
69 /** Invalid CT_IU size */
71 /** Logical busy */
72 FC_GS_BUSY = 0x05,
73 /** Protocol error */
75 /** Unable to perform command request */
77 /** Command not supported */
79 /** Server not available */
81 /** Session could not be established */
83};
84
85/** Fibre Channel directory service subtype */
87 /** Name server */
89};
90
91/** Fibre Channel name server commands */
93 /** Get */
94 FC_NS_GET = 0x1,
95 /** Register */
97 /** De-register */
99};
100
101/** Fibre Channel name server objects */
103 /** Port ID */
105 /** Port name */
107 /** Node name */
109 /** FC-4 types */
111 /** Symbolic port name */
113 /** Symbolic node name */
115 /** FC-4 features */
117};
118
119/** Construct Fibre Channel name server command code
120 *
121 * @v command Name server command
122 * @v key Name server key
123 * @v value Name server value
124 * @ret code Name server command code
125 */
126#define FC_NS_CODE( command, key, value ) \
127 ( ( (command) << 8 ) | ( (key) << 4 ) | ( (value) << 0 ) )
128
129/** Construct Fibre Channel name server "get" command code
130 *
131 * @v key Name server key
132 * @v value Name server value to get
133 * @ret code Name server command code
134 */
135#define FC_NS_GET( key, value ) FC_NS_CODE ( FC_NS_GET, key, value )
136
137/** Construct Fibre Channel name server "register" command code
138 *
139 * @v key Name server key
140 * @v value Name server value to register
141 * @ret code Name server command code
142 */
143#define FC_NS_REGISTER( key, value ) FC_NS_CODE ( FC_NS_REGISTER, key, value )
144
145/** Extract Fibre Channel name server command
146 *
147 * @v code Name server command code
148 * @ret command Name server command
149 */
150#define FC_NS_COMMAND( code ) ( ( (code) >> 8 ) & 0xf )
151
152/** Extract Fibre Channel name server key
153 *
154 * @v code Name server command code
155 * @ret key Name server key
156 */
157#define FC_NS_KEY( code ) ( ( (code) >> 4 ) & 0xf )
158
159/** Extract Fibre Channel name server value
160 *
161 * @v code Name server command code
162 * @ret value NAme server value
163 */
164#define FC_NS_VALUE( code ) ( ( (code) >> 0 ) & 0xf )
165
166/** A Fibre Channel name server port ID */
168 /** Reserved */
170 /** Port ID */
172} __attribute__ (( packed ));
173
174/** A Fibre Channel name server GID_PN request */
176 /** Common Transport header */
178 /** Port name */
180} __attribute__ (( packed ));
181
182/** A Fibre Channel name server request */
184 /** Get ID by port name */
186};
187
188/** A Fibre Channel name server rejection response */
190 /** Common Transport header */
192} __attribute__ (( packed ));
193
194/** A Fibre Channel name server GID_PN response */
196 /** Common Transport header */
198 /** Port ID */
200} __attribute__ (( packed ));
201
202/** A Fibre Channel name server response */
204 /** Common Transport header */
206 /** Rejection */
208 /** Get ID by port name */
210};
211
212extern int fc_ns_query ( struct fc_peer *peer, struct fc_port *port,
213 int ( * done ) ( struct fc_peer *peer,
214 struct fc_port *port,
215 struct fc_port_id *peer_port_id ) );
216
217#endif /* _IPXE_FCNS_H */
u8 port
Port number.
Definition CIB_PRM.h:3
unsigned short uint16_t
Definition stdint.h:11
unsigned char uint8_t
Definition stdint.h:10
struct bofm_section_header done
Definition bofm_test.c:46
Fibre Channel.
fc_ns_object_nibble
Fibre Channel name server objects.
Definition fcns.h:102
@ FC_NS_SYM_PORT_NAME
Symbolic port name.
Definition fcns.h:112
@ FC_NS_SYM_NODE_NAME
Symbolic node name.
Definition fcns.h:114
@ FC_NS_PORT_ID
Port ID.
Definition fcns.h:104
@ FC_NS_FC4_TYPES
FC-4 types.
Definition fcns.h:110
@ FC_NS_PORT_NAME
Port name.
Definition fcns.h:106
@ FC_NS_NODE_NAME
Node name.
Definition fcns.h:108
@ FC_NS_FC4_FEATURES
FC-4 features.
Definition fcns.h:116
#define FC_NS_REGISTER(key, value)
Construct Fibre Channel name server "register" command code.
Definition fcns.h:143
fc_ds_subtype
Fibre Channel directory service subtype.
Definition fcns.h:86
@ FC_DS_SUBTYPE_NAME
Name server.
Definition fcns.h:88
#define FC_NS_GET(key, value)
Construct Fibre Channel name server "get" command code.
Definition fcns.h:135
fc_ns_command_nibble
Fibre Channel name server commands.
Definition fcns.h:92
@ FC_NS_DEREGISTER
De-register.
Definition fcns.h:98
fc_gs_type
Fibre Channel generic service type.
Definition fcns.h:48
@ FC_GS_TYPE_DS
Directory service.
Definition fcns.h:50
fc_gs_reason_code
Fibre Channel generic service rejection reason codes.
Definition fcns.h:62
@ FC_GS_BAD_COMMAND
Invalid command code.
Definition fcns.h:64
@ FC_GS_BUSY
Logical busy.
Definition fcns.h:72
@ FC_GS_BAD_SIZE
Invalid CT_IU size.
Definition fcns.h:70
@ FC_GS_SESSION
Session could not be established.
Definition fcns.h:82
@ FC_GS_UNAVAILABLE
Server not available.
Definition fcns.h:80
@ FC_GS_EPROTO
Protocol error.
Definition fcns.h:74
@ FC_GS_ENOTSUP
Command not supported.
Definition fcns.h:78
@ FC_GS_UNABLE
Unable to perform command request.
Definition fcns.h:76
@ FC_GS_ERROR
Logical error.
Definition fcns.h:68
@ FC_GS_BAD_VERSION
Invalid version level.
Definition fcns.h:66
int fc_ns_query(struct fc_peer *peer, struct fc_port *port, int(*done)(struct fc_peer *peer, struct fc_port *port, struct fc_port_id *peer_port_id))
Issue Fibre Channel name server query.
Definition fcns.c:222
fc_gs_response_code
Fibre Channel generic service response codes.
Definition fcns.h:54
@ FC_GS_ACCEPT
Accepted.
Definition fcns.h:56
@ FC_GS_REJECT
Rejected.
Definition fcns.h:58
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition compiler.h:896
#define __attribute__(x)
Definition compiler.h:10
struct mschapv2_challenge peer
Peer challenge.
Definition mschapv2.h:1
A Fibre Channel Common Transport header.
Definition fcns.h:17
uint8_t subtype
Generic service subtype.
Definition fcns.h:25
uint16_t size
Maximum/residual size.
Definition fcns.h:33
uint8_t reason
Reason code.
Definition fcns.h:37
uint8_t revision
Revision.
Definition fcns.h:19
uint8_t type
Generic service type.
Definition fcns.h:23
uint8_t explanation
Reason code explanation.
Definition fcns.h:39
uint8_t fragment
Fragment ID.
Definition fcns.h:35
uint8_t vendor
Vendor specific.
Definition fcns.h:41
uint8_t reserved
Reserved.
Definition fcns.h:29
struct fc_port_id in_id
Original requestor ID.
Definition fcns.h:21
uint16_t code
Command/response code.
Definition fcns.h:31
uint8_t options
Options.
Definition fcns.h:27
A Fibre Channel name.
Definition fc.h:30
A Fibre Channel name server GID_PN request.
Definition fcns.h:175
struct fc_ct_header ct
Common Transport header.
Definition fcns.h:177
struct fc_name port_wwn
Port name.
Definition fcns.h:179
A Fibre Channel name server GID_PN response.
Definition fcns.h:195
struct fc_ct_header ct
Common Transport header.
Definition fcns.h:197
struct fc_ns_port_id port_id
Port ID.
Definition fcns.h:199
A Fibre Channel name server port ID.
Definition fcns.h:167
struct fc_port_id port_id
Port ID.
Definition fcns.h:171
uint8_t reserved
Reserved.
Definition fcns.h:169
A Fibre Channel name server rejection response.
Definition fcns.h:189
struct fc_ct_header ct
Common Transport header.
Definition fcns.h:191
A Fibre Channel peer.
Definition fc.h:341
A Fibre Channel port identifier.
Definition fc.h:38
A Fibre Channel port.
Definition fc.h:253
A Fibre Channel name server request.
Definition fcns.h:183
struct fc_ns_gid_pn_request gid_pn
Get ID by port name.
Definition fcns.h:185
A Fibre Channel name server response.
Definition fcns.h:203
struct fc_ct_header ct
Common Transport header.
Definition fcns.h:205
struct fc_ns_gid_pn_response gid_pn
Get ID by port name.
Definition fcns.h:209
struct fc_ns_reject_response reject
Rejection.
Definition fcns.h:207