The previous code was correct. Each IP address correspond to a specific endpoint, and therefore to a specific BTL. This enable us to have multiple TCP BTL at the same time, and allow the OB1 PML to stripe the data over all of them.

Unfortunately, your commit disable the multi-rail over TCP. Please undo it.

  Thanks,
    george.

On Jan 29, 2008, at 10:55 AM, a...@osl.iu.edu wrote:

Author: adi
Date: 2008-01-29 10:55:56 EST (Tue, 29 Jan 2008)
New Revision: 17307
URL: https://svn.open-mpi.org/trac/ompi/changeset/17307

Log:
accept incoming connections from hosts with multiple addresses.

We loop over all peer addresses and accept when one of them matches.
Note that this might break functionality: mca_btl_tcp_proc_insert now
always inserts the same endpoint. (is the lack of endpoints the problem?
should there be one for every remote address?)

Re #1206


Text files modified:
  trunk/ompi/mca/btl/tcp/btl_tcp_proc.c |    12 ++++++------
  1 files changed, 6 insertions(+), 6 deletions(-)

Modified: trunk/ompi/mca/btl/tcp/btl_tcp_proc.c
= = = = = = = = ======================================================================
--- trunk/ompi/mca/btl/tcp/btl_tcp_proc.c       (original)
+++ trunk/ompi/mca/btl/tcp/btl_tcp_proc.c 2008-01-29 10:55:56 EST (Tue, 29 Jan 2008)
@@ -327,16 +327,16 @@
{
    size_t i;
    OPAL_THREAD_LOCK(&btl_proc->proc_lock);
-    for( i = 0; i < btl_proc->proc_endpoint_count; i++ ) {
- mca_btl_base_endpoint_t* btl_endpoint = btl_proc- >proc_endpoints[i];
+    for( i = 0; i < btl_proc->proc_addr_count; i++ ) {
+ mca_btl_tcp_addr_t* exported_address = btl_proc- >proc_addrs + i; /* Check all conditions before going to try to accept the connection. */ - if( btl_endpoint->endpoint_addr->addr_family != addr- >sa_family ) {
+        if( exported_address->addr_family != addr->sa_family ) {
            continue;
        }

        switch (addr->sa_family) {
        case AF_INET:
-            if( memcmp( &btl_endpoint->endpoint_addr->addr_inet,
+            if( memcmp( &exported_address->addr_inet,
                        &(((struct sockaddr_in*)addr)->sin_addr),
                        sizeof(struct in_addr) ) ) {
                continue;
@@ -344,7 +344,7 @@
            break;
#if OPAL_WANT_IPV6
        case AF_INET6:
-            if( memcmp( &btl_endpoint->endpoint_addr->addr_inet,
+            if( memcmp( &exported_address->addr_inet,
                        &(((struct sockaddr_in6*)addr)->sin6_addr),
                        sizeof(struct in6_addr) ) ) {
                continue;
@@ -355,7 +355,7 @@
            ;
        }

-        if(mca_btl_tcp_endpoint_accept(btl_endpoint, addr, sd)) {
+ if(mca_btl_tcp_endpoint_accept(btl_proc->proc_endpoints[0], addr, sd)) {
            OPAL_THREAD_UNLOCK(&btl_proc->proc_lock);
            return true;
        }
_______________________________________________
svn mailing list
s...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/svn

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to