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