# rdma_join_multicast_ex

## NAME



           rdma_join_multicast_ex - Joins a multicast group with extended
           options.
    


## SYNOPSIS



           **#include <rdma/rdma_cma.h>**
    
           **int rdma_join_multicast_ex (struct rdma_cm_id ***_id_**, struct**
           **rdma_cm_join_mc_attr_ex ***_mc_join_attr_**, void ***_context_**);**
    


## 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.
    


## 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.
    


## RETURN VALUE



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


## 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.
    


* * *