#ifndef _SYS_IB_CLIENTS_OF_SOL_OFS_SOL_IB_CMA_H
#define _SYS_IB_CLIENTS_OF_SOL_OFS_SOL_IB_CMA_H
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/types.h>
#include <sys/modctl.h>
#include <sys/errno.h>
#include <sys/stat.h>
#include <sys/ddi.h>
#include <sys/sunddi.h>
#include <sys/modctl.h>
#include <sys/file.h>
#include <sys/ib/ibtl/ibvti.h>
#define RDMA_UDP_QKEY 0x01234567
typedef struct {
uint64_t dev_node_guid;
uint8_t dev_port_num;
uint16_t dev_pkey_ix;
ib_pkey_t dev_pkey;
ib_gid_t dev_sgid;
ibt_ip_addr_t dev_ipaddr;
} ibcma_dev_t;
#define IBCMA_LOCAL_ADDR_SET_FLAG 0x01
#define IBCMA_REMOTE_ADDR_SET_FLAG 0x02
#define IBCMA_LOCAL_ADDR_IFADDRANY 0x10
typedef struct ibcma_chan_s {
ibt_path_info_t *chan_pathp;
uint8_t chan_numpaths;
size_t chan_path_size;
ibt_ip_addr_t chan_local_addr;
ibt_ip_addr_t chan_remote_addr;
in_port_t chan_port;
ib_svc_id_t chan_sid;
uint8_t chan_addr_flag;
struct rdma_cm_id *chan_req_idp;
ibt_adds_vect_t chan_rcreq_addr;
ib_qpn_t chan_rcreq_qpn;
uint8_t chan_rcreq_ra_in;
ibt_ofuvcm_req_data_t chan_rtr_data;
uint8_t chan_qpmodifyflag;
ibcma_dev_t *chan_devp;
genlist_t chan_mcast_list;
int chan_mcast_cnt;
} ibcma_chan_t;
typedef struct ibcma_mcast_s {
struct rdma_cm_id *mcast_idp;
void *mcast_ctx;
struct sockaddr_in6 mcast_addr;
ib_gid_t mcast_gid;
} ibcma_mcast_t;
#ifdef __cplusplus
}
#endif
#endif