Add IPPROTO_TCP to create socket. Specify device IP address
when binding instead of INADDR_ANY and remove setsocketopt
REUSEADDR on the listen socket to avoid any issues with
portability. Don't want duplicate port bindings.

Signed-off-by: Arlin Davis <[email protected]>
---
 dapl/openib_scm/cm.c |   10 +++-------
 1 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/dapl/openib_scm/cm.c b/dapl/openib_scm/cm.c
index 87f5446..dae1781 100644
--- a/dapl/openib_scm/cm.c
+++ b/dapl/openib_scm/cm.c
@@ -531,7 +531,7 @@ dapli_socket_connect(DAPL_EP * ep_ptr,
 
        /* create, connect, sockopt, and exchange QP information */
        if ((cm_ptr->socket =
-            socket(AF_INET, SOCK_STREAM, 0)) == DAPL_INVALID_SOCKET) {
+            socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == DAPL_INVALID_SOCKET) 
{
                dapl_os_free(cm_ptr, sizeof(*cm_ptr));
                return DAT_INSUFFICIENT_RESOURCES;
        }
@@ -815,7 +815,6 @@ dapli_socket_listen(DAPL_IA * ia_ptr, DAT_CONN_QUAL 
serviceID, DAPL_SP * sp_ptr)
 {
        struct sockaddr_in addr;
        ib_cm_srvc_handle_t cm_ptr = NULL;
-       int opt = 1;
        DAT_RETURN dat_status = DAT_SUCCESS;
 
        dapl_dbg_log(DAPL_DBG_TYPE_EP,
@@ -831,19 +830,16 @@ dapli_socket_listen(DAPL_IA * ia_ptr, DAT_CONN_QUAL 
serviceID, DAPL_SP * sp_ptr)
 
        /* bind, listen, set sockopt, accept, exchange data */
        if ((cm_ptr->socket =
-            socket(AF_INET, SOCK_STREAM, 0)) == DAPL_INVALID_SOCKET) {
+            socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == DAPL_INVALID_SOCKET) 
{
                dapl_log(DAPL_DBG_TYPE_ERR, " ERR: listen socket create: %s\n",
                         strerror(errno));
                dat_status = DAT_INSUFFICIENT_RESOURCES;
                goto bail;
        }
 
-       setsockopt(cm_ptr->socket, SOL_SOCKET, SO_REUSEADDR,
-                  (char *)&opt, sizeof(opt));
-
        addr.sin_port = htons(serviceID);
        addr.sin_family = AF_INET;
-       addr.sin_addr.s_addr = INADDR_ANY;
+       addr.sin_addr = ((struct sockaddr_in *) 
&ia_ptr->hca_ptr->hca_address)->sin_addr;
 
        if ((bind(cm_ptr->socket, (struct sockaddr *)&addr, sizeof(addr)) < 0)
            || (listen(cm_ptr->socket, 128) < 0)) {
-- 
1.5.2.5

_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to