"Fossies" - the Fresh Open Source Software Archive

Member "open-fcoe-3.19/fcoe-utils/include/fc_ns.h" (15 Apr 2015, 4918 Bytes) of package /linux/misc/open-fcoe-3.19.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "fc_ns.h" see the Fossies "Dox" file reference documentation.

    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_ */