RDMA_JOIN_MULTICAST(3)
π RDMA_JOIN_MULTICAST π
okay bestie, so this is a page from the Librdmacm Programmer's Manual and it's literally about rdma_join_multicast, which does exactly what it says on the tin: it joins a multicast group. no cap. π¦
β¨ NAME β¨
rdma_join_multicast β joins a multicast group. that's it, that's the whole vibe. π
π SYNOPSIS π
#include <rdma/rdma_cma.h>
int rdma_join_multicast (struct rdma_cm_id *id, struct sockaddr *addr,
void *context);
three args, one int back. she's lowkey simple but highkey important. π
πΈ ARGUMENTS πΈ
idβ the communication identifier that's associated with this request. like, who's asking? this girl.addrβ the multicast address that identifies the group you're trying to join. this is the group chat, fr fr.contextβ your own user-defined context that gets attached to the join request. put whatever you want in there, it's your little emotional support pointer. π«Ά
π DESCRIPTION π
Joins a multicast group and attaches an associated QP to the group. the way that this function just does the thing. iconic behavior. β¨
β RETURN VALUE β
Returns 0 on success, or -1 on error. and if an error happens, errno will be set to indicate the failure reason β so like, always check it, bestie, don't just assume. π
π NOTES π
okay this is the part you actually need to read, so lock in. π
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. no shortcuts, she needs a home first.
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. iykyk.
The user must call rdma_leave_multicast to leave the multicast group and release any multicast resources. it's giving "you can check out any time you like" β please actually leave, the resources are not infinite. π
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. so either the system handles it or you do β there is no third option. π
The join context is returned to the user through the private_data field in the rdma_cm_event. that's where your context pointer comes back to you, like a little boomerang of friendship. πͺπ
π₯ SEE ALSO π₯
rdma_leave_multicast(3)rdma_bind_addr(3)rdma_resolve_addr(3)rdma_create_qp(3)rdma_get_cm_event(3)
and that's the whole page, periodt. π this little gem is from librdmacm, dated 2008-01-02 β she's been serving accurate multicast knowledge since way before you were on the internet, and she still ate. π bye bestie, go join your group! ππ¦π
π¦ where this page comes from
- alpine 3.24: rdma-core-doc 61.0-r0 Β· GPL-2.0-only OR BSD-2-Clause
- arch rolling: rdma-core 65.0-1 Β· GPL-2.0-or-later OR LicenseRef-OpenIB.org-BSD-MIT AND GPL-2.0-or-later OR LicenseRef-OpenIB.org-BSD-FreeBSD AND GPL-2.0-or-later OR LicenseRef-Intel-BSD-3-Clause AND GPL-2.0-or-later OR LicenseRef-PathScale-BSD-Patent-License AND CC0-1.0 AND MIT AND BSD-2-Clause AND CPL-1.0 OR BSD-2-Clause OR GPL-2.0-or-later
- centos-stream 10: rdma-core-devel 62.0-3.el10 Β· GPLv2 or BSD
- centos-stream 9: rdma-core-devel 61.0-3.el9 Β· GPLv2 or BSD
- centos-stream 9: rdma-core-devel 61.0-3.el9 Β· GPLv2 or BSD
- debian bookworm: librdmacm-dev 44.0-2 Β· BSD-MIT OR GPL-2.0-only
- debian trixie: librdmacm-dev 56.1-1 Β· BSD-MIT OR GPL-2.0-only
- fedora 43: rdma-core-devel 58.0-4.fc43 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- fedora 43: rdma-core-devel 58.0-4.fc43 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- fedora 44: rdma-core-devel 61.0-2.fc44 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- fedora 44: rdma-core-devel 61.0-2.fc44 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- fedora 44: rdma-core-devel 61.1^20260812git975bdaf-1.fc44 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- fedora 44: rdma-core-devel 61.1^20260812git975bdaf-1.fc44 Β· GPL-2.0-only OR BSD-2-Clause AND BSD-3-Clause
- freebsd 14.5: base 14.5
- freebsd 15.1: base 15.1
- nixos 26.05: rdma-core 62.0
- nixpkgs unstable: rdma-core 65.0
- opensuse-leap 16.0: rdma-core-devel 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- opensuse-leap 16.0: rdma-core-devel 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- opensuse-leap 16.0: rdma-core-devel 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- opensuse-leap 16.0: rdma-core-devel 56.1-160000.2.2 Β· BSD-2-Clause OR GPL-2.0-only
- ubuntu jammy: librdmacm-dev 39.0-1 Β· BSD-MIT OR GPL-2.0-only
- ubuntu noble: librdmacm-dev 50.0-2build2 Β· BSD-MIT OR GPL-2.0-only
- ubuntu noble: librdmacm-dev 50.0-2ubuntu0.2 Β· BSD-MIT OR GPL-2.0-only
- ubuntu questing: librdmacm-dev 56.1-1ubuntu1
- ubuntu resolute: librdmacm-dev 61.0-2ubuntu3 Β· BSD-MIT OR GPL-2.0-only
- ubuntu stonking: librdmacm-dev 64.0-1ubuntu1 Β· BSD-MIT OR GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms