logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

rdma_join_multicast_ex - Joins a multicast group with extended options.

Arguments

       id                  Communication identifier associated with the request.

       mc_join_attr        Is an rdma_cm_join_mc_attr_ex struct, as defined in <rdma/rdma_cma.h>.

       context             User-defined context associated with the join request.

Authors

       Alex Vesker <valex@mellanox.com>

librdmacm                                          2017-11-17                          RDMA_JOIN_MULTICAST_EX(3)

Description

       Joins a multicast group (MCG) with extended options.  Currently supporting MC join with a specified  join
       flag.

       struct rdma_cm_join_mc_attr_ex {
               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 */
       };

       The supported join flags are:

       RDMA_MC_JOIN_FLAG_FULLMEMBER  - Create multicast group, Send multicast messages to MCG, Receive multicast
       messages from MCG.

       RDMA_MC_JOIN_FLAG_SENDONLY_FULLMEMBER - Create multicast group, Send multicast  messages  to  MCG,  Don't
       receive multicast messages from MCG (send-only).

       Initiating a MC join as "Send Only Full Member" on InfiniBand requires SM support, otherwise joining will
       fail.

       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.

Name

       rdma_join_multicast_ex - Joins a multicast group with extended options.

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.

Return Value

       Returns 0 on success, or -1 on error.  If an error occurs, errno will be  set  to  indicate  the  failure
       reason.

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)

Synopsis

#include<rdma/rdma_cma.h>intrdma_join_multicast_ex(structrdma_cm_id*id,structrdma_cm_join_mc_attr_ex*mc_join_attr,void*context);

See Also