RDMA_RESOLVE_ROUTE(3)
π RDMA_RESOLVE_ROUTE π
okay bestie, sit down, hydrate, and let's talk about rdma_resolve_route from the Librdmacm Programmer's Manual (yes, section 3, library calls only, we're fancy here β¨).
This is the function that figures out how to get your packets where they're going. Route info. The map. The directions. The way that your RDMA connection literally knows where to go πΊοΈβ¨
πΈ NAME πΈ
rdma_resolve_route β resolve the route information needed to establish a connection.
Like, it goes and gets the route info. So you can, y'know, connect. Iconic behaviour, no notes π
β¨ SYNOPSIS β¨
#include <rdma/rdma_cma.h>
int rdma_resolve_route (struct rdma_cm_id *id, int timeout_ms);
two arguments, one int return, we love a simple signature π«Ά
π ARGUMENTS π
idβ the RDMA identifier. that's yourstruct rdma_cm_id *, your main character, the whole vibe.timeout_msβ how long you're willing to wait for the resolution to finish. time to wait for resolution to complete, fr fr. patience is a virtue but so is a timeout β³
π¦ DESCRIPTION π¦
So here's the tea β β this call resolves an RDMA route to the destination address, and it does that in order to establish a connection. That's the whole point of it. That's its job. That's its moment.
But listen π the destination address must have already been resolved by calling rdma_resolve_addr. Already. Before this. We are NOT skipping steps in this house. If you haven't called rdma_resolve_addr yet, go do that first, bestie, this function is not gonna do it for you π
π RETURN VALUE π
- Returns
0on success π slay - Returns
-1on error π
and if an error happens, errno gets set to indicate the failure reason. so like, always check your errno. it's literally telling you what went wrong. it's giving helpful. read it. π«Ά
π NOTES π
Timing check β
β this gets called on the client side of a connection, after calling rdma_resolve_addr, but before calling rdma_connect.
So the order is:
rdma_resolve_addrrdma_resolve_routeβ you are hererdma_connect
sandwich position. the middle child. the bridge. we respect it π
π₯ INFINIBAND SPECIFIC π₯
For the InfiniBand girlies: this call obtains a path record that is used by the connection. That's the InfiniBand-specific detail. path record. got it. noted. slay. π
π SEE ALSO π
go read those next, bestie, they're all connected (pun absolutely intended π)
and that's the whole page!! brought to you by librdmacm, dated 2007-10-31, and it lives at RDMA_RESOLVE_ROUTE(3) β vintage but still serving looks πβ¨π go resolve some routes, you've got this π¦
π¦ 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