Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/uapi/scsi/fc/fc_ns.h
26295 views
1
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2
/*
3
* Copyright(c) 2007 Intel Corporation. All rights reserved.
4
*
5
* Maintained at www.Open-FCoE.org
6
*/
7
8
#ifndef _FC_NS_H_
9
#define _FC_NS_H_
10
11
#include <linux/types.h>
12
13
/*
14
* Fibre Channel Services - Name Service (dNS)
15
* From T11.org FC-GS-2 Rev 5.3 November 1998.
16
*/
17
18
/*
19
* Common-transport sub-type for Name Server.
20
*/
21
#define FC_NS_SUBTYPE 2 /* fs_ct_hdr.ct_fs_subtype */
22
23
/*
24
* Name server Requests.
25
* Note: this is an incomplete list, some unused requests are omitted.
26
*/
27
enum fc_ns_req {
28
FC_NS_GA_NXT = 0x0100, /* get all next */
29
FC_NS_GI_A = 0x0101, /* get identifiers - scope */
30
FC_NS_GPN_ID = 0x0112, /* get port name by ID */
31
FC_NS_GNN_ID = 0x0113, /* get node name by ID */
32
FC_NS_GSPN_ID = 0x0118, /* get symbolic port name */
33
FC_NS_GID_PN = 0x0121, /* get ID for port name */
34
FC_NS_GID_NN = 0x0131, /* get IDs for node name */
35
FC_NS_GID_FT = 0x0171, /* get IDs by FC4 type */
36
FC_NS_GPN_FT = 0x0172, /* get port names by FC4 type */
37
FC_NS_GID_PT = 0x01a1, /* get IDs by port type */
38
FC_NS_RPN_ID = 0x0212, /* reg port name for ID */
39
FC_NS_RNN_ID = 0x0213, /* reg node name for ID */
40
FC_NS_RFT_ID = 0x0217, /* reg FC4 type for ID */
41
FC_NS_RSPN_ID = 0x0218, /* reg symbolic port name */
42
FC_NS_RFF_ID = 0x021f, /* reg FC4 Features for ID */
43
FC_NS_RSNN_NN = 0x0239, /* reg symbolic node name */
44
};
45
46
/*
47
* Port type values.
48
*/
49
enum fc_ns_pt {
50
FC_NS_UNID_PORT = 0x00, /* unidentified */
51
FC_NS_N_PORT = 0x01, /* N port */
52
FC_NS_NL_PORT = 0x02, /* NL port */
53
FC_NS_FNL_PORT = 0x03, /* F/NL port */
54
FC_NS_NX_PORT = 0x7f, /* Nx port */
55
FC_NS_F_PORT = 0x81, /* F port */
56
FC_NS_FL_PORT = 0x82, /* FL port */
57
FC_NS_E_PORT = 0x84, /* E port */
58
FC_NS_B_PORT = 0x85, /* B port */
59
};
60
61
/*
62
* Port type object.
63
*/
64
struct fc_ns_pt_obj {
65
__u8 pt_type;
66
};
67
68
/*
69
* Port ID object
70
*/
71
struct fc_ns_fid {
72
__u8 fp_flags; /* flags for responses only */
73
__u8 fp_fid[3];
74
};
75
76
/*
77
* fp_flags in port ID object, for responses only.
78
*/
79
#define FC_NS_FID_LAST 0x80 /* last object */
80
81
/*
82
* FC4-types object.
83
*/
84
#define FC_NS_TYPES 256 /* number of possible FC-4 types */
85
#define FC_NS_BPW 32 /* bits per word in bitmap */
86
87
struct fc_ns_fts {
88
__be32 ff_type_map[FC_NS_TYPES / FC_NS_BPW]; /* bitmap of FC-4 types */
89
};
90
91
/*
92
* FC4-features object.
93
*/
94
struct fc_ns_ff {
95
__be32 fd_feat[FC_NS_TYPES * 4 / FC_NS_BPW]; /* 4-bits per FC-type */
96
};
97
98
/*
99
* GID_PT request.
100
*/
101
struct fc_ns_gid_pt {
102
__u8 fn_pt_type;
103
__u8 fn_domain_id_scope;
104
__u8 fn_area_id_scope;
105
__u8 fn_resvd;
106
};
107
108
/*
109
* GID_FT or GPN_FT request.
110
*/
111
struct fc_ns_gid_ft {
112
__u8 fn_resvd;
113
__u8 fn_domain_id_scope;
114
__u8 fn_area_id_scope;
115
__u8 fn_fc4_type;
116
};
117
118
/*
119
* GPN_FT response.
120
*/
121
struct fc_gpn_ft_resp {
122
__u8 fp_flags; /* see fp_flags definitions above */
123
__u8 fp_fid[3]; /* port ID */
124
__be32 fp_resvd;
125
__be64 fp_wwpn; /* port name */
126
};
127
128
/*
129
* GID_PN request
130
*/
131
struct fc_ns_gid_pn {
132
__be64 fn_wwpn; /* port name */
133
};
134
135
/*
136
* GID_PN response or GSPN_ID request
137
*/
138
struct fc_gid_pn_resp {
139
__u8 fp_resvd;
140
__u8 fp_fid[3]; /* port ID */
141
};
142
143
/*
144
* GSPN_ID response
145
*/
146
struct fc_gspn_resp {
147
__u8 fp_name_len;
148
char fp_name[];
149
};
150
151
/*
152
* RFT_ID request - register FC-4 types for ID.
153
*/
154
struct fc_ns_rft_id {
155
struct fc_ns_fid fr_fid; /* port ID object */
156
struct fc_ns_fts fr_fts; /* FC-4 types object */
157
};
158
159
/*
160
* RPN_ID request - register port name for ID.
161
* RNN_ID request - register node name for ID.
162
*/
163
struct fc_ns_rn_id {
164
struct fc_ns_fid fr_fid; /* port ID object */
165
__be64 fr_wwn; /* node name or port name */
166
} __attribute__((__packed__));
167
168
/*
169
* RSNN_NN request - register symbolic node name
170
*/
171
struct fc_ns_rsnn {
172
__be64 fr_wwn; /* node name */
173
__u8 fr_name_len;
174
char fr_name[];
175
} __attribute__((__packed__));
176
177
/*
178
* RSPN_ID request - register symbolic port name
179
*/
180
struct fc_ns_rspn {
181
struct fc_ns_fid fr_fid; /* port ID object */
182
__u8 fr_name_len;
183
char fr_name[];
184
} __attribute__((__packed__));
185
186
/*
187
* RFF_ID request - register FC-4 Features for ID.
188
*/
189
struct fc_ns_rff_id {
190
struct fc_ns_fid fr_fid; /* port ID object */
191
__u8 fr_resvd[2];
192
__u8 fr_feat; /* FC-4 Feature bits */
193
__u8 fr_type; /* FC-4 type */
194
} __attribute__((__packed__));
195
196
#endif /* _FC_NS_H_ */
197
198