style fix
[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      You should have received a copy of the GNU Affero General Public License
16      along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
18      SPDX-License-Identifier: AGPL3.0-or-later
19  */
20 /**
21  * @file util/test_os_network.c
22  * @brief testcase for util/os_network.c
23  */
24 #include "platform.h"
25 #include "gnunet_util_lib.h"
26
27
28 /**
29  * Check if the address we got is IPv4 or IPv6 loopback (which should
30  * be present on all systems at all times); if so, set ok to 0
31  * (success).
32  */
33 static int
34 proc(void *cls,
35      const char *name,
36      int isDefault,
37      const struct sockaddr *addr,
38      const struct sockaddr *broadcast_addr,
39      const struct sockaddr *netmask,
40      socklen_t addrlen)
41 {
42   int *ok = cls;
43   char buf[INET6_ADDRSTRLEN];
44   const char * protocol;
45
46   if (NULL == addr)
47     return GNUNET_OK;
48   if (addrlen == sizeof(struct sockaddr_in))
49     protocol = "IPv4";
50   else
51     protocol = "IPv6";
52   GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
53              "%s Address `%s'\n",
54              protocol,
55              GNUNET_a2s((const struct sockaddr *)addr,
56                         addrlen));
57   GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
58              "Netmask `%s'\n",
59              GNUNET_a2s((const struct sockaddr *)netmask,
60                         addrlen));
61   GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
62              "`%s'\n",
63              GNUNET_a2s((const struct sockaddr *)broadcast_addr,
64                         addrlen));
65   inet_ntop(addr->sa_family,
66             (addr->sa_family ==
67              AF_INET) ? (void *)&((struct sockaddr_in *)addr)->sin_addr
68             : (void *)&((struct sockaddr_in6 *)addr)->sin6_addr, buf,
69             sizeof(buf));
70   if ((0 == strcmp("::1", buf)) || (0 == strcmp("127.0.0.1", buf)))
71     *ok = 0;
72   return GNUNET_OK;
73 }
74
75
76 int
77 main(int argc, char *argv[])
78 {
79   int ret;
80
81   GNUNET_log_setup("test-os-network",
82                    "WARNING",
83                    NULL);
84   ret = 1;
85   GNUNET_OS_network_interfaces_list(&proc,
86                                     &ret);
87   return ret;
88 }
89
90 /* end of test_os_network.c */