1#pragma once
2
3#ifdef __cplusplus
4extern "C" {
5#endif
6
7#include <features.h>
8#include <netinet/in.h>
9#include <sys/socket.h>
10
11struct ifaddrs {
12    struct ifaddrs* ifa_next;
13    char* ifa_name;
14    unsigned ifa_flags;
15    struct sockaddr* ifa_addr;
16    struct sockaddr* ifa_netmask;
17    union {
18        struct sockaddr* ifu_broadaddr;
19        struct sockaddr* ifu_dstaddr;
20    } ifa_ifu;
21    void* ifa_data;
22};
23#define ifa_broadaddr ifa_ifu.ifu_broadaddr
24#define ifa_dstaddr ifa_ifu.ifu_dstaddr
25
26void freeifaddrs(struct ifaddrs* ifp);
27int getifaddrs(struct ifaddrs** ifap);
28
29#ifdef __cplusplus
30}
31#endif
32