]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
librdmacm: Renumber RDMA_PS_IB to match kernel patch
authorSean Hefty <sean.hefty@intel.com>
Mon, 6 Jun 2011 23:24:32 +0000 (16:24 -0700)
committerSean Hefty <sean.hefty@intel.com>
Tue, 23 Aug 2011 18:13:53 +0000 (11:13 -0700)
RDMA_PS_IB is only a placeholder and not usable yet.  Update
the assigned value to match that specified for the kernel.

Update rdma_getaddrinfo to use the port space when formatting
responses.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
include/rdma/rdma_cma.h
src/addrinfo.c

index b9fd308cfd53b7c7a5e0eee18c9ecf20e8d06371..fa4d18946b97494f6c30fc3a9d9c2176843b23bf 100755 (executable)
@@ -68,9 +68,9 @@ enum rdma_cm_event_type {
 
 enum rdma_port_space {
        RDMA_PS_IPOIB = 0x0002,
-       RDMA_PS_IB    = 0x0003,
        RDMA_PS_TCP   = 0x0106,
        RDMA_PS_UDP   = 0x0111,
+       RDMA_PS_IB    = 0x013F,
 };
 
 #define RDMA_IB_IP_PS_MASK   0xFFFFFFFFFFFF0000ULL
index 021f7c4e4e137638e5b2a59aa7a06c6ef9abcbb4..428baf6ac3fa2b62440e659614994d7d4e6a3bc1 100755 (executable)
@@ -69,6 +69,12 @@ static void ucma_convert_to_ai(struct addrinfo *ai, struct rdma_addrinfo *rai)
        case RDMA_PS_UDP:
                ai->ai_protocol = IPPROTO_UDP;
                break;
+       case RDMA_PS_IB:
+               if (ai->ai_socktype == SOCK_STREAM)
+                       ai->ai_protocol = IPPROTO_TCP;
+               else if (ai->ai_socktype == SOCK_DGRAM)
+                       ai->ai_protocol = IPPROTO_UDP;
+               break;
        }
 
        if (rai->ai_flags & RAI_PASSIVE) {
@@ -82,7 +88,8 @@ static void ucma_convert_to_ai(struct addrinfo *ai, struct rdma_addrinfo *rai)
        ai->ai_next = NULL;
 }
 
-static int ucma_convert_to_rai(struct rdma_addrinfo *rai, struct addrinfo *ai)
+static int ucma_convert_to_rai(struct rdma_addrinfo *rai,
+                              struct rdma_addrinfo *hints, struct addrinfo *ai)
 {
        struct sockaddr *addr;
        char *canonname;
@@ -98,13 +105,17 @@ static int ucma_convert_to_rai(struct rdma_addrinfo *rai, struct addrinfo *ai)
                break;
        }
 
-       switch (ai->ai_protocol) {
-       case IPPROTO_TCP:
-               rai->ai_port_space = RDMA_PS_TCP;
-               break;
-       case IPPROTO_UDP:
-               rai->ai_port_space = RDMA_PS_UDP;
-               break;
+       if (hints && hints->ai_port_space) {
+               rai->ai_port_space = hints->ai_port_space;
+       } else {
+               switch (ai->ai_protocol) {
+               case IPPROTO_TCP:
+                       rai->ai_port_space = RDMA_PS_TCP;
+                       break;
+               case IPPROTO_UDP:
+                       rai->ai_port_space = RDMA_PS_UDP;
+                       break;
+               }
        }
 
        addr = malloc(ai->ai_addrlen);
@@ -149,7 +160,7 @@ static int ucma_convert_gai(char *node, char *service,
        if (ret)
                return ret;
 
-       ret = ucma_convert_to_rai(rai, ai);
+       ret = ucma_convert_to_rai(rai, hints, ai);
        freeaddrinfo(ai);
        return ret;
 }