proxychains-ng/tests/test_getaddrinfo.c

49 lines
1.1 KiB
C
Raw Normal View History

2012-07-15 23:21:22 +00:00
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
2018-12-02 13:27:22 +00:00
2012-07-15 23:21:22 +00:00
#ifndef NI_MAXHOST
#define NI_MAXHOST 1025
#endif
2018-12-02 13:27:22 +00:00
static int doit(const char* host, const char* service) {
2012-07-15 23:21:22 +00:00
struct addrinfo *result;
struct addrinfo *res;
int error;
2018-12-02 13:27:22 +00:00
2012-07-15 23:21:22 +00:00
/* resolve the domain name into a list of addresses */
error = getaddrinfo(host, service, NULL, &result);
2012-07-15 23:21:22 +00:00
if (error != 0)
2018-12-02 13:27:22 +00:00
{
2012-07-15 23:21:22 +00:00
fprintf(stderr, "error in getaddrinfo: %s\n", gai_strerror(error));
return EXIT_FAILURE;
2018-12-02 13:27:22 +00:00
}
2012-07-15 23:21:22 +00:00
/* loop over all returned results and do inverse lookup */
for (res = result; res != NULL; res = res->ai_next)
2018-12-02 13:27:22 +00:00
{
2012-07-15 23:21:22 +00:00
char hostname[NI_MAXHOST] = "";
2018-12-02 13:27:22 +00:00
error = getnameinfo(res->ai_addr, res->ai_addrlen, hostname, NI_MAXHOST, NULL, 0, 0);
2012-07-15 23:21:22 +00:00
if (error != 0)
{
fprintf(stderr, "error in getnameinfo: %s\n", gai_strerror(error));
continue;
}
if (*hostname != '\0')
printf("hostname: %s\n", hostname);
2018-12-02 13:27:22 +00:00
}
2012-07-15 23:21:22 +00:00
freeaddrinfo(result);
return EXIT_SUCCESS;
}
int main(void) {
int ret;
ret = doit("www.example.com", NULL);
ret = doit("www.example.com", "80");
return ret;
}