130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright(c) 2007 Intel Corporation. All rights reserved. 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This program is free software; you can redistribute it and/or modify it 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * under the terms and conditions of the GNU General Public License, 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * version 2, as published by the Free Software Foundation. 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This program is distributed in the hope it will be useful, but WITHOUT 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * more details. 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * You should have received a copy of the GNU General Public License along with 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * this program; if not, write to the Free Software Foundation, Inc., 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Maintained at www.Open-FCoE.org 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _FC_NS_H_ 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _FC_NS_H_ 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Fibre Channel Services - Name Service (dNS) 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * From T11.org FC-GS-2 Rev 5.3 November 1998. 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Common-transport sub-type for Name Server. 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FC_NS_SUBTYPE 2 /* fs_ct_hdr.ct_fs_subtype */ 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Name server Requests. 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Note: this is an incomplete list, some unused requests are omitted. 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 3930692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum fc_ns_req { 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_GA_NXT = 0x0100, /* get all next */ 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_GI_A = 0x0101, /* get identifiers - scope */ 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_GPN_ID = 0x0112, /* get port name by ID */ 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_GNN_ID = 0x0113, /* get node name by ID */ 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_GSPN_ID = 0x0118, /* get symbolic port name */ 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_GID_PN = 0x0121, /* get ID for port name */ 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_GID_NN = 0x0131, /* get IDs for node name */ 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_GID_FT = 0x0171, /* get IDs by FC4 type */ 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_GPN_FT = 0x0172, /* get port names by FC4 type */ 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_GID_PT = 0x01a1, /* get IDs by port type */ 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_RPN_ID = 0x0212, /* reg port name for ID */ 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_RNN_ID = 0x0213, /* reg node name for ID */ 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_RFT_ID = 0x0217, /* reg FC4 type for ID */ 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_RSPN_ID = 0x0218, /* reg symbolic port name */ 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_RFF_ID = 0x021f, /* reg FC4 Features for ID */ 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_RSNN_NN = 0x0239, /* reg symbolic node name */ 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Port type values. 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 6130692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum fc_ns_pt { 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_UNID_PORT = 0x00, /* unidentified */ 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_N_PORT = 0x01, /* N port */ 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_NL_PORT = 0x02, /* NL port */ 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_FNL_PORT = 0x03, /* F/NL port */ 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_NX_PORT = 0x7f, /* Nx port */ 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_F_PORT = 0x81, /* F port */ 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_FL_PORT = 0x82, /* FL port */ 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_E_PORT = 0x84, /* E port */ 7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng FC_NS_B_PORT = 0x85, /* B port */ 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Port type object. 7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 7630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_ns_pt_obj { 7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 pt_type; 7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Port ID object 8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 8330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_ns_fid { 8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fp_flags; /* flags for responses only */ 8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fp_fid[3]; 8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * fp_flags in port ID object, for responses only. 9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FC_NS_FID_LAST 0x80 /* last object */ 9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 9430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * FC4-types object. 9530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FC_NS_TYPES 256 /* number of possible FC-4 types */ 9730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define FC_NS_BPW 32 /* bits per word in bitmap */ 9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_ns_fts { 10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be32 ff_type_map[FC_NS_TYPES / FC_NS_BPW]; /* bitmap of FC-4 types */ 10130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 10230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 10330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 10430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * FC4-features object. 10530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 10630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_ns_ff { 10730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be32 fd_feat[FC_NS_TYPES * 4 / FC_NS_BPW]; /* 4-bits per FC-type */ 10830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 10930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 11130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * GID_PT request. 11230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 11330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_ns_gid_pt { 11430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fn_pt_type; 11530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fn_domain_id_scope; 11630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fn_area_id_scope; 11730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fn_resvd; 11830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 11930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 12030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 12130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * GID_FT or GPN_FT request. 12230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 12330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_ns_gid_ft { 12430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fn_resvd; 12530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fn_domain_id_scope; 12630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fn_area_id_scope; 12730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fn_fc4_type; 12830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 12930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 13030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 13130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * GPN_FT response. 13230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 13330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_gpn_ft_resp { 13430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fp_flags; /* see fp_flags definitions above */ 13530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fp_fid[3]; /* port ID */ 13630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be32 fp_resvd; 13730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be64 fp_wwpn; /* port name */ 13830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 13930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 14030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 14130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * GID_PN request 14230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 14330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_ns_gid_pn { 14430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be64 fn_wwpn; /* port name */ 14530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 14630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 14730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 14830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * GID_PN response or GSPN_ID request 14930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 15030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_gid_pn_resp { 15130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fp_resvd; 15230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fp_fid[3]; /* port ID */ 15330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 15430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 15530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 15630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * GSPN_ID response 15730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 15830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_gspn_resp { 15930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fp_name_len; 16030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char fp_name[]; 16130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 16230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 16330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 16430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * RFT_ID request - register FC-4 types for ID. 16530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 16630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_ns_rft_id { 16730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct fc_ns_fid fr_fid; /* port ID object */ 16830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct fc_ns_fts fr_fts; /* FC-4 types object */ 16930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 17030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 17130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 17230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * RPN_ID request - register port name for ID. 17330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * RNN_ID request - register node name for ID. 17430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 17530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_ns_rn_id { 17630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct fc_ns_fid fr_fid; /* port ID object */ 17730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be64 fr_wwn; /* node name or port name */ 17830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((__packed__)); 17930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 18030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 18130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * RSNN_NN request - register symbolic node name 18230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 18330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_ns_rsnn { 18430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __be64 fr_wwn; /* node name */ 18530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fr_name_len; 18630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char fr_name[]; 18730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((__packed__)); 18830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 18930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 19030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * RSPN_ID request - register symbolic port name 19130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 19230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_ns_rspn { 19330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct fc_ns_fid fr_fid; /* port ID object */ 19430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fr_name_len; 19530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char fr_name[]; 19630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((__packed__)); 19730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 19830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 19930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * RFF_ID request - register FC-4 Features for ID. 20030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 20130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct fc_ns_rff_id { 20230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct fc_ns_fid fr_fid; /* port ID object */ 20330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fr_resvd[2]; 20430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fr_feat; /* FC-4 Feature bits */ 20530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 fr_type; /* FC-4 type */ 20630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((__packed__)); 20730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 20830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _FC_NS_H_ */ 209