X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-getaddrinfo.c;h=9f42fff2b53acc3adfb806a3dd57e86bb256424b;hb=8a668ba3e691cb4260fd5256c141ab6e7ad24a2b;hp=adf29e4d6516d64d161026c98fa3561905b2caf6;hpb=7225c1675c9a7105efee3299a8f53782c13aeab6;p=gnulib.git diff --git a/tests/test-getaddrinfo.c b/tests/test-getaddrinfo.c index adf29e4d6..9f42fff2b 100644 --- a/tests/test-getaddrinfo.c +++ b/tests/test-getaddrinfo.c @@ -1,3 +1,23 @@ +/* Test the getaddrinfo module. + + Copyright (C) 2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* Written by Simon Josefsson. */ + #include "config.h" #include "getaddrinfo.h" #include "inet_ntop.h" @@ -15,9 +35,9 @@ int simple (char *host, char *service) memset (&hints, 0, sizeof (hints)); hints.ai_flags = AI_CANONNAME; - hints.ai_family = AF_INET; + hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; - res = getaddrinfo (host, 0, 0, &ai0); + res = getaddrinfo (host, service, 0, &ai0); printf ("res %d: %s\n", res, gai_strerror (res)); @@ -38,6 +58,23 @@ int simple (char *host, char *service) buf, sizeof (buf) - 1)); if (ai->ai_canonname) printf ("\tFound %s...\n", ai->ai_canonname); + + { + char ipbuf[BUFSIZ]; + char portbuf[BUFSIZ]; + + res = getnameinfo (ai->ai_addr, ai->ai_addrlen, + ipbuf, sizeof (ipbuf) - 1, + portbuf, sizeof (portbuf) - 1, + NI_NUMERICHOST|NI_NUMERICSERV); + printf ("\t\tgetnameinfo %d: %s\n", res, gai_strerror (res)); + if (res == 0) + { + printf ("\t\tip %s\n", ipbuf); + printf ("\t\tport %s\n", portbuf); + } + } + } freeaddrinfo (ai0); @@ -48,14 +85,33 @@ int simple (char *host, char *service) #define HOST1 "www.gnu.org" #define SERV1 "http" #define HOST2 "www.ibm.com" -#define SERV2 "http" -#define HOST3 "ibm.org" +#define SERV2 "https" +#define HOST3 "microsoft.com" #define SERV3 "http" #define HOST4 "google.org" -#define SERV4 "http" +#define SERV4 "ldap" int main (void) { +#if _WIN32 + { + WORD requested; + WSADATA data; + int err; + + requested = MAKEWORD (1, 1); + err = WSAStartup (requested, &data); + if (err != 0) + return 1; + + if (data.wVersion < requested) + { + WSACleanup (); + return 2; + } + } +#endif + return simple (HOST1, SERV1) + simple (HOST2, SERV2) + simple (HOST3, SERV3)