---
name: "rdma_join_multicast_ex"
section: "3"
platform: "linux"
package: "rdma-core"
version: "65.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/rdma_join_multicast_ex"
---

# rdma\_join\_multicast\_ex(3)

Joins a multicast group with extended options.

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

## SEE ALSO

[rdma\_join\_multicast(3)](/rdma_join_multicast/3.md), [rdma\_leave\_multicast(3)](/rdma_leave_multicast/3.md), [rdma\_bind\_addr(3)](/rdma_bind_addr/3.md), [rdma\_resolve\_addr(3)](/rdma_resolve_addr/3.md), [rdma\_create\_qp(3)](/rdma_create_qp/3.md), [rdma\_get\_cm\_event(3)](/rdma_get_cm_event/3.md)

## AUTHORS

- Alex Vesker \<valex@mellanox.com\>
