18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright(c) 2007 Intel Corporation. All rights reserved. 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Maintained at www.Open-FCoE.org 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#ifndef _FC_NS_H_ 98c2ecf20Sopenharmony_ci#define _FC_NS_H_ 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include <linux/types.h> 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci/* 148c2ecf20Sopenharmony_ci * Fibre Channel Services - Name Service (dNS) 158c2ecf20Sopenharmony_ci * From T11.org FC-GS-2 Rev 5.3 November 1998. 168c2ecf20Sopenharmony_ci */ 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci/* 198c2ecf20Sopenharmony_ci * Common-transport sub-type for Name Server. 208c2ecf20Sopenharmony_ci */ 218c2ecf20Sopenharmony_ci#define FC_NS_SUBTYPE 2 /* fs_ct_hdr.ct_fs_subtype */ 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci/* 248c2ecf20Sopenharmony_ci * Name server Requests. 258c2ecf20Sopenharmony_ci * Note: this is an incomplete list, some unused requests are omitted. 268c2ecf20Sopenharmony_ci */ 278c2ecf20Sopenharmony_cienum fc_ns_req { 288c2ecf20Sopenharmony_ci FC_NS_GA_NXT = 0x0100, /* get all next */ 298c2ecf20Sopenharmony_ci FC_NS_GI_A = 0x0101, /* get identifiers - scope */ 308c2ecf20Sopenharmony_ci FC_NS_GPN_ID = 0x0112, /* get port name by ID */ 318c2ecf20Sopenharmony_ci FC_NS_GNN_ID = 0x0113, /* get node name by ID */ 328c2ecf20Sopenharmony_ci FC_NS_GSPN_ID = 0x0118, /* get symbolic port name */ 338c2ecf20Sopenharmony_ci FC_NS_GID_PN = 0x0121, /* get ID for port name */ 348c2ecf20Sopenharmony_ci FC_NS_GID_NN = 0x0131, /* get IDs for node name */ 358c2ecf20Sopenharmony_ci FC_NS_GID_FT = 0x0171, /* get IDs by FC4 type */ 368c2ecf20Sopenharmony_ci FC_NS_GPN_FT = 0x0172, /* get port names by FC4 type */ 378c2ecf20Sopenharmony_ci FC_NS_GID_PT = 0x01a1, /* get IDs by port type */ 388c2ecf20Sopenharmony_ci FC_NS_RPN_ID = 0x0212, /* reg port name for ID */ 398c2ecf20Sopenharmony_ci FC_NS_RNN_ID = 0x0213, /* reg node name for ID */ 408c2ecf20Sopenharmony_ci FC_NS_RFT_ID = 0x0217, /* reg FC4 type for ID */ 418c2ecf20Sopenharmony_ci FC_NS_RSPN_ID = 0x0218, /* reg symbolic port name */ 428c2ecf20Sopenharmony_ci FC_NS_RFF_ID = 0x021f, /* reg FC4 Features for ID */ 438c2ecf20Sopenharmony_ci FC_NS_RSNN_NN = 0x0239, /* reg symbolic node name */ 448c2ecf20Sopenharmony_ci}; 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci/* 478c2ecf20Sopenharmony_ci * Port type values. 488c2ecf20Sopenharmony_ci */ 498c2ecf20Sopenharmony_cienum fc_ns_pt { 508c2ecf20Sopenharmony_ci FC_NS_UNID_PORT = 0x00, /* unidentified */ 518c2ecf20Sopenharmony_ci FC_NS_N_PORT = 0x01, /* N port */ 528c2ecf20Sopenharmony_ci FC_NS_NL_PORT = 0x02, /* NL port */ 538c2ecf20Sopenharmony_ci FC_NS_FNL_PORT = 0x03, /* F/NL port */ 548c2ecf20Sopenharmony_ci FC_NS_NX_PORT = 0x7f, /* Nx port */ 558c2ecf20Sopenharmony_ci FC_NS_F_PORT = 0x81, /* F port */ 568c2ecf20Sopenharmony_ci FC_NS_FL_PORT = 0x82, /* FL port */ 578c2ecf20Sopenharmony_ci FC_NS_E_PORT = 0x84, /* E port */ 588c2ecf20Sopenharmony_ci FC_NS_B_PORT = 0x85, /* B port */ 598c2ecf20Sopenharmony_ci}; 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci/* 628c2ecf20Sopenharmony_ci * Port type object. 638c2ecf20Sopenharmony_ci */ 648c2ecf20Sopenharmony_cistruct fc_ns_pt_obj { 658c2ecf20Sopenharmony_ci __u8 pt_type; 668c2ecf20Sopenharmony_ci}; 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci/* 698c2ecf20Sopenharmony_ci * Port ID object 708c2ecf20Sopenharmony_ci */ 718c2ecf20Sopenharmony_cistruct fc_ns_fid { 728c2ecf20Sopenharmony_ci __u8 fp_flags; /* flags for responses only */ 738c2ecf20Sopenharmony_ci __u8 fp_fid[3]; 748c2ecf20Sopenharmony_ci}; 758c2ecf20Sopenharmony_ci 768c2ecf20Sopenharmony_ci/* 778c2ecf20Sopenharmony_ci * fp_flags in port ID object, for responses only. 788c2ecf20Sopenharmony_ci */ 798c2ecf20Sopenharmony_ci#define FC_NS_FID_LAST 0x80 /* last object */ 808c2ecf20Sopenharmony_ci 818c2ecf20Sopenharmony_ci/* 828c2ecf20Sopenharmony_ci * FC4-types object. 838c2ecf20Sopenharmony_ci */ 848c2ecf20Sopenharmony_ci#define FC_NS_TYPES 256 /* number of possible FC-4 types */ 858c2ecf20Sopenharmony_ci#define FC_NS_BPW 32 /* bits per word in bitmap */ 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_cistruct fc_ns_fts { 888c2ecf20Sopenharmony_ci __be32 ff_type_map[FC_NS_TYPES / FC_NS_BPW]; /* bitmap of FC-4 types */ 898c2ecf20Sopenharmony_ci}; 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci/* 928c2ecf20Sopenharmony_ci * FC4-features object. 938c2ecf20Sopenharmony_ci */ 948c2ecf20Sopenharmony_cistruct fc_ns_ff { 958c2ecf20Sopenharmony_ci __be32 fd_feat[FC_NS_TYPES * 4 / FC_NS_BPW]; /* 4-bits per FC-type */ 968c2ecf20Sopenharmony_ci}; 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_ci/* 998c2ecf20Sopenharmony_ci * GID_PT request. 1008c2ecf20Sopenharmony_ci */ 1018c2ecf20Sopenharmony_cistruct fc_ns_gid_pt { 1028c2ecf20Sopenharmony_ci __u8 fn_pt_type; 1038c2ecf20Sopenharmony_ci __u8 fn_domain_id_scope; 1048c2ecf20Sopenharmony_ci __u8 fn_area_id_scope; 1058c2ecf20Sopenharmony_ci __u8 fn_resvd; 1068c2ecf20Sopenharmony_ci}; 1078c2ecf20Sopenharmony_ci 1088c2ecf20Sopenharmony_ci/* 1098c2ecf20Sopenharmony_ci * GID_FT or GPN_FT request. 1108c2ecf20Sopenharmony_ci */ 1118c2ecf20Sopenharmony_cistruct fc_ns_gid_ft { 1128c2ecf20Sopenharmony_ci __u8 fn_resvd; 1138c2ecf20Sopenharmony_ci __u8 fn_domain_id_scope; 1148c2ecf20Sopenharmony_ci __u8 fn_area_id_scope; 1158c2ecf20Sopenharmony_ci __u8 fn_fc4_type; 1168c2ecf20Sopenharmony_ci}; 1178c2ecf20Sopenharmony_ci 1188c2ecf20Sopenharmony_ci/* 1198c2ecf20Sopenharmony_ci * GPN_FT response. 1208c2ecf20Sopenharmony_ci */ 1218c2ecf20Sopenharmony_cistruct fc_gpn_ft_resp { 1228c2ecf20Sopenharmony_ci __u8 fp_flags; /* see fp_flags definitions above */ 1238c2ecf20Sopenharmony_ci __u8 fp_fid[3]; /* port ID */ 1248c2ecf20Sopenharmony_ci __be32 fp_resvd; 1258c2ecf20Sopenharmony_ci __be64 fp_wwpn; /* port name */ 1268c2ecf20Sopenharmony_ci}; 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ci/* 1298c2ecf20Sopenharmony_ci * GID_PN request 1308c2ecf20Sopenharmony_ci */ 1318c2ecf20Sopenharmony_cistruct fc_ns_gid_pn { 1328c2ecf20Sopenharmony_ci __be64 fn_wwpn; /* port name */ 1338c2ecf20Sopenharmony_ci}; 1348c2ecf20Sopenharmony_ci 1358c2ecf20Sopenharmony_ci/* 1368c2ecf20Sopenharmony_ci * GID_PN response or GSPN_ID request 1378c2ecf20Sopenharmony_ci */ 1388c2ecf20Sopenharmony_cistruct fc_gid_pn_resp { 1398c2ecf20Sopenharmony_ci __u8 fp_resvd; 1408c2ecf20Sopenharmony_ci __u8 fp_fid[3]; /* port ID */ 1418c2ecf20Sopenharmony_ci}; 1428c2ecf20Sopenharmony_ci 1438c2ecf20Sopenharmony_ci/* 1448c2ecf20Sopenharmony_ci * GSPN_ID response 1458c2ecf20Sopenharmony_ci */ 1468c2ecf20Sopenharmony_cistruct fc_gspn_resp { 1478c2ecf20Sopenharmony_ci __u8 fp_name_len; 1488c2ecf20Sopenharmony_ci char fp_name[]; 1498c2ecf20Sopenharmony_ci}; 1508c2ecf20Sopenharmony_ci 1518c2ecf20Sopenharmony_ci/* 1528c2ecf20Sopenharmony_ci * RFT_ID request - register FC-4 types for ID. 1538c2ecf20Sopenharmony_ci */ 1548c2ecf20Sopenharmony_cistruct fc_ns_rft_id { 1558c2ecf20Sopenharmony_ci struct fc_ns_fid fr_fid; /* port ID object */ 1568c2ecf20Sopenharmony_ci struct fc_ns_fts fr_fts; /* FC-4 types object */ 1578c2ecf20Sopenharmony_ci}; 1588c2ecf20Sopenharmony_ci 1598c2ecf20Sopenharmony_ci/* 1608c2ecf20Sopenharmony_ci * RPN_ID request - register port name for ID. 1618c2ecf20Sopenharmony_ci * RNN_ID request - register node name for ID. 1628c2ecf20Sopenharmony_ci */ 1638c2ecf20Sopenharmony_cistruct fc_ns_rn_id { 1648c2ecf20Sopenharmony_ci struct fc_ns_fid fr_fid; /* port ID object */ 1658c2ecf20Sopenharmony_ci __be64 fr_wwn; /* node name or port name */ 1668c2ecf20Sopenharmony_ci} __attribute__((__packed__)); 1678c2ecf20Sopenharmony_ci 1688c2ecf20Sopenharmony_ci/* 1698c2ecf20Sopenharmony_ci * RSNN_NN request - register symbolic node name 1708c2ecf20Sopenharmony_ci */ 1718c2ecf20Sopenharmony_cistruct fc_ns_rsnn { 1728c2ecf20Sopenharmony_ci __be64 fr_wwn; /* node name */ 1738c2ecf20Sopenharmony_ci __u8 fr_name_len; 1748c2ecf20Sopenharmony_ci char fr_name[]; 1758c2ecf20Sopenharmony_ci} __attribute__((__packed__)); 1768c2ecf20Sopenharmony_ci 1778c2ecf20Sopenharmony_ci/* 1788c2ecf20Sopenharmony_ci * RSPN_ID request - register symbolic port name 1798c2ecf20Sopenharmony_ci */ 1808c2ecf20Sopenharmony_cistruct fc_ns_rspn { 1818c2ecf20Sopenharmony_ci struct fc_ns_fid fr_fid; /* port ID object */ 1828c2ecf20Sopenharmony_ci __u8 fr_name_len; 1838c2ecf20Sopenharmony_ci char fr_name[]; 1848c2ecf20Sopenharmony_ci} __attribute__((__packed__)); 1858c2ecf20Sopenharmony_ci 1868c2ecf20Sopenharmony_ci/* 1878c2ecf20Sopenharmony_ci * RFF_ID request - register FC-4 Features for ID. 1888c2ecf20Sopenharmony_ci */ 1898c2ecf20Sopenharmony_cistruct fc_ns_rff_id { 1908c2ecf20Sopenharmony_ci struct fc_ns_fid fr_fid; /* port ID object */ 1918c2ecf20Sopenharmony_ci __u8 fr_resvd[2]; 1928c2ecf20Sopenharmony_ci __u8 fr_feat; /* FC-4 Feature bits */ 1938c2ecf20Sopenharmony_ci __u8 fr_type; /* FC-4 type */ 1948c2ecf20Sopenharmony_ci} __attribute__((__packed__)); 1958c2ecf20Sopenharmony_ci 1968c2ecf20Sopenharmony_ci#endif /* _FC_NS_H_ */ 197