Kirill Gibelgaus has uploaded this change for review.

View Change

[rdma-bind-addr] RDMA: honor Bind_Addr when creating the listener

The NFS/RDMA listener always uses 0.0.0.0, even when Bind_Addr specifies
a particular local address. The TCP and UDP listeners already use
Bind_Addr. A wildcard RDMA listener prevents instances bound to separate
local IPs from using the same RDMA port in one network namespace.

Use the configured bind address when creating the RDMA transport.
Normalize IPv4-mapped IPv6 addresses with convert_ipv6_to_ipv4(), then
format the address with sprint_sockip(). Keep the formatted address in
static storage because ntirpc retains its pointer.

A local C probe compiling the actual Create_RDMA() and address helpers
with transport creation captured reproduced the failure before the fix
and passed 10 IPv4, mapped IPv4, native IPv6, wildcard, and invalid-address
cases after the fix under AddressSanitizer and UndefinedBehaviorSanitizer.
clang-format, checkpatch, and git diff --check also passed.

A full Linux/RDMA build and hardware-backed RDMA connections have not
been tested. An omitted Bind_Addr normally initializes to ::, which is
now passed through instead of the previously hardcoded IPv4 wildcard.

Change-Id: I1505ee1099a38fdb040030d7d0cc55fdb597990f
Signed-off-by: Kirill Gibelgaus <kgibelgaus@ozon.ru>
---
M src/MainNFSD/nfs_rpc_dispatcher_thread.c
1 file changed, 11 insertions(+), 0 deletions(-)

git pull ssh://review.gerrithub.io:29418/ffilz/nfs-ganesha refs/changes/06/1255306/1

To view, visit change 1255306. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newchange
Gerrit-Project: ffilz/nfs-ganesha
Gerrit-Branch: next
Gerrit-Change-Id: I1505ee1099a38fdb040030d7d0cc55fdb597990f
Gerrit-Change-Number: 1255306
Gerrit-PatchSet: 1
Gerrit-Owner: Kirill Gibelgaus <ksgibelgaus@edu.hse.ru>