Added a debug program that performs conversions from DNS names to realms.
[mod_auth_kerb.cvs/.git] / src / krbhostname.c
1 #include <stdio.h>\r
2 #include <unistd.h>\r
3 #include <string.h>\r
4 #include <sys/socket.h>\r
5 #include <netdb.h>\r
6 \r
7 #ifndef MAXHOSTNAMELEN\r
8 #define MAXHOSTNAMELEN  64\r
9 #endif\r
10 \r
11 int main(int argc, char **argv)\r
12 {\r
13     struct addrinfo *ai, hints;\r
14     char *hostname;\r
15     char localname[MAXHOSTNAMELEN];\r
16     char hnamebuf[NI_MAXHOST];\r
17 \r
18     if(gethostname(localname, MAXHOSTNAMELEN)) {\r
19         return 1;\r
20     }\r
21     printf("gethostname() returns \"%s\"\n", localname);\r
22 \r
23     if(argc == 2) {\r
24         hostname = argv[1];\r
25     } else {\r
26         hostname = localname;\r
27     }\r
28     printf("Using \"%s\" as service host name\n", hostname);\r
29 \r
30     memset(&hints, 0, sizeof(hints));\r
31     hints.ai_family = AF_INET;\r
32     if(getaddrinfo(hostname, NULL, &hints, &ai)) {\r
33         printf("getaddrinfo() failed\n");\r
34         return 1;\r
35     }\r
36 \r
37     if(ai->ai_canonname) {\r
38         hostname = strdup(ai->ai_canonname);\r
39         printf("Canonical hostname from getaddrinfo() is \"%s\"\n", hostname);\r
40     }\r
41     \r
42     if(getnameinfo(ai->ai_addr, ai->ai_addrlen, hnamebuf, sizeof(hnamebuf),\r
43         NULL, 0, NI_NAMEREQD)) {\r
44         printf("getnameinfo() failed\n");\r
45         return 1;\r
46     }\r
47 \r
48     printf("Hostname from getnameinfo() is \"%s\"\n", hnamebuf);\r
49 \r
50     freeaddrinfo(ai);\r
51     return 0;\r
52 }\r