]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
librdmacm: set src_addr in rdma_getaddrinfo
authorSean Hefty <sean.hefty@intel.com>
Thu, 6 May 2010 22:48:03 +0000 (15:48 -0700)
committerSean Hefty <sean.hefty@intel.com>
Thu, 6 May 2010 22:48:03 +0000 (15:48 -0700)
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>
src/addrinfo.c

index 15ae071f35de6887b819e18f3de2cd1d402405e0..f5f86a093cccfd81ecf58bd5ce2bdeda8ff69e3c 100644 (file)
@@ -39,6 +39,7 @@
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netdb.h>
+#include <unistd.h>
 
 #include "cma.h"
 #include <rdma/rdma_cma.h>
@@ -159,6 +160,17 @@ int rdma_getaddrinfo(char *node, char *service,
        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;