]> git.openfabrics.org - ~ardavis/dapl.git/commitdiff
r6737: getaddrinfo() fix for debug builds and some additional debug messages for
authorArlin Davis <ardavis@ichips.intel.com>
Fri, 28 Apr 2006 13:48:15 +0000 (13:48 +0000)
committerJames Lentini <jlentini@netapp.com>
Fri, 28 Apr 2006 13:48:15 +0000 (13:48 +0000)
connect errors and rejects.

Signed-off-by: Arlin Davis <ardavis@ichips.intel.com>
Signed-off-by: James Lentini <jlentini@netapp.com>
dapl/openib_cma/dapl_ib_cm.c
dapl/openib_cma/dapl_ib_util.c

index c1630b1ed58dd2822240274cf1a5463d47f822c6..ae90f6ed227c817774868aaafcf6e9a52330646f 100644 (file)
@@ -274,11 +274,21 @@ static void dapli_cm_active_cb(struct dapl_cm_id *conn,
        switch (event->event) {
        case RDMA_CM_EVENT_UNREACHABLE:
        case RDMA_CM_EVENT_CONNECT_ERROR:
+               dapl_dbg_log(
+                       DAPL_DBG_TYPE_WARN,
+                       " dapli_cm_active_handler: CONN_ERR "
+                       " event=0x%x status=%d\n",      
+                       event->event, event->status);
+
                dapl_evd_connection_callback(conn,
                                             IB_CME_DESTINATION_UNREACHABLE,
                                             NULL, conn->ep);
                break;
        case RDMA_CM_EVENT_REJECTED:
+               dapl_dbg_log(
+                       DAPL_DBG_TYPE_WARN,
+                       " dapli_cm_active_handler: REJECTED reason=%d\n",       
+                       event->status);
                dapl_evd_connection_callback(conn, IB_CME_DESTINATION_REJECT,
                                             NULL, conn->ep);
                break;
@@ -320,6 +330,9 @@ static void dapli_cm_passive_cb(struct dapl_cm_id *conn,
                               struct rdma_cm_event *event)
 {
        struct dapl_cm_id *new_conn;
+#ifdef DAPL_DBG
+       struct rdma_addr *ipaddr = &conn->cm_id->route.addr;
+#endif
 
        dapl_dbg_log(DAPL_DBG_TYPE_CM, 
                     " passive_cb: conn %p id %d event %d\n",
@@ -343,13 +356,48 @@ static void dapli_cm_passive_cb(struct dapl_cm_id *conn,
                                          event->private_data, new_conn->sp);
                break;
        case RDMA_CM_EVENT_UNREACHABLE:
+               dapls_cr_callback(conn, IB_CME_DESTINATION_UNREACHABLE,
+                                NULL, conn->sp);
+
        case RDMA_CM_EVENT_CONNECT_ERROR:
+
+               dapl_dbg_log(
+                       DAPL_DBG_TYPE_WARN, 
+                       " dapli_cm_passive: CONN_ERR "
+                       " event=0x%x status=%d",
+                       " on SRC 0x%x,0x%x DST 0x%x,0x%x\n",
+                       event->event, event->status,
+                       ntohl(((struct sockaddr_in *)
+                               &ipaddr->src_addr)->sin_addr.s_addr),
+                       ntohs(((struct sockaddr_in *)
+                               &ipaddr->src_addr)->sin_port),
+                       ntohl(((struct sockaddr_in *)
+                               &ipaddr->dst_addr)->sin_addr.s_addr),
+                       ntohs(((struct sockaddr_in *)
+                               &ipaddr->dst_addr)->sin_port));
+
                dapls_cr_callback(conn, IB_CME_DESTINATION_UNREACHABLE,
                                 NULL, conn->sp);
                break;
+
        case RDMA_CM_EVENT_REJECTED:
-               dapls_cr_callback(conn, IB_CME_DESTINATION_REJECT, NULL,
-                                conn->sp);
+
+               dapl_dbg_log(
+                       DAPL_DBG_TYPE_WARN, 
+                       " dapli_cm_passive: REJECTED reason=%d"
+                       " on SRC 0x%x,0x%x DST 0x%x,0x%x\n", 
+                       event->status,
+                       ntohl(((struct sockaddr_in *)
+                               &ipaddr->src_addr)->sin_addr.s_addr),
+                       ntohs(((struct sockaddr_in *)
+                               &ipaddr->src_addr)->sin_port),
+                       ntohl(((struct sockaddr_in *)
+                               &ipaddr->dst_addr)->sin_addr.s_addr),
+                       ntohs(((struct sockaddr_in *)
+                               &ipaddr->dst_addr)->sin_port));
+
+               dapls_cr_callback(conn, IB_CME_DESTINATION_REJECT, 
+                                 NULL, conn->sp);
                break;
        case RDMA_CM_EVENT_ESTABLISHED:
                
@@ -556,6 +604,7 @@ dapls_ib_setup_conn_listener(IN DAPL_IA *ia_ptr,
 {
        DAT_RETURN dat_status = DAT_SUCCESS;
        ib_cm_srvc_handle_t conn;
+       DAT_SOCK_ADDR6  addr;   /* local binding address */
 
        /* Allocate CM and initialize lock */
        if ((conn = dapl_os_alloc(sizeof(*conn))) == NULL) 
@@ -571,11 +620,12 @@ dapls_ib_setup_conn_listener(IN DAPL_IA *ia_ptr,
        }
        
        /* open identifies the local device; per DAT specification */
-       ((struct sockaddr_in *)&ia_ptr->hca_ptr->hca_address)->sin_port = 
-                                               htons(MAKE_PORT(ServiceID));
+       /* Get family and address then set port to consumer's ServiceID */
+       dapl_os_memcpy(&addr, &ia_ptr->hca_ptr->hca_address, sizeof(addr));
+       ((struct sockaddr_in *)&addr)->sin_port = htons(MAKE_PORT(ServiceID));
+
 
-       if (rdma_bind_addr(conn->cm_id,
-                          (struct sockaddr *)&ia_ptr->hca_ptr->hca_address)) {
+       if (rdma_bind_addr(conn->cm_id,(struct sockaddr *)&addr)) {
                if (errno == EBUSY)
                        dat_status = DAT_CONN_QUAL_IN_USE;
                else
index 7254e85d4a2f4f1059464fb79f0f654b2c56bb81..56e896a041d0814184e50d88a2cf5cf808303604 100644 (file)
@@ -121,11 +121,12 @@ static int getipaddr(char *name, char *addr, int len)
        if (getaddrinfo(name, NULL, NULL, &res)) {
                /* retry using network device name */
                ret = getipaddr_netdev(name,addr,len);
-               if (ret)
+               if (ret) {
                        dapl_dbg_log(DAPL_DBG_TYPE_WARN, 
                             " getipaddr: invalid name, addr, or netdev(%s)\n",
                             name);
-               return ret;
+                       return ret;
+               }
        } else {
                if (len >= res->ai_addrlen)
                        memcpy(addr, res->ai_addr, res->ai_addrlen);