From 4e23c7c5a272dcae68fd2f48239228f3bb43fb39 Mon Sep 17 00:00:00 2001 From: Brian Barrett Date: Tue, 24 Jul 2007 17:01:39 +0000 Subject: [PATCH] Fixes for case where IPv6 support is disabled. Fixes trac:1102. This commit was SVN r15584. The following Trac tickets were found above: Ticket 1102 --> https://svn.open-mpi.org/trac/ompi/ticket/1102 --- orte/mca/oob/tcp/oob_tcp.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/orte/mca/oob/tcp/oob_tcp.c b/orte/mca/oob/tcp/oob_tcp.c index 6a0ef044f6..7b780771c6 100644 --- a/orte/mca/oob/tcp/oob_tcp.c +++ b/orte/mca/oob/tcp/oob_tcp.c @@ -512,10 +512,15 @@ static int mca_oob_tcp_create_listen(int *target_sd, uint16_t af_family) } #endif /* IPV6_V6ONLY */ #else - inaddr.sin_family = af_family; - inaddr.sin_addr.s_addr = INADDR_ANY; - inaddr.sin_port = 0; - addrlen = sizeof(struct sockaddr_in); + if (AF_INET == af_family) { + struct sockaddr_in * in = (struct sockaddr_in*) &inaddr; + in->sin_family = af_family; + in->sin_addr.s_addr = INADDR_ANY; + in->sin_port = 0; + addrlen = sizeof(struct sockaddr_in); + } else { + return ORTE_ERROR; + } #endif if (bind(*target_sd, (struct sockaddr*)&inaddr, addrlen) < 0) { @@ -1331,9 +1336,15 @@ mca_oob_tcp_parse_uri(const char* uri, struct sockaddr* inaddr) memcpy(inaddr, res->ai_addr, res->ai_addrlen); freeaddrinfo(res); #else - inaddr->sin_family = af_family; - inaddr->sin_addr.s_addr = inet_addr(host); - if (inaddr->sin_addr.s_addr == INADDR_ANY) { + if (AF_INET == af_family) { + struct sockaddr_in *in = (struct sockaddr_in*) inaddr; + in->sin_family = af_family; + in->sin_addr.s_addr = inet_addr(host); + if (in->sin_addr.s_addr == INADDR_ANY) { + ret = ORTE_ERR_BAD_PARAM; + goto cleanup; + } + } else { ret = ORTE_ERR_BAD_PARAM; goto cleanup; }