PostgreSQL Source Code git master
test_ifaddrs.c
Go to the documentation of this file.
1/*
2 * src/tools/ifaddrs/test_ifaddrs.c
3 *
4 *
5 * test_ifaddrs.c
6 * test pg_foreach_ifaddr()
7 */
8
9#include "postgres.h"
10
11#include <netinet/in.h>
12#include <arpa/inet.h>
13
14#include "libpq/ifaddr.h"
15
16
17static void
18print_addr(struct sockaddr *addr)
19{
20 char buffer[256];
21 int ret,
22 len;
23
24 switch (addr->sa_family)
25 {
26 case AF_INET:
27 len = sizeof(struct sockaddr_in);
28 break;
29 case AF_INET6:
30 len = sizeof(struct sockaddr_in6);
31 break;
32 default:
33 len = sizeof(struct sockaddr_storage);
34 break;
35 }
36
37 ret = getnameinfo(addr, len, buffer, sizeof(buffer), NULL, 0,
38 NI_NUMERICHOST);
39 if (ret != 0)
40 printf("[unknown: family %d]", addr->sa_family);
41 else
42 printf("%s", buffer);
43}
44
45static void
46callback(struct sockaddr *addr, struct sockaddr *mask, void *unused)
47{
48 printf("addr: ");
49 print_addr(addr);
50 printf(" mask: ");
51 print_addr(mask);
52 printf("\n");
53}
54
55int
56main(int argc, char *argv[])
57{
58#ifdef WIN32
59 WSADATA wsaData;
60
61 if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
62 {
63 fprintf(stderr, "WSAStartup failed\n");
64 return 1;
65 }
66#endif
67
68 if (pg_foreach_ifaddr(callback, NULL) < 0)
69 fprintf(stderr, "pg_foreach_ifaddr failed: %m\n");
70 return 0;
71}
#define fprintf(file, fmt, msg)
Definition: cubescan.l:21
int pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data)
Definition: ifaddr.c:425
const void size_t len
#define printf(...)
Definition: port.h:245
int main(int argc, char *argv[])
Definition: test_ifaddrs.c:56
static void callback(struct sockaddr *addr, struct sockaddr *mask, void *unused)
Definition: test_ifaddrs.c:46
static void print_addr(struct sockaddr *addr)
Definition: test_ifaddrs.c:18