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