If the user provides a source address as a hint, copy
the address to rdma_addrinfo ai_src_addr.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
+#include <unistd.h>
#include "cma.h"
#include <rdma/rdma_cma.h>
if (ret)
goto err2;
+ if (!rai->ai_src_len && hints && hints->ai_src_len) {
+ rai->ai_src_addr = calloc(1, hints->ai_src_len);
+ if (!rai->ai_src_addr) {
+ ret = ERR(ENOMEM);
+ goto err2;
+ }
+ memcpy(rai->ai_src_addr, hints->ai_src_addr,
+ hints->ai_src_len);
+ rai->ai_src_len = hints->ai_src_len;
+ }
+
freeaddrinfo(ai);
*res = rai;
return 0;