const struct addrinfo * get_one_host(const char * name) { struct addrinfo * res; struct addrinfo hints; bzero(&hints, sizeof(hints)); // This is the family and protocol, since we are making DNS probes on UDP. hints.ai_family = PF_INET; hints.ai_protocol = IPPROTO_UDP; int ret = getaddrinfo(name, service, &hints, &res); LOG(1, "getaddrinfo(\"%s\", \"%s\", %p, %p) == %d", name, service, &hints, &res, ret); if (0 > ret) DIE(EX_OSERR, "getaddrinfo"); for (struct addrinfo * i = res; NULL != i; i = i->ai_next) { LOG(2, "res: { ai_flags: %d, ai_family: %d, ai_socktype: %d, ai_protocol: %d, ai_addrlen: %d, ai_addr: %p, ai_canonname: %s }", i->ai_flags, i->ai_family, i->ai_socktype, i->ai_protocol, i->ai_addrlen, i->ai_addr, i->ai_canonname); } if (NULL != res->ai_next) DIEx(EX_SOFTWARE, "more than one addr from getaddrinfo"); struct sockaddr_in * in = (struct sockaddr_in *)res->ai_addr; LOG(2, "res->ai_addr: { sin_len: %hhu, sin_family: %hhu, sin_port: %hu, sin_addr.s_addr: %hhu.%hhu.%hhu.%hhu }", in->sin_len, in->sin_family, htons(in->sin_port), ((u_char *)&(in->sin_addr.s_addr))[0], ((u_char *)&(in->sin_addr.s_addr))[1], ((u_char *)&(in->sin_addr.s_addr))[2], ((u_char *)&(in->sin_addr.s_addr))[3]); return res; }
void monitor_init_thread_support(void) { int rval; if ((rval = PAPI_thread_init(pthread_self)) != PAPI_OK) { DIEx("error: PAPI error (%d): %s.", rval, PAPI_strerror(rval)); } }