Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
scsi
fc
fc_ns.h
Go to the documentation of this file.
1
/*
2
* Copyright(c) 2007 Intel Corporation. All rights reserved.
3
*
4
* This program is free software; you can redistribute it and/or modify it
5
* under the terms and conditions of the GNU General Public License,
6
* version 2, as published by the Free Software Foundation.
7
*
8
* This program is distributed in the hope it will be useful, but WITHOUT
9
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
11
* more details.
12
*
13
* You should have received a copy of the GNU General Public License along with
14
* this program; if not, write to the Free Software Foundation, Inc.,
15
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
16
*
17
* Maintained at www.Open-FCoE.org
18
*/
19
20
#ifndef _FC_NS_H_
21
#define _FC_NS_H_
22
23
#include <linux/types.h>
24
25
/*
26
* Fibre Channel Services - Name Service (dNS)
27
* From T11.org FC-GS-2 Rev 5.3 November 1998.
28
*/
29
30
/*
31
* Common-transport sub-type for Name Server.
32
*/
33
#define FC_NS_SUBTYPE 2
/* fs_ct_hdr.ct_fs_subtype */
34
35
/*
36
* Name server Requests.
37
* Note: this is an incomplete list, some unused requests are omitted.
38
*/
39
enum
fc_ns_req
{
40
FC_NS_GA_NXT
= 0x0100,
/* get all next */
41
FC_NS_GI_A
= 0x0101,
/* get identifiers - scope */
42
FC_NS_GPN_ID
= 0x0112,
/* get port name by ID */
43
FC_NS_GNN_ID
= 0x0113,
/* get node name by ID */
44
FC_NS_GSPN_ID
= 0x0118,
/* get symbolic port name */
45
FC_NS_GID_PN
= 0x0121,
/* get ID for port name */
46
FC_NS_GID_NN
= 0x0131,
/* get IDs for node name */
47
FC_NS_GID_FT
= 0x0171,
/* get IDs by FC4 type */
48
FC_NS_GPN_FT
= 0x0172,
/* get port names by FC4 type */
49
FC_NS_GID_PT
= 0x01a1,
/* get IDs by port type */
50
FC_NS_RPN_ID
= 0x0212,
/* reg port name for ID */
51
FC_NS_RNN_ID
= 0x0213,
/* reg node name for ID */
52
FC_NS_RFT_ID
= 0x0217,
/* reg FC4 type for ID */
53
FC_NS_RSPN_ID
= 0x0218,
/* reg symbolic port name */
54
FC_NS_RFF_ID
= 0x021f,
/* reg FC4 Features for ID */
55
FC_NS_RSNN_NN
= 0x0239,
/* reg symbolic node name */
56
};
57
58
/*
59
* Port type values.
60
*/
61
enum
fc_ns_pt
{
62
FC_NS_UNID_PORT
= 0x00,
/* unidentified */
63
FC_NS_N_PORT
= 0x01,
/* N port */
64
FC_NS_NL_PORT
= 0x02,
/* NL port */
65
FC_NS_FNL_PORT
= 0x03,
/* F/NL port */
66
FC_NS_NX_PORT
= 0x7f,
/* Nx port */
67
FC_NS_F_PORT
= 0x81,
/* F port */
68
FC_NS_FL_PORT
= 0x82,
/* FL port */
69
FC_NS_E_PORT
= 0x84,
/* E port */
70
FC_NS_B_PORT
= 0x85,
/* B port */
71
};
72
73
/*
74
* Port type object.
75
*/
76
struct
fc_ns_pt_obj
{
77
__u8
pt_type
;
78
};
79
80
/*
81
* Port ID object
82
*/
83
struct
fc_ns_fid
{
84
__u8
fp_flags
;
/* flags for responses only */
85
__u8
fp_fid
[3];
86
};
87
88
/*
89
* fp_flags in port ID object, for responses only.
90
*/
91
#define FC_NS_FID_LAST 0x80
/* last object */
92
93
/*
94
* FC4-types object.
95
*/
96
#define FC_NS_TYPES 256
/* number of possible FC-4 types */
97
#define FC_NS_BPW 32
/* bits per word in bitmap */
98
99
struct
fc_ns_fts
{
100
__be32
ff_type_map
[
FC_NS_TYPES
/
FC_NS_BPW
];
/* bitmap of FC-4 types */
101
};
102
103
/*
104
* FC4-features object.
105
*/
106
struct
fc_ns_ff
{
107
__be32
fd_feat
[
FC_NS_TYPES
* 4 /
FC_NS_BPW
];
/* 4-bits per FC-type */
108
};
109
110
/*
111
* GID_PT request.
112
*/
113
struct
fc_ns_gid_pt
{
114
__u8
fn_pt_type
;
115
__u8
fn_domain_id_scope
;
116
__u8
fn_area_id_scope
;
117
__u8
fn_resvd
;
118
};
119
120
/*
121
* GID_FT or GPN_FT request.
122
*/
123
struct
fc_ns_gid_ft
{
124
__u8
fn_resvd
;
125
__u8
fn_domain_id_scope
;
126
__u8
fn_area_id_scope
;
127
__u8
fn_fc4_type
;
128
};
129
130
/*
131
* GPN_FT response.
132
*/
133
struct
fc_gpn_ft_resp
{
134
__u8
fp_flags
;
/* see fp_flags definitions above */
135
__u8
fp_fid
[3];
/* port ID */
136
__be32
fp_resvd
;
137
__be64
fp_wwpn
;
/* port name */
138
};
139
140
/*
141
* GID_PN request
142
*/
143
struct
fc_ns_gid_pn
{
144
__be64
fn_wwpn
;
/* port name */
145
};
146
147
/*
148
* GID_PN response or GSPN_ID request
149
*/
150
struct
fc_gid_pn_resp
{
151
__u8
fp_resvd
;
152
__u8
fp_fid
[3];
/* port ID */
153
};
154
155
/*
156
* GSPN_ID response
157
*/
158
struct
fc_gspn_resp
{
159
__u8
fp_name_len
;
160
char
fp_name
[];
161
};
162
163
/*
164
* RFT_ID request - register FC-4 types for ID.
165
*/
166
struct
fc_ns_rft_id
{
167
struct
fc_ns_fid
fr_fid
;
/* port ID object */
168
struct
fc_ns_fts
fr_fts
;
/* FC-4 types object */
169
};
170
171
/*
172
* RPN_ID request - register port name for ID.
173
* RNN_ID request - register node name for ID.
174
*/
175
struct
fc_ns_rn_id
{
176
struct
fc_ns_fid
fr_fid
;
/* port ID object */
177
__be64
fr_wwn
;
/* node name or port name */
178
}
__attribute__
((__packed__));
179
180
/*
181
* RSNN_NN request - register symbolic node name
182
*/
183
struct
fc_ns_rsnn
{
184
__be64
fr_wwn
;
/* node name */
185
__u8
fr_name_len
;
186
char
fr_name
[];
187
}
__attribute__
((__packed__));
188
189
/*
190
* RSPN_ID request - register symbolic port name
191
*/
192
struct
fc_ns_rspn
{
193
struct
fc_ns_fid
fr_fid
;
/* port ID object */
194
__u8
fr_name_len
;
195
char
fr_name
[];
196
}
__attribute__
((__packed__));
197
198
/*
199
* RFF_ID request - register FC-4 Features for ID.
200
*/
201
struct
fc_ns_rff_id
{
202
struct
fc_ns_fid
fr_fid
;
/* port ID object */
203
__u8
fr_resvd
[2];
204
__u8
fr_feat
;
/* FC-4 Feature bits */
205
__u8
fr_type
;
/* FC-4 type */
206
}
__attribute__
((__packed__));
207
208
#endif
/* _FC_NS_H_ */
Generated on Thu Jan 10 2013 14:53:24 for Linux Kernel by
1.8.2