Home | History | Annotate | Download | only in rdma
      1 /****************************************************************************
      2  ****************************************************************************
      3  ***
      4  ***   This header was automatically generated from a Linux kernel header
      5  ***   of the same name, to make information necessary for userspace to
      6  ***   call into the kernel available to libc.  It contains only constants,
      7  ***   structures, and macros generated from the original header, and thus,
      8  ***   contains no copyrightable information.
      9  ***
     10  ***   To edit the content of this header, modify the corresponding
     11  ***   source file (e.g. under external/kernel-headers/original/) then
     12  ***   run bionic/libc/kernel/tools/update_all.py
     13  ***
     14  ***   Any manual change here will be lost the next time this script will
     15  ***   be run. You've been warned!
     16  ***
     17  ****************************************************************************
     18  ****************************************************************************/
     19 #ifndef RDMA_USER_CM_H
     20 #define RDMA_USER_CM_H
     21 #include <linux/types.h>
     22 #include <linux/socket.h>
     23 #include <linux/in6.h>
     24 #include <rdma/ib_user_verbs.h>
     25 #include <rdma/ib_user_sa.h>
     26 #define RDMA_USER_CM_ABI_VERSION 4
     27 #define RDMA_MAX_PRIVATE_DATA 256
     28 enum {
     29   RDMA_USER_CM_CMD_CREATE_ID,
     30   RDMA_USER_CM_CMD_DESTROY_ID,
     31   RDMA_USER_CM_CMD_BIND_IP,
     32   RDMA_USER_CM_CMD_RESOLVE_IP,
     33   RDMA_USER_CM_CMD_RESOLVE_ROUTE,
     34   RDMA_USER_CM_CMD_QUERY_ROUTE,
     35   RDMA_USER_CM_CMD_CONNECT,
     36   RDMA_USER_CM_CMD_LISTEN,
     37   RDMA_USER_CM_CMD_ACCEPT,
     38   RDMA_USER_CM_CMD_REJECT,
     39   RDMA_USER_CM_CMD_DISCONNECT,
     40   RDMA_USER_CM_CMD_INIT_QP_ATTR,
     41   RDMA_USER_CM_CMD_GET_EVENT,
     42   RDMA_USER_CM_CMD_GET_OPTION,
     43   RDMA_USER_CM_CMD_SET_OPTION,
     44   RDMA_USER_CM_CMD_NOTIFY,
     45   RDMA_USER_CM_CMD_JOIN_IP_MCAST,
     46   RDMA_USER_CM_CMD_LEAVE_MCAST,
     47   RDMA_USER_CM_CMD_MIGRATE_ID,
     48   RDMA_USER_CM_CMD_QUERY,
     49   RDMA_USER_CM_CMD_BIND,
     50   RDMA_USER_CM_CMD_RESOLVE_ADDR,
     51   RDMA_USER_CM_CMD_JOIN_MCAST
     52 };
     53 struct rdma_ucm_cmd_hdr {
     54   __u32 cmd;
     55   __u16 in;
     56   __u16 out;
     57 };
     58 struct rdma_ucm_create_id {
     59   __u64 uid;
     60   __u64 response;
     61   __u16 ps;
     62   __u8 qp_type;
     63   __u8 reserved[5];
     64 };
     65 struct rdma_ucm_create_id_resp {
     66   __u32 id;
     67 };
     68 struct rdma_ucm_destroy_id {
     69   __u64 response;
     70   __u32 id;
     71   __u32 reserved;
     72 };
     73 struct rdma_ucm_destroy_id_resp {
     74   __u32 events_reported;
     75 };
     76 struct rdma_ucm_bind_ip {
     77   __u64 response;
     78   struct sockaddr_in6 addr;
     79   __u32 id;
     80 };
     81 struct rdma_ucm_bind {
     82   __u32 id;
     83   __u16 addr_size;
     84   __u16 reserved;
     85   struct sockaddr_storage addr;
     86 };
     87 struct rdma_ucm_resolve_ip {
     88   struct sockaddr_in6 src_addr;
     89   struct sockaddr_in6 dst_addr;
     90   __u32 id;
     91   __u32 timeout_ms;
     92 };
     93 struct rdma_ucm_resolve_addr {
     94   __u32 id;
     95   __u32 timeout_ms;
     96   __u16 src_size;
     97   __u16 dst_size;
     98   __u32 reserved;
     99   struct sockaddr_storage src_addr;
    100   struct sockaddr_storage dst_addr;
    101 };
    102 struct rdma_ucm_resolve_route {
    103   __u32 id;
    104   __u32 timeout_ms;
    105 };
    106 enum {
    107   RDMA_USER_CM_QUERY_ADDR,
    108   RDMA_USER_CM_QUERY_PATH,
    109   RDMA_USER_CM_QUERY_GID
    110 };
    111 struct rdma_ucm_query {
    112   __u64 response;
    113   __u32 id;
    114   __u32 option;
    115 };
    116 struct rdma_ucm_query_route_resp {
    117   __u64 node_guid;
    118   struct ib_user_path_rec ib_route[2];
    119   struct sockaddr_in6 src_addr;
    120   struct sockaddr_in6 dst_addr;
    121   __u32 num_paths;
    122   __u8 port_num;
    123   __u8 reserved[3];
    124 };
    125 struct rdma_ucm_query_addr_resp {
    126   __u64 node_guid;
    127   __u8 port_num;
    128   __u8 reserved;
    129   __u16 pkey;
    130   __u16 src_size;
    131   __u16 dst_size;
    132   struct sockaddr_storage src_addr;
    133   struct sockaddr_storage dst_addr;
    134 };
    135 struct rdma_ucm_query_path_resp {
    136   __u32 num_paths;
    137   __u32 reserved;
    138   struct ib_path_rec_data path_data[0];
    139 };
    140 struct rdma_ucm_conn_param {
    141   __u32 qp_num;
    142   __u32 qkey;
    143   __u8 private_data[RDMA_MAX_PRIVATE_DATA];
    144   __u8 private_data_len;
    145   __u8 srq;
    146   __u8 responder_resources;
    147   __u8 initiator_depth;
    148   __u8 flow_control;
    149   __u8 retry_count;
    150   __u8 rnr_retry_count;
    151   __u8 valid;
    152 };
    153 struct rdma_ucm_ud_param {
    154   __u32 qp_num;
    155   __u32 qkey;
    156   struct ib_uverbs_ah_attr ah_attr;
    157   __u8 private_data[RDMA_MAX_PRIVATE_DATA];
    158   __u8 private_data_len;
    159   __u8 reserved[7];
    160 };
    161 struct rdma_ucm_connect {
    162   struct rdma_ucm_conn_param conn_param;
    163   __u32 id;
    164   __u32 reserved;
    165 };
    166 struct rdma_ucm_listen {
    167   __u32 id;
    168   __u32 backlog;
    169 };
    170 struct rdma_ucm_accept {
    171   __u64 uid;
    172   struct rdma_ucm_conn_param conn_param;
    173   __u32 id;
    174   __u32 reserved;
    175 };
    176 struct rdma_ucm_reject {
    177   __u32 id;
    178   __u8 private_data_len;
    179   __u8 reserved[3];
    180   __u8 private_data[RDMA_MAX_PRIVATE_DATA];
    181 };
    182 struct rdma_ucm_disconnect {
    183   __u32 id;
    184 };
    185 struct rdma_ucm_init_qp_attr {
    186   __u64 response;
    187   __u32 id;
    188   __u32 qp_state;
    189 };
    190 struct rdma_ucm_notify {
    191   __u32 id;
    192   __u32 event;
    193 };
    194 struct rdma_ucm_join_ip_mcast {
    195   __u64 response;
    196   __u64 uid;
    197   struct sockaddr_in6 addr;
    198   __u32 id;
    199 };
    200 enum {
    201   RDMA_MC_JOIN_FLAG_FULLMEMBER,
    202   RDMA_MC_JOIN_FLAG_SENDONLY_FULLMEMBER,
    203   RDMA_MC_JOIN_FLAG_RESERVED,
    204 };
    205 struct rdma_ucm_join_mcast {
    206   __u64 response;
    207   __u64 uid;
    208   __u32 id;
    209   __u16 addr_size;
    210   __u16 join_flags;
    211   struct sockaddr_storage addr;
    212 };
    213 struct rdma_ucm_get_event {
    214   __u64 response;
    215 };
    216 struct rdma_ucm_event_resp {
    217   __u64 uid;
    218   __u32 id;
    219   __u32 event;
    220   __u32 status;
    221   union {
    222     struct rdma_ucm_conn_param conn;
    223     struct rdma_ucm_ud_param ud;
    224   } param;
    225 };
    226 enum {
    227   RDMA_OPTION_ID = 0,
    228   RDMA_OPTION_IB = 1
    229 };
    230 enum {
    231   RDMA_OPTION_ID_TOS = 0,
    232   RDMA_OPTION_ID_REUSEADDR = 1,
    233   RDMA_OPTION_ID_AFONLY = 2,
    234   RDMA_OPTION_IB_PATH = 1
    235 };
    236 struct rdma_ucm_set_option {
    237   __u64 optval;
    238   __u32 id;
    239   __u32 level;
    240   __u32 optname;
    241   __u32 optlen;
    242 };
    243 struct rdma_ucm_migrate_id {
    244   __u64 response;
    245   __u32 id;
    246   __u32 fd;
    247 };
    248 struct rdma_ucm_migrate_resp {
    249   __u32 events_reported;
    250 };
    251 #endif
    252