| .TH "RDMA_JOIN_MULTICAST_EX" 3 "2017-11-17" "librdmacm" "Librdmacm Programmer's Manual" librdmacm |
| .SH NAME |
| rdma_join_multicast_ex \- Joins a multicast group with extended options. |
| .SH SYNOPSIS |
| .B "#include <rdma/rdma_cma.h>" |
| .P |
| .B "int" rdma_join_multicast_ex |
| .BI "(struct rdma_cm_id *" id "," |
| .BI "struct rdma_cm_join_mc_attr_ex *" mc_join_attr "," |
| .BI "void *" context ");" |
| .SH ARGUMENTS |
| .IP "id" 20 |
| Communication identifier associated with the request. |
| .IP "mc_join_attr" 20 |
| Is an rdma_cm_join_mc_attr_ex struct, as defined in <rdma/rdma_cma.h>. |
| .IP "context" 20 |
| User-defined context associated with the join request. |
| .SH "DESCRIPTION" |
| Joins a multicast group (MCG) with extended options. |
| Currently supporting MC join with a specified join flag. |
| .P |
| .nf |
| struct rdma_cm_join_mc_attr_ex { |
| .in +8 |
| uint32_t comp_mask; /* Bitwise OR between "rdma_cm_join_mc_attr_mask" enum */ |
| uint32_t join_flags; /* Use a single flag from "rdma_cm_mc_join_flags" enum */ |
| struct sockaddr *addr; /* Multicast address identifying the group to join */ |
| .in -8 |
| }; |
| .fi |
| .P |
| The supported join flags are: |
| .P |
| .B RDMA_MC_JOIN_FLAG_FULLMEMBER |
| - Create multicast group, Send multicast messages to MCG, Receive multicast messages from MCG. |
| .P |
| .B RDMA_MC_JOIN_FLAG_SENDONLY_FULLMEMBER |
| - Create multicast group, Send multicast messages to MCG, Don't receive multicast messages from MCG (send-only). |
| .P |
| Initiating a MC join as "Send Only Full Member" on InfiniBand requires SM support, otherwise joining will fail. |
| .P |
| Initiating a MC join as "Send Only Full Member" on RoCEv2/ETH will not send any IGMP messages unlike a Full Member MC join. |
| When "Send Only Full Member" is used the QP will not be attached to the MCG. |
| .P |
| .SH "RETURN VALUE" |
| Returns 0 on success, or -1 on error. If an error occurs, errno will be |
| set to indicate the failure reason. |
| .SH "NOTES" |
| Before joining a multicast group, the rdma_cm_id must be bound to |
| an RDMA device by calling rdma_bind_addr or rdma_resolve_addr. Use of |
| rdma_resolve_addr requires the local routing tables to resolve the |
| multicast address to an RDMA device, unless a specific source address |
| is provided. The user must call rdma_leave_multicast to leave the |
| multicast group and release any multicast resources. After the join |
| operation completes, if a QP is associated with the rdma_cm_id, |
| it is automatically attached to the multicast group when the multicast |
| event is retrieved by the user. Otherwise, the user is responsible |
| for calling ibv_attach_mcast to bind the QP to the multicast group. |
| The join context is returned to the user through the private_data |
| field in the rdma_cm_event. |
| .SH "SEE ALSO" |
| rdma_join_multicast(3), rdma_leave_multicast(3), rdma_bind_addr(3), rdma_resolve_addr(3), rdma_create_qp(3), |
| rdma_get_cm_event(3) |
| .SH "AUTHORS" |
| .TP |
| Alex Vesker <valex@mellanox.com> |