root/include/uapi/scsi/fc/fc_ns.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */