diff --git a/opal/mca/if/base/base.h b/opal/mca/if/base/base.h index 644e56eddb..84e413b751 100644 --- a/opal/mca/if/base/base.h +++ b/opal/mca/if/base/base.h @@ -27,6 +27,7 @@ OPAL_DECLSPEC int opal_if_base_close(void); * Globals */ OPAL_DECLSPEC extern opal_list_t opal_if_components; +OPAL_DECLSPEC extern int opal_if_base_output; END_C_DECLS diff --git a/opal/mca/if/base/if_base_components.c b/opal/mca/if/base/if_base_components.c index e26a4d932f..221a464c25 100644 --- a/opal/mca/if/base/if_base_components.c +++ b/opal/mca/if/base/if_base_components.c @@ -16,7 +16,7 @@ #include "opal/mca/if/base/base.h" #include "opal/mca/if/base/static-components.h" -int opal_if_base_output; +int opal_if_base_output=-1; opal_list_t opal_if_components; static bool already_done = false; @@ -41,6 +41,14 @@ int opal_if_base_open(void) /* setup the global list */ OBJ_CONSTRUCT(&opal_if_list, opal_list_t); + mca_base_param_reg_int_name("if", "base_verbose", + "Provide verbose output if greater than 0", + false, false, -1, &ret); + if (0 < ret) { + opal_if_base_output = opal_output_open(NULL); + opal_output_set_verbosity(opal_if_base_output, ret); + } + mca_base_param_reg_int_name("opal", "if_do_not_resolve", "If nonzero, do not attempt to resolve interfaces", false, false, (int)false, &ret); @@ -62,6 +70,10 @@ int opal_if_base_open(void) cli->cli_component = mca_if_base_static_components[i]; opal_list_append(&opal_if_components, &cli->super); + opal_output_verbose(5, opal_if_base_output, + "if:base: opening component %s", + component->component.mca_component_name); + if (NULL != component->component.mca_open_component) { ret = component->component.mca_open_component(); if (OPAL_SUCCESS != ret) continue; diff --git a/opal/mca/if/bsdx_ipv6/if_bsdx_ipv6.c b/opal/mca/if/bsdx_ipv6/if_bsdx_ipv6.c index 3c537da315..3d4b88d3d1 100644 --- a/opal/mca/if/bsdx_ipv6/if_bsdx_ipv6.c +++ b/opal/mca/if/bsdx_ipv6/if_bsdx_ipv6.c @@ -62,6 +62,7 @@ #endif #include "opal/mca/if/if.h" +#include "opal/mca/if/base/base.h" static int if_bsdx_ipv6_open(void); @@ -104,6 +105,9 @@ static int if_bsdx_ipv6_open(void) struct ifaddrs *cur_ifaddrs; struct sockaddr_in6* sin_addr; + opal_output_verbose(1, opal_if_base_output, + "searching for IPv6 interfaces"); + /* * the manpage claims that getifaddrs() allocates the memory, * and freeifaddrs() is later used to release the allocated memory. @@ -126,17 +130,16 @@ static int if_bsdx_ipv6_open(void) /* skip non-ipv6 interface addresses */ if (AF_INET6 != cur_ifaddrs->ifa_addr->sa_family) { -#if 0 - printf("skipping non-ipv6 interface %s.\n", cur_ifaddrs->ifa_name); -#endif + opal_output_verbose(1, opal_if_base_output, + "skipping non-ipv6 interface %s[%d].\n", + cur_ifaddrs->ifa_name, (int)cur_ifaddrs->ifa_addr->sa_family); continue; } /* skip interface if it is down (IFF_UP not set) */ if (0 == (cur_ifaddrs->ifa_flags & IFF_UP)) { -#if 0 - printf("skipping non-up interface %s.\n", cur_ifaddrs->ifa_name); -#endif + opal_output_verbose(1, opal_if_base_output, + "skipping non-up interface %s.\n", cur_ifaddrs->ifa_name); continue; } @@ -148,9 +151,8 @@ static int if_bsdx_ipv6_open(void) /* or if it is a point-to-point interface */ /* TODO: do we really skip p2p? */ if (0!= (cur_ifaddrs->ifa_flags & IFF_POINTOPOINT)) { -#if 0 - printf("skipping loopback interface %s.\n", cur_ifaddrs->ifa_name); -#endif + opal_output_verbose(1, opal_if_base_output, + "skipping loopback interface %s.\n", cur_ifaddrs->ifa_name); continue; } @@ -175,21 +177,20 @@ static int if_bsdx_ipv6_open(void) */ if ((IN6_IS_ADDR_LINKLOCAL (&sin_addr->sin6_addr))) { -#if 0 - printf("skipping link-local ipv6 address on interface \ - %s with scope %d.\n", - cur_ifaddrs->ifa_name, sin_addr->sin6_scope_id); -#endif + opal_output_verbose(1, opal_if_base_output, + "skipping link-local ipv6 address on interface " + "%s with scope %d.\n", + cur_ifaddrs->ifa_name, sin_addr->sin6_scope_id); continue; } -#if 0 - char *addr_name = (char *) malloc(48*sizeof(char)); - inet_ntop(AF_INET6, &sin_addr->sin6_addr, addr_name, 48*sizeof(char)); - opal_output(0, "ipv6 capable interface %s discovered, address %s.\n", - cur_ifaddrs->ifa_name, addr_name); - free(addr_name); -#endif + if (0 < opal_output_get_verbosity(opal_if_base_output)) { + char *addr_name = (char *) malloc(48*sizeof(char)); + inet_ntop(AF_INET6, &sin_addr->sin6_addr, addr_name, 48*sizeof(char)); + opal_output(0, "ipv6 capable interface %s discovered, address %s.\n", + cur_ifaddrs->ifa_name, addr_name); + free(addr_name); + } /* fill values into the opal_if_t */ memcpy(&a6, &(sin_addr->sin6_addr), sizeof(struct in6_addr));