static void fi_tostr_info(char *buf, const struct fi_info *info) { strcatf(buf, "fi_info:\n"); strcatf(buf, "%scaps: [ ", TAB); fi_tostr_caps(buf, info->caps); strcatf(buf, " ]\n"); strcatf(buf, "%smode: [ ", TAB); fi_tostr_mode(buf, info->mode); strcatf(buf, " ]\n"); strcatf(buf, "%sep_type: ", TAB); fi_tostr_ep_type(buf, info->ep_type); strcatf(buf, "\n"); strcatf(buf, "%sfi_addr_format: ", TAB); fi_tostr_addr_format(buf, info->addr_format); strcatf(buf, "\n"); strcatf(buf, "%ssrc_addrlen: %zd\n", TAB, info->src_addrlen); strcatf(buf, "%sdest_addrlen: %zd\n", TAB, info->dest_addrlen); strcatf(buf, "%ssrc_addr: ", TAB); fi_tostr_addr(buf, info->addr_format, info->src_addr); strcatf(buf, "\n"); strcatf(buf, "%sdest_addr: ", TAB); fi_tostr_addr(buf, info->addr_format, info->dest_addr); strcatf(buf, "\n"); strcatf(buf, "%sconnreq: %s\n", TAB, info->connreq); fi_tostr_tx_attr(buf, info->tx_attr, TAB); fi_tostr_rx_attr(buf, info->rx_attr, TAB); fi_tostr_ep_attr(buf, info->ep_attr, TAB); fi_tostr_domain_attr(buf, info->domain_attr, TAB); fi_tostr_fabric_attr(buf, info->fabric_attr, TAB); }
static void fi_tostr_addr(char *buf, uint32_t addr_format, void *addr) { char *p; p = buf + strlen(buf); if (addr == NULL) { strcatf(p, "(null)"); return; } switch (addr_format) { case FI_SOCKADDR: /* translate and recurse... */ switch (((struct sockaddr *)addr)->sa_family) { case AF_INET: fi_tostr_addr(p, FI_SOCKADDR_IN, addr); break; case AF_INET6: fi_tostr_addr(p, FI_SOCKADDR_IN6, addr); break; default: fi_tostr_addr(p, FI_FORMAT_UNSPEC, addr); break; } break; case FI_SOCKADDR_IN: inet_ntop(AF_INET, &((struct sockaddr_in *)addr)->sin_addr, p, 64); break; case FI_SOCKADDR_IN6: inet_ntop(AF_INET6, &((struct sockaddr_in6 *)addr)->sin6_addr, p, 64); break; case FI_ADDR_GNI: /*TODO: eventually something better */ sprintf(p, "0x%" PRIx64,*(uint64_t *)addr); break; default: sprintf(p, "%p", addr); break; } }