]>
git.wh0rd.org - ICEs.git/blob - 199025/getaddrinfo.c
7 #include <netinet/in.h>
8 #include <sys/socket.h>
11 void doit(const char *name
, const char *family_name
, int family
)
13 printf("--- looking up '%s' for family %s (%i)\n", name
, family_name
, family
);
15 struct addrinfo hints
;
16 memset(&hints
, 0, sizeof(hints
));
17 hints
.ai_socktype
= SOCK_STREAM
;
18 hints
.ai_flags
= AI_NUMERICHOST
;
19 hints
.ai_family
= family
;
21 struct addrinfo
*hostaddr
= 0;
22 int res
= getaddrinfo(name
, "telnet", &hints
, &hostaddr
);
23 if (res
== EAI_NONAME
) {
24 printf("getaddrinfo(...) = EAI_NONAME, trying again with AI_CANONNAME\n");
25 hints
.ai_flags
= AI_CANONNAME
;
26 res
= getaddrinfo(name
, "telnet", &hints
, &hostaddr
);
28 if (res
== EAI_NONAME
) {
29 printf("getaddrinfo(...) = EAI_NONAME ... FAIL\n");
31 printf("getaddrinfo(...) = %i ... FAIL\n", res
);
33 printf("getaddrinfo(...) = %i\n", res
);
36 char name
[1024], service
[1024];
37 res
= getnameinfo(hostaddr
->ai_addr
, hostaddr
->ai_addrlen
,
38 name
, sizeof(name
), service
, sizeof(service
),
39 NI_NUMERICHOST
| NI_NUMERICSERV
);
40 printf("getnameinfo(...) = %i\n", res
);
41 printf("\tname = %s\n", name
);
42 printf("\tservice = %s\n", service
);
43 hostaddr
= hostaddr
->ai_next
;
47 freeaddrinfo(hostaddr
);
50 int main(int argc
, char *argv
[])
52 const char *name
= (argc
> 1 ? argv
[1] : "localhost");
54 #define doit(name, family) doit(name, #family, family)