aboutsummaryrefslogtreecommitdiff
path: root/inet/test-ifaddrs.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-04-04 00:41:39 +0000
committerUlrich Drepper <drepper@redhat.com>2004-04-04 00:41:39 +0000
commitabca9f7f5893adee7d0eac2ca8962b9c5321e0fe (patch)
treefbd2af557eec256cb4733c1b65f771124e474bef /inet/test-ifaddrs.c
parent6472c918f768547df3309f11a8158477ac032a5b (diff)
downloadglibc-abca9f7f5893adee7d0eac2ca8962b9c5321e0fe.zip
glibc-abca9f7f5893adee7d0eac2ca8962b9c5321e0fe.tar.gz
glibc-abca9f7f5893adee7d0eac2ca8962b9c5321e0fe.tar.bz2
Update.
* inet/test-ifaddrs.c: Fight warnings. * argp/argp-help.c: Fight warnings. * include/time.h: Declare __difftime.
Diffstat (limited to 'inet/test-ifaddrs.c')
-rw-r--r--inet/test-ifaddrs.c76
1 files changed, 39 insertions, 37 deletions
diff --git a/inet/test-ifaddrs.c b/inet/test-ifaddrs.c
index 5057fac..185859e 100644
--- a/inet/test-ifaddrs.c
+++ b/inet/test-ifaddrs.c
@@ -1,5 +1,5 @@
/* Test listing of network interface addresses.
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -25,10 +25,44 @@
#include <netinet/in.h>
#include <arpa/inet.h>
+static int failures;
+
+static const char *
+addr_string (struct sockaddr *sa, char *buf, size_t size)
+{
+ if (sa == NULL)
+ return "<none>";
+
+ switch (sa->sa_family)
+ {
+ case AF_INET:
+ return inet_ntop (AF_INET, &((struct sockaddr_in *) sa)->sin_addr,
+ buf, size);
+ case AF_INET6:
+ return inet_ntop (AF_INET6, &((struct sockaddr_in6 *) sa)->sin6_addr,
+ buf, size);
+#ifdef AF_LINK
+ case AF_LINK:
+ return "<link>";
+#endif
+ case AF_UNSPEC:
+ return "---";
+
+ case AF_PACKET:
+ return "<packet>";
+
+ default:
+ ++failures;
+ printf ("sa_family=%d %08x\n", sa->sa_family,
+ *(int*)&((struct sockaddr_in *) sa)->sin_addr.s_addr);
+ return "<unexpected sockaddr family>";
+ }
+}
+
+
int
main (void)
{
- int failures = 0;
struct ifaddrs *ifaces, *ifa;
if (getifaddrs (&ifaces) < 0)
@@ -48,43 +82,11 @@ Name Flags Address Netmask Broadcast/Destination");
for (ifa = ifaces; ifa != NULL; ifa = ifa->ifa_next)
{
char abuf[64], mbuf[64], dbuf[64];
- inline const char *addr_string (struct sockaddr *sa, char *buf)
- {
- if (sa == NULL)
- return "<none>";
-
- switch (sa->sa_family)
- {
- case AF_INET:
- return inet_ntop (AF_INET,
- &((struct sockaddr_in *) sa)->sin_addr,
- buf, sizeof abuf);
- case AF_INET6:
- return inet_ntop (AF_INET6,
- &((struct sockaddr_in6 *) sa)->sin6_addr,
- buf, sizeof abuf);
-#ifdef AF_LINK
- case AF_LINK:
- return "<link>";
-#endif
- case AF_UNSPEC:
- return "---";
-
- case AF_PACKET:
- return "<packet>";
-
- default:
- ++failures;
- printf ("sa_family=%d %08x\n", sa->sa_family,
- *(int*)&((struct sockaddr_in *) sa)->sin_addr.s_addr);
- return "<unexpected sockaddr family>";
- }
- }
printf ("%-15s%#.4x %-15s %-15s %-15s\n",
ifa->ifa_name, ifa->ifa_flags,
- addr_string (ifa->ifa_addr, abuf),
- addr_string (ifa->ifa_netmask, mbuf),
- addr_string (ifa->ifa_broadaddr, dbuf));
+ addr_string (ifa->ifa_addr, abuf, sizeof (abuf)),
+ addr_string (ifa->ifa_netmask, mbuf, sizeof (mbuf)),
+ addr_string (ifa->ifa_broadaddr, dbuf, sizeof (dbuf)));
}
freeifaddrs (ifaces);