Fix static port usage, ensure that both ipv4 and ipv6 are given if ipv6 was enabled
This commit was SVN r27682.
Этот коммит содержится в:
родитель
885fc8432d
Коммит
82f1ba0ea8
@ -168,6 +168,7 @@ static int mca_oob_tcp_component_register(void)
|
|||||||
{
|
{
|
||||||
int tmp;
|
int tmp;
|
||||||
char *listen_type, *str = NULL;
|
char *listen_type, *str = NULL;
|
||||||
|
bool ip4_ports_given = false;
|
||||||
|
|
||||||
mca_base_param_reg_int(&mca_oob_tcp_component.super.oob_base,
|
mca_base_param_reg_int(&mca_oob_tcp_component.super.oob_base,
|
||||||
"verbose",
|
"verbose",
|
||||||
@ -301,6 +302,7 @@ static int mca_oob_tcp_component_register(void)
|
|||||||
&str);
|
&str);
|
||||||
/* if ports were provided, parse the provided range */
|
/* if ports were provided, parse the provided range */
|
||||||
if (NULL != str) {
|
if (NULL != str) {
|
||||||
|
ip4_ports_given = true;
|
||||||
orte_static_ports = true;
|
orte_static_ports = true;
|
||||||
orte_util_parse_range_options(str, &mca_oob_tcp_component.tcp4_static_ports);
|
orte_util_parse_range_options(str, &mca_oob_tcp_component.tcp4_static_ports);
|
||||||
if (0 == strcmp(mca_oob_tcp_component.tcp4_static_ports[0], "-1")) {
|
if (0 == strcmp(mca_oob_tcp_component.tcp4_static_ports[0], "-1")) {
|
||||||
@ -352,11 +354,19 @@ static int mca_oob_tcp_component_register(void)
|
|||||||
orte_static_ports = true;
|
orte_static_ports = true;
|
||||||
orte_util_parse_range_options(str, &mca_oob_tcp_component.tcp6_static_ports);
|
orte_util_parse_range_options(str, &mca_oob_tcp_component.tcp6_static_ports);
|
||||||
if (0 == strcmp(mca_oob_tcp_component.tcp6_static_ports[0], "-1")) {
|
if (0 == strcmp(mca_oob_tcp_component.tcp6_static_ports[0], "-1")) {
|
||||||
|
if (ip4_ports_given) {
|
||||||
|
opal_output(0, "OOB:TCP:Error: IP4 static ports given, but IPv6 is enabled and an incorrect static port range was provided for it");
|
||||||
|
return ORTE_ERR_FATAL;
|
||||||
|
}
|
||||||
opal_argv_free(mca_oob_tcp_component.tcp6_static_ports);
|
opal_argv_free(mca_oob_tcp_component.tcp6_static_ports);
|
||||||
mca_oob_tcp_component.tcp6_static_ports = NULL;
|
mca_oob_tcp_component.tcp6_static_ports = NULL;
|
||||||
orte_static_ports = false;
|
orte_static_ports = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (ip4_ports_given) {
|
||||||
|
opal_output(0, "OOB:TCP:Error: IP4 static ports given, but IPv6 is enabled and no static ports provided for it");
|
||||||
|
return ORTE_ERR_FATAL;
|
||||||
|
}
|
||||||
orte_static_ports = false;
|
orte_static_ports = false;
|
||||||
mca_oob_tcp_component.tcp6_static_ports = NULL;
|
mca_oob_tcp_component.tcp6_static_ports = NULL;
|
||||||
}
|
}
|
||||||
@ -659,7 +669,8 @@ mca_oob_tcp_create_listen(int *target_sd, unsigned short *target_port, uint16_t
|
|||||||
ptr++;
|
ptr++;
|
||||||
opal_argv_append_nosize(&ports, ptr);
|
opal_argv_append_nosize(&ports, ptr);
|
||||||
free(portptr);
|
free(portptr);
|
||||||
} else if (ORTE_PROC_IS_HNP || ORTE_PROC_IS_DAEMON) {
|
} else if (ORTE_PROC_IS_HNP || ORTE_PROC_IS_DAEMON ||
|
||||||
|
ORTE_PROC_IS_CM || ORTE_PROC_IS_CMSLAVE) {
|
||||||
if (NULL != mca_oob_tcp_component.tcp4_static_ports) {
|
if (NULL != mca_oob_tcp_component.tcp4_static_ports) {
|
||||||
/* if static ports were provided, the daemon takes the
|
/* if static ports were provided, the daemon takes the
|
||||||
* first entry in the list
|
* first entry in the list
|
||||||
@ -722,7 +733,8 @@ mca_oob_tcp_create_listen(int *target_sd, unsigned short *target_port, uint16_t
|
|||||||
|
|
||||||
#if OPAL_WANT_IPV6
|
#if OPAL_WANT_IPV6
|
||||||
if (AF_INET6 == af_family) {
|
if (AF_INET6 == af_family) {
|
||||||
if (ORTE_PROC_IS_HNP || ORTE_PROC_IS_DAEMON) {
|
if (ORTE_PROC_IS_HNP || ORTE_PROC_IS_DAEMON ||
|
||||||
|
ORTE_PROC_IS_CM || ORTE_PROC_IS_CMSLAVE) {
|
||||||
if (NULL != mca_oob_tcp_component.tcp6_static_ports) {
|
if (NULL != mca_oob_tcp_component.tcp6_static_ports) {
|
||||||
/* if static ports were provided, the daemon takes the
|
/* if static ports were provided, the daemon takes the
|
||||||
* first entry in the list
|
* first entry in the list
|
||||||
@ -1671,18 +1683,15 @@ int mca_oob_tcp_resolve(mca_oob_tcp_peer_t* peer)
|
|||||||
}
|
}
|
||||||
inaddr = ((struct sockaddr_in*)(&addr))->sin_addr;
|
inaddr = ((struct sockaddr_in*)(&addr))->sin_addr;
|
||||||
haddr = inet_ntoa(inaddr);
|
haddr = inet_ntoa(inaddr);
|
||||||
goto proceed;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
haddr = inet_ntoa(*(struct in_addr*)h->h_addr_list[0]);
|
||||||
}
|
}
|
||||||
opal_output(0, "%s COULD NOT COMPUTE CONTACT INFO FOR PROC %s on NODE %s",
|
|
||||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
|
||||||
ORTE_NAME_PRINT(&peer->peer_name), host);
|
|
||||||
goto unlock;
|
|
||||||
} else {
|
} else {
|
||||||
haddr = inet_ntoa(*(struct in_addr*)h->h_addr_list[0]);
|
goto unlock;
|
||||||
}
|
}
|
||||||
proceed:
|
|
||||||
/* we can't know which af_family we are using, so for now, let's
|
/* we can't know which af_family we are using, so for now, let's
|
||||||
* just look to see which static port family was provided
|
* just look to see which static port family was provided
|
||||||
*/
|
*/
|
||||||
@ -1699,7 +1708,6 @@ int mca_oob_tcp_resolve(mca_oob_tcp_peer_t* peer)
|
|||||||
/* this isn't an error - it just means we don't know
|
/* this isn't an error - it just means we don't know
|
||||||
* how to compute a contact info for this proc
|
* how to compute a contact info for this proc
|
||||||
*/
|
*/
|
||||||
opal_output(0, "COULD NOT GET NODE RANK");
|
|
||||||
rc = ORTE_ERR_ADDRESSEE_UNKNOWN;
|
rc = ORTE_ERR_ADDRESSEE_UNKNOWN;
|
||||||
goto unlock;
|
goto unlock;
|
||||||
}
|
}
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user