From: Arlin Davis Date: Fri, 28 Apr 2006 13:48:15 +0000 (+0000) Subject: r6737: getaddrinfo() fix for debug builds and some additional debug messages for X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=b58b5e6e36b3d1815d36b6db228f1d78eac23a2f;p=~ardavis%2Fdapl.git r6737: getaddrinfo() fix for debug builds and some additional debug messages for connect errors and rejects. Signed-off-by: Arlin Davis Signed-off-by: James Lentini --- diff --git a/dapl/openib_cma/dapl_ib_cm.c b/dapl/openib_cma/dapl_ib_cm.c index c1630b1..ae90f6e 100644 --- a/dapl/openib_cma/dapl_ib_cm.c +++ b/dapl/openib_cma/dapl_ib_cm.c @@ -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 diff --git a/dapl/openib_cma/dapl_ib_util.c b/dapl/openib_cma/dapl_ib_util.c index 7254e85..56e896a 100644 --- a/dapl/openib_cma/dapl_ib_util.c +++ b/dapl/openib_cma/dapl_ib_util.c @@ -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);