]> git.openfabrics.org - ~ardavis/dapl.git/commitdiff
cma: setup_listener Cannot assign requested address
authorArlin Davis <arlin.r.davis@intel.com>
Wed, 18 Nov 2009 17:52:40 +0000 (09:52 -0800)
committerArlin Davis <arlin.r.davis@intel.com>
Wed, 18 Nov 2009 17:52:40 +0000 (09:52 -0800)
Colliding with RDS port of 18634. rdma_cm can return
either EADDRINUSE or EADDRNOTAVAIL if the bind fails.
Add check for either and return proper DAT_CONN_QUAL_IN_USE.

Signed-off-by: Arlin Davis <arlin.r.davis@intel.com>
dapl/openib_cma/cm.c

index 40634b2cd39e9a19229577f2e5a07342d563c938..c52e71644defc5506175350b4daa793bf35a3ec5 100644 (file)
@@ -694,7 +694,8 @@ dapls_ib_setup_conn_listener(IN DAPL_IA * ia_ptr,
        ((struct sockaddr_in *)&addr)->sin_port = SID_TO_PORT(ServiceID);
 
        if (rdma_bind_addr(conn->cm_id, (struct sockaddr *)&addr)) {
-               if ((errno == EBUSY) || (errno == EADDRINUSE))
+               if ((errno == EBUSY) || (errno == EADDRINUSE) || 
+                   (errno == EADDRNOTAVAIL))
                        dat_status = DAT_CONN_QUAL_IN_USE;
                else
                        dat_status =
@@ -717,7 +718,8 @@ dapls_ib_setup_conn_listener(IN DAPL_IA * ia_ptr,
 
        if (rdma_listen(conn->cm_id, 0)) {      /* max cma backlog */
 
-               if ((errno == EBUSY) || (errno == EADDRINUSE))
+               if ((errno == EBUSY) || (errno == EADDRINUSE) ||
+                   (errno == EADDRNOTAVAIL))
                        dat_status = DAT_CONN_QUAL_IN_USE;
                else
                        dat_status =