VSF Documented
ifaddrs.h
Go to the documentation of this file.
1#ifndef __VSF_LINUX_IFADDRS_H__
2#define __VSF_LINUX_IFADDRS_H__
3
5
6#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED
7# include "../sys/types.h"
8# include "../sys/socket.h"
9#else
10# include <sys/types.h>
11# include <sys/socket.h>
12#endif
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
19 IFF_UP = 1 << 0,
20 IFF_BROADCAST = 1 << 1,
21 IFF_DEBUG = 1 << 2,
22 IFF_LOOPBACK = 1 << 3,
23 IFF_RUNNING = 1 << 6,
24};
25
26struct ifaddrs {
28 char *ifa_name;
29 unsigned int ifa_flags;
30
33 union {
37#ifndef ifa_broadaddr
38# define ifa_broadaddr ifa_ifu.ifu_broadaddr
39#endif
40#ifndef ifa_dstaddr
41# define ifa_dstaddr ifa_ifu.ifu_dstaddr
42#endif
43
44 void *ifa_data;
45};
46
47#if VSF_LINUX_CFG_WRAPPER == ENABLED
48#define getifaddrs VSF_LINUX_WRAPPER(getifaddrs)
49#define freeifaddrs VSF_LINUX_WRAPPER(freeifaddrs)
50#endif
51
52#if VSF_LINUX_APPLET_USE_IFADDRS == ENABLED
55
59# ifndef __VSF_APPLET__
61# endif
62#endif
63
64#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_IFADDRS_LIB__))\
65 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_IFADDRS == ENABLED
66
67#ifndef VSF_LINUX_APPLET_IFADDRS_VPLT
68# if VSF_LINUX_USE_APPLET == ENABLED
69# define VSF_LINUX_APPLET_IFADDRS_VPLT \
70 ((vsf_linux_ifaddrs_vplt_t *)(VSF_LINUX_APPLET_VPLT->ifaddrs_vplt))
71# else
72# define VSF_LINUX_APPLET_IFADDRS_VPLT \
73 ((vsf_linux_ifaddrs_vplt_t *)vsf_vplt((void *)0))
74# endif
75#endif
76
77#define VSF_LINUX_APPLET_IFADDRS_ENTRY(__NAME) \
78 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_IFADDRS_VPLT, __NAME)
79#define VSF_LINUX_APPLET_IFADDRS_IMP(...) \
80 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_IFADDRS_VPLT, __VA_ARGS__)
81
82VSF_LINUX_APPLET_IFADDRS_IMP(getifaddrs, int, struct ifaddrs **ifa) {
84 return VSF_LINUX_APPLET_IFADDRS_ENTRY(getifaddrs)(ifa);
85}
86VSF_LINUX_APPLET_IFADDRS_IMP(freeifaddrs, void, struct ifaddrs *ifa) {
88 VSF_LINUX_APPLET_IFADDRS_ENTRY(freeifaddrs)(ifa);
89}
90
91#else // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_IFADDRS
92
93int getifaddrs(struct ifaddrs **ifa);
94void freeifaddrs(struct ifaddrs *ifa);
95
96#endif // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_IFADDRS
97
98#ifdef __cplusplus
99}
100#endif
101
102#endif
#define freeifaddrs
Definition ifaddrs.h:49
__VSF_VPLT_DECORATOR__ vsf_linux_ifaddrs_vplt_t vsf_linux_ifaddrs_vplt
Definition vsf_linux_socket.c:790
net_device_flags
Definition ifaddrs.h:18
@ IFF_UP
Definition ifaddrs.h:19
@ IFF_DEBUG
Definition ifaddrs.h:21
@ IFF_BROADCAST
Definition ifaddrs.h:20
@ IFF_RUNNING
Definition ifaddrs.h:23
@ IFF_LOOPBACK
Definition ifaddrs.h:22
#define getifaddrs
Definition ifaddrs.h:48
Definition ifaddrs.h:26
struct sockaddr * ifa_addr
Definition ifaddrs.h:31
unsigned int ifa_flags
Definition ifaddrs.h:29
char * ifa_name
Definition ifaddrs.h:28
struct sockaddr * ifs_dstaddr
Definition ifaddrs.h:35
struct ifaddrs * ifa_next
Definition ifaddrs.h:27
void * ifa_data
Definition ifaddrs.h:44
struct sockaddr * ifa_netmask
Definition ifaddrs.h:32
struct sockaddr * ifu_broadaddr
Definition ifaddrs.h:34
union ifaddrs::@812 ifa_ifu
Definition socket.h:72
Definition ifaddrs.h:53
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(freeifaddrs)
vsf_vplt_info_t info
Definition ifaddrs.h:54
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getifaddrs)
Definition vsf_cfg.h:95
#define __VSF_VPLT_DECORATOR__
Definition vsf_cfg.h:93
#define VSF_APPLET_VPLT_ENTRY_FUNC_TRACE()
Definition vsf_cfg.h:165