xref: /aosp_15_r20/external/libnl/include/linux-private/linux/libc-compat.h (revision 4dc78e53d49367fa8e61b07018507c90983a077d)
1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*4dc78e53SAndroid Build Coastguard Worker /*
3*4dc78e53SAndroid Build Coastguard Worker  * Compatibility interface for userspace libc header coordination:
4*4dc78e53SAndroid Build Coastguard Worker  *
5*4dc78e53SAndroid Build Coastguard Worker  * Define compatibility macros that are used to control the inclusion or
6*4dc78e53SAndroid Build Coastguard Worker  * exclusion of UAPI structures and definitions in coordination with another
7*4dc78e53SAndroid Build Coastguard Worker  * userspace C library.
8*4dc78e53SAndroid Build Coastguard Worker  *
9*4dc78e53SAndroid Build Coastguard Worker  * This header is intended to solve the problem of UAPI definitions that
10*4dc78e53SAndroid Build Coastguard Worker  * conflict with userspace definitions. If a UAPI header has such conflicting
11*4dc78e53SAndroid Build Coastguard Worker  * definitions then the solution is as follows:
12*4dc78e53SAndroid Build Coastguard Worker  *
13*4dc78e53SAndroid Build Coastguard Worker  * * Synchronize the UAPI header and the libc headers so either one can be
14*4dc78e53SAndroid Build Coastguard Worker  *   used and such that the ABI is preserved. If this is not possible then
15*4dc78e53SAndroid Build Coastguard Worker  *   no simple compatibility interface exists (you need to write translating
16*4dc78e53SAndroid Build Coastguard Worker  *   wrappers and rename things) and you can't use this interface.
17*4dc78e53SAndroid Build Coastguard Worker  *
18*4dc78e53SAndroid Build Coastguard Worker  * Then follow this process:
19*4dc78e53SAndroid Build Coastguard Worker  *
20*4dc78e53SAndroid Build Coastguard Worker  * (a) Include libc-compat.h in the UAPI header.
21*4dc78e53SAndroid Build Coastguard Worker  *      e.g. #include <linux/libc-compat.h>
22*4dc78e53SAndroid Build Coastguard Worker  *     This include must be as early as possible.
23*4dc78e53SAndroid Build Coastguard Worker  *
24*4dc78e53SAndroid Build Coastguard Worker  * (b) In libc-compat.h add enough code to detect that the comflicting
25*4dc78e53SAndroid Build Coastguard Worker  *     userspace libc header has been included first.
26*4dc78e53SAndroid Build Coastguard Worker  *
27*4dc78e53SAndroid Build Coastguard Worker  * (c) If the userspace libc header has been included first define a set of
28*4dc78e53SAndroid Build Coastguard Worker  *     guard macros of the form __UAPI_DEF_FOO and set their values to 1, else
29*4dc78e53SAndroid Build Coastguard Worker  *     set their values to 0.
30*4dc78e53SAndroid Build Coastguard Worker  *
31*4dc78e53SAndroid Build Coastguard Worker  * (d) Back in the UAPI header with the conflicting definitions, guard the
32*4dc78e53SAndroid Build Coastguard Worker  *     definitions with:
33*4dc78e53SAndroid Build Coastguard Worker  *     #if __UAPI_DEF_FOO
34*4dc78e53SAndroid Build Coastguard Worker  *       ...
35*4dc78e53SAndroid Build Coastguard Worker  *     #endif
36*4dc78e53SAndroid Build Coastguard Worker  *
37*4dc78e53SAndroid Build Coastguard Worker  * This fixes the situation where the linux headers are included *after* the
38*4dc78e53SAndroid Build Coastguard Worker  * libc headers. To fix the problem with the inclusion in the other order the
39*4dc78e53SAndroid Build Coastguard Worker  * userspace libc headers must be fixed like this:
40*4dc78e53SAndroid Build Coastguard Worker  *
41*4dc78e53SAndroid Build Coastguard Worker  * * For all definitions that conflict with kernel definitions wrap those
42*4dc78e53SAndroid Build Coastguard Worker  *   defines in the following:
43*4dc78e53SAndroid Build Coastguard Worker  *   #if !__UAPI_DEF_FOO
44*4dc78e53SAndroid Build Coastguard Worker  *     ...
45*4dc78e53SAndroid Build Coastguard Worker  *   #endif
46*4dc78e53SAndroid Build Coastguard Worker  *
47*4dc78e53SAndroid Build Coastguard Worker  * This prevents the redefinition of a construct already defined by the kernel.
48*4dc78e53SAndroid Build Coastguard Worker  */
49*4dc78e53SAndroid Build Coastguard Worker #ifndef _LIBC_COMPAT_H
50*4dc78e53SAndroid Build Coastguard Worker #define _LIBC_COMPAT_H
51*4dc78e53SAndroid Build Coastguard Worker 
52*4dc78e53SAndroid Build Coastguard Worker /* We have included glibc headers... */
53*4dc78e53SAndroid Build Coastguard Worker #if defined(__GLIBC__)
54*4dc78e53SAndroid Build Coastguard Worker 
55*4dc78e53SAndroid Build Coastguard Worker /* Coordinate with glibc net/if.h header. */
56*4dc78e53SAndroid Build Coastguard Worker #if defined(_NET_IF_H) && defined(__USE_MISC)
57*4dc78e53SAndroid Build Coastguard Worker 
58*4dc78e53SAndroid Build Coastguard Worker /* GLIBC headers included first so don't define anything
59*4dc78e53SAndroid Build Coastguard Worker  * that would already be defined. */
60*4dc78e53SAndroid Build Coastguard Worker 
61*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_IFCONF 0
62*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_IFMAP 0
63*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_IFNAMSIZ 0
64*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_IFREQ 0
65*4dc78e53SAndroid Build Coastguard Worker /* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
66*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_NET_DEVICE_FLAGS 0
67*4dc78e53SAndroid Build Coastguard Worker /* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
68*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
69*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
70*4dc78e53SAndroid Build Coastguard Worker #endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
71*4dc78e53SAndroid Build Coastguard Worker 
72*4dc78e53SAndroid Build Coastguard Worker #else /* _NET_IF_H */
73*4dc78e53SAndroid Build Coastguard Worker 
74*4dc78e53SAndroid Build Coastguard Worker /* Linux headers included first, and we must define everything
75*4dc78e53SAndroid Build Coastguard Worker  * we need. The expectation is that glibc will check the
76*4dc78e53SAndroid Build Coastguard Worker  * __UAPI_DEF_* defines and adjust appropriately. */
77*4dc78e53SAndroid Build Coastguard Worker 
78*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_IFCONF 1
79*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_IFMAP 1
80*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_IFNAMSIZ 1
81*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_IFREQ 1
82*4dc78e53SAndroid Build Coastguard Worker /* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
83*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
84*4dc78e53SAndroid Build Coastguard Worker /* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
85*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
86*4dc78e53SAndroid Build Coastguard Worker 
87*4dc78e53SAndroid Build Coastguard Worker #endif /* _NET_IF_H */
88*4dc78e53SAndroid Build Coastguard Worker 
89*4dc78e53SAndroid Build Coastguard Worker /* Coordinate with glibc netinet/in.h header. */
90*4dc78e53SAndroid Build Coastguard Worker #if defined(_NETINET_IN_H)
91*4dc78e53SAndroid Build Coastguard Worker 
92*4dc78e53SAndroid Build Coastguard Worker /* GLIBC headers included first so don't define anything
93*4dc78e53SAndroid Build Coastguard Worker  * that would already be defined. */
94*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN_ADDR		0
95*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN_IPPROTO		0
96*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN_PKTINFO		0
97*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IP_MREQ		0
98*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_SOCKADDR_IN		0
99*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN_CLASS		0
100*4dc78e53SAndroid Build Coastguard Worker 
101*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN6_ADDR		0
102*4dc78e53SAndroid Build Coastguard Worker /* The exception is the in6_addr macros which must be defined
103*4dc78e53SAndroid Build Coastguard Worker  * if the glibc code didn't define them. This guard matches
104*4dc78e53SAndroid Build Coastguard Worker  * the guard in glibc/inet/netinet/in.h which defines the
105*4dc78e53SAndroid Build Coastguard Worker  * additional in6_addr macros e.g. s6_addr16, and s6_addr32. */
106*4dc78e53SAndroid Build Coastguard Worker #if defined(__USE_MISC) || defined (__USE_GNU)
107*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN6_ADDR_ALT		0
108*4dc78e53SAndroid Build Coastguard Worker #else
109*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN6_ADDR_ALT		1
110*4dc78e53SAndroid Build Coastguard Worker #endif
111*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_SOCKADDR_IN6		0
112*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPV6_MREQ		0
113*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPPROTO_V6		0
114*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPV6_OPTIONS		0
115*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN6_PKTINFO		0
116*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IP6_MTUINFO		0
117*4dc78e53SAndroid Build Coastguard Worker 
118*4dc78e53SAndroid Build Coastguard Worker #else
119*4dc78e53SAndroid Build Coastguard Worker 
120*4dc78e53SAndroid Build Coastguard Worker /* Linux headers included first, and we must define everything
121*4dc78e53SAndroid Build Coastguard Worker  * we need. The expectation is that glibc will check the
122*4dc78e53SAndroid Build Coastguard Worker  * __UAPI_DEF_* defines and adjust appropriately. */
123*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN_ADDR		1
124*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN_IPPROTO		1
125*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN_PKTINFO		1
126*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IP_MREQ		1
127*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_SOCKADDR_IN		1
128*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN_CLASS		1
129*4dc78e53SAndroid Build Coastguard Worker 
130*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN6_ADDR		1
131*4dc78e53SAndroid Build Coastguard Worker /* We unconditionally define the in6_addr macros and glibc must
132*4dc78e53SAndroid Build Coastguard Worker  * coordinate. */
133*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN6_ADDR_ALT		1
134*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_SOCKADDR_IN6		1
135*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPV6_MREQ		1
136*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPPROTO_V6		1
137*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPV6_OPTIONS		1
138*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN6_PKTINFO		1
139*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IP6_MTUINFO		1
140*4dc78e53SAndroid Build Coastguard Worker 
141*4dc78e53SAndroid Build Coastguard Worker #endif /* _NETINET_IN_H */
142*4dc78e53SAndroid Build Coastguard Worker 
143*4dc78e53SAndroid Build Coastguard Worker /* Coordinate with glibc netipx/ipx.h header. */
144*4dc78e53SAndroid Build Coastguard Worker #if defined(__NETIPX_IPX_H)
145*4dc78e53SAndroid Build Coastguard Worker 
146*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_SOCKADDR_IPX			0
147*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPX_ROUTE_DEFINITION		0
148*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPX_INTERFACE_DEFINITION	0
149*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPX_CONFIG_DATA		0
150*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPX_ROUTE_DEF		0
151*4dc78e53SAndroid Build Coastguard Worker 
152*4dc78e53SAndroid Build Coastguard Worker #else /* defined(__NETIPX_IPX_H) */
153*4dc78e53SAndroid Build Coastguard Worker 
154*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_SOCKADDR_IPX			1
155*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPX_ROUTE_DEFINITION		1
156*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPX_INTERFACE_DEFINITION	1
157*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPX_CONFIG_DATA		1
158*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPX_ROUTE_DEF		1
159*4dc78e53SAndroid Build Coastguard Worker 
160*4dc78e53SAndroid Build Coastguard Worker #endif /* defined(__NETIPX_IPX_H) */
161*4dc78e53SAndroid Build Coastguard Worker 
162*4dc78e53SAndroid Build Coastguard Worker /* Definitions for xattr.h */
163*4dc78e53SAndroid Build Coastguard Worker #if defined(_SYS_XATTR_H)
164*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_XATTR		0
165*4dc78e53SAndroid Build Coastguard Worker #else
166*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_XATTR		1
167*4dc78e53SAndroid Build Coastguard Worker #endif
168*4dc78e53SAndroid Build Coastguard Worker 
169*4dc78e53SAndroid Build Coastguard Worker /* If we did not see any headers from any supported C libraries,
170*4dc78e53SAndroid Build Coastguard Worker  * or we are being included in the kernel, then define everything
171*4dc78e53SAndroid Build Coastguard Worker  * that we need. Check for previous __UAPI_* definitions to give
172*4dc78e53SAndroid Build Coastguard Worker  * unsupported C libraries a way to opt out of any kernel definition. */
173*4dc78e53SAndroid Build Coastguard Worker #else /* !defined(__GLIBC__) */
174*4dc78e53SAndroid Build Coastguard Worker 
175*4dc78e53SAndroid Build Coastguard Worker /* Definitions for if.h */
176*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IF_IFCONF
177*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_IFCONF 1
178*4dc78e53SAndroid Build Coastguard Worker #endif
179*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IF_IFMAP
180*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_IFMAP 1
181*4dc78e53SAndroid Build Coastguard Worker #endif
182*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IF_IFNAMSIZ
183*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_IFNAMSIZ 1
184*4dc78e53SAndroid Build Coastguard Worker #endif
185*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IF_IFREQ
186*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_IFREQ 1
187*4dc78e53SAndroid Build Coastguard Worker #endif
188*4dc78e53SAndroid Build Coastguard Worker /* Everything up to IFF_DYNAMIC, matches net/if.h until glibc 2.23 */
189*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS
190*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
191*4dc78e53SAndroid Build Coastguard Worker #endif
192*4dc78e53SAndroid Build Coastguard Worker /* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
193*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
194*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
195*4dc78e53SAndroid Build Coastguard Worker #endif
196*4dc78e53SAndroid Build Coastguard Worker 
197*4dc78e53SAndroid Build Coastguard Worker /* Definitions for in.h */
198*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IN_ADDR
199*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN_ADDR		1
200*4dc78e53SAndroid Build Coastguard Worker #endif
201*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IN_IPPROTO
202*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN_IPPROTO		1
203*4dc78e53SAndroid Build Coastguard Worker #endif
204*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IN_PKTINFO
205*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN_PKTINFO		1
206*4dc78e53SAndroid Build Coastguard Worker #endif
207*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IP_MREQ
208*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IP_MREQ		1
209*4dc78e53SAndroid Build Coastguard Worker #endif
210*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_SOCKADDR_IN
211*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_SOCKADDR_IN		1
212*4dc78e53SAndroid Build Coastguard Worker #endif
213*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IN_CLASS
214*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN_CLASS		1
215*4dc78e53SAndroid Build Coastguard Worker #endif
216*4dc78e53SAndroid Build Coastguard Worker 
217*4dc78e53SAndroid Build Coastguard Worker /* Definitions for in6.h */
218*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IN6_ADDR
219*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN6_ADDR		1
220*4dc78e53SAndroid Build Coastguard Worker #endif
221*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IN6_ADDR_ALT
222*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN6_ADDR_ALT		1
223*4dc78e53SAndroid Build Coastguard Worker #endif
224*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_SOCKADDR_IN6
225*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_SOCKADDR_IN6		1
226*4dc78e53SAndroid Build Coastguard Worker #endif
227*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IPV6_MREQ
228*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPV6_MREQ		1
229*4dc78e53SAndroid Build Coastguard Worker #endif
230*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IPPROTO_V6
231*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPPROTO_V6		1
232*4dc78e53SAndroid Build Coastguard Worker #endif
233*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IPV6_OPTIONS
234*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPV6_OPTIONS		1
235*4dc78e53SAndroid Build Coastguard Worker #endif
236*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IN6_PKTINFO
237*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IN6_PKTINFO		1
238*4dc78e53SAndroid Build Coastguard Worker #endif
239*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IP6_MTUINFO
240*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IP6_MTUINFO		1
241*4dc78e53SAndroid Build Coastguard Worker #endif
242*4dc78e53SAndroid Build Coastguard Worker 
243*4dc78e53SAndroid Build Coastguard Worker /* Definitions for ipx.h */
244*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_SOCKADDR_IPX
245*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_SOCKADDR_IPX			1
246*4dc78e53SAndroid Build Coastguard Worker #endif
247*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IPX_ROUTE_DEFINITION
248*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPX_ROUTE_DEFINITION		1
249*4dc78e53SAndroid Build Coastguard Worker #endif
250*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IPX_INTERFACE_DEFINITION
251*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPX_INTERFACE_DEFINITION	1
252*4dc78e53SAndroid Build Coastguard Worker #endif
253*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IPX_CONFIG_DATA
254*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPX_CONFIG_DATA		1
255*4dc78e53SAndroid Build Coastguard Worker #endif
256*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_IPX_ROUTE_DEF
257*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_IPX_ROUTE_DEF		1
258*4dc78e53SAndroid Build Coastguard Worker #endif
259*4dc78e53SAndroid Build Coastguard Worker 
260*4dc78e53SAndroid Build Coastguard Worker /* Definitions for xattr.h */
261*4dc78e53SAndroid Build Coastguard Worker #ifndef __UAPI_DEF_XATTR
262*4dc78e53SAndroid Build Coastguard Worker #define __UAPI_DEF_XATTR		1
263*4dc78e53SAndroid Build Coastguard Worker #endif
264*4dc78e53SAndroid Build Coastguard Worker 
265*4dc78e53SAndroid Build Coastguard Worker #endif /* __GLIBC__ */
266*4dc78e53SAndroid Build Coastguard Worker 
267*4dc78e53SAndroid Build Coastguard Worker #endif /* _LIBC_COMPAT_H */
268