glitch in the license text detected by hyazinthe, thank you!
[oweals/gnunet.git] / src / util / test_os_network.c
1 /*
2      This file is part of GNUnet.
3      Copyright (C) 2003, 2004, 2005, 2006, 2009 GNUnet e.V.
4
5      GNUnet is free software: you can redistribute it and/or modify it
6      under the terms of the GNU Affero General Public License as published
7      by the Free Software Foundation, either version 3 of the License,
8      or (at your option) any later version.
9
10      GNUnet is distributed in the hope that it will be useful, but
11      WITHOUT ANY WARRANTY; without even the implied warranty of
12      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13      Affero General Public License for more details.
14 */
15 /**
16  * @file util/test_os_network.c
17  * @brief testcase for util/os_network.c
18  */
19 #include "platform.h"
20 #include "gnunet_util_lib.h"
21
22
23 /**
24  * Check if the address we got is IPv4 or IPv6 loopback (which should
25  * be present on all systems at all times); if so, set ok to 0
26  * (success).
27  */
28 static int
29 proc (void *cls, const char *name, int isDefault, const struct sockaddr *addr,
30       const struct sockaddr *broadcast_addr, const struct sockaddr *netmask,
31       socklen_t addrlen)
32 {
33   int *ok = cls;
34   char buf[INET6_ADDRSTRLEN];
35   const char * protocol;
36
37   if (NULL == addr)
38     return GNUNET_OK;
39   if (addrlen == sizeof (struct sockaddr_in))
40     protocol = "IPv4";
41   else
42     protocol = "IPv6";
43   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
44               "%s Address `%s'\n", protocol, GNUNET_a2s ((const struct sockaddr *) addr,addrlen) );
45   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
46               "Netmask `%s'\n", GNUNET_a2s ((const struct sockaddr *) netmask, addrlen) );
47   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
48               "`%s'\n", GNUNET_a2s ((const struct sockaddr *) broadcast_addr,addrlen) );
49   inet_ntop (addr->sa_family,
50              (addr->sa_family ==
51               AF_INET) ? (void *) &((struct sockaddr_in *) addr)->sin_addr
52              : (void *) &((struct sockaddr_in6 *) addr)->sin6_addr, buf,
53              sizeof (buf));
54   if ((0 == strcmp ("::1", buf)) || (0 == strcmp ("127.0.0.1", buf)))
55     *ok = 0;
56   return GNUNET_OK;
57 }
58
59
60 int
61 main (int argc, char *argv[])
62 {
63   int ret;
64
65   GNUNET_log_setup ("test-os-network", "WARNING", NULL);
66   ret = 1;
67   GNUNET_OS_network_interfaces_list (&proc, &ret);
68   return ret;
69 }
70
71 /* end of test_os_network.c */