/****************************************************************************
 ****************************************************************************
 ***
 ***   This header was automatically generated from a Linux kernel header
 ***   of the same name, to make information necessary for userspace to
 ***   call into the kernel available to libc.  It contains only constants,
 ***   structures, and macros generated from the original header, and thus,
 ***   contains no copyrightable information.
 ***
 ***   To edit the content of this header, modify the corresponding
 ***   source file (e.g. under external/kernel-headers/original/) then
 ***   run bionic/libc/kernel/tools/update_all.py
 ***
 ***   Any manual change here will be lost the next time this script will
 ***   be run. You've been warned!
 ***
 ****************************************************************************
 ****************************************************************************/
#ifndef _IF_PPP_H_
#define _IF_PPP_H_
#include <linux/compiler.h>
#define PPP_MTU 1500
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define PPP_MAXMRU 65000
#define PROTO_IPX 0x002b
#define PROTO_DNA_RT 0x0027
#define SC_COMP_PROT 0x00000001
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SC_COMP_AC 0x00000002
#define SC_COMP_TCP 0x00000004
#define SC_NO_TCP_CCID 0x00000008
#define SC_REJ_COMP_AC 0x00000010
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SC_REJ_COMP_TCP 0x00000020
#define SC_CCP_OPEN 0x00000040
#define SC_CCP_UP 0x00000080
#define SC_ENABLE_IP 0x00000100
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SC_LOOP_TRAFFIC 0x00000200
#define SC_MULTILINK 0x00000400
#define SC_MP_SHORTSEQ 0x00000800
#define SC_COMP_RUN 0x00001000
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SC_DECOMP_RUN 0x00002000
#define SC_MP_XSHORTSEQ 0x00004000
#define SC_DEBUG 0x00010000
#define SC_LOG_INPKT 0x00020000
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SC_LOG_OUTPKT 0x00040000
#define SC_LOG_RAWIN 0x00080000
#define SC_LOG_FLUSH 0x00100000
#define SC_SYNC 0x00200000
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SC_MUST_COMP 0x00400000
#define SC_MASK 0x0f600fff
#define SC_XMIT_BUSY 0x10000000
#define SC_RCV_ODDP 0x08000000
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SC_RCV_EVNP 0x04000000
#define SC_RCV_B7_1 0x02000000
#define SC_RCV_B7_0 0x01000000
#define SC_DC_FERROR 0x00800000
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SC_DC_ERROR 0x00400000
struct npioctl {
 int protocol;
 enum NPmode mode;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct ppp_option_data {
 __u8 __user *ptr;
 __u32 length;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 int transmit;
};
struct ifpppstatsreq {
 struct ifreq b;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ppp_stats stats;
};
struct ifpppcstatsreq {
 struct ifreq b;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ppp_comp_stats stats;
};
#define ifr__name b.ifr_ifrn.ifrn_name
#define stats_ptr b.ifr_ifru.ifru_data
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define PPPIOCGFLAGS _IOR('t', 90, int)
#define PPPIOCSFLAGS _IOW('t', 89, int)
#define PPPIOCGASYNCMAP _IOR('t', 88, int)
#define PPPIOCSASYNCMAP _IOW('t', 87, int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define PPPIOCGUNIT _IOR('t', 86, int)
#define PPPIOCGRASYNCMAP _IOR('t', 85, int)
#define PPPIOCSRASYNCMAP _IOW('t', 84, int)
#define PPPIOCGMRU _IOR('t', 83, int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define PPPIOCSMRU _IOW('t', 82, int)
#define PPPIOCSMAXCID _IOW('t', 81, int)
#define PPPIOCGXASYNCMAP _IOR('t', 80, ext_accm)
#define PPPIOCSXASYNCMAP _IOW('t', 79, ext_accm)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define PPPIOCXFERUNIT _IO('t', 78)
#define PPPIOCSCOMPRESS _IOW('t', 77, struct ppp_option_data)
#define PPPIOCGNPMODE _IOWR('t', 76, struct npioctl)
#define PPPIOCSNPMODE _IOW('t', 75, struct npioctl)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define PPPIOCSPASS _IOW('t', 71, struct sock_fprog)
#define PPPIOCSACTIVE _IOW('t', 70, struct sock_fprog)
#define PPPIOCGDEBUG _IOR('t', 65, int)
#define PPPIOCSDEBUG _IOW('t', 64, int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define PPPIOCGIDLE _IOR('t', 63, struct ppp_idle)
#define PPPIOCNEWUNIT _IOWR('t', 62, int)
#define PPPIOCATTACH _IOW('t', 61, int)
#define PPPIOCDETACH _IOW('t', 60, int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define PPPIOCSMRRU _IOW('t', 59, int)
#define PPPIOCCONNECT _IOW('t', 58, int)
#define PPPIOCDISCONN _IO('t', 57)
#define PPPIOCATTCHAN _IOW('t', 56, int)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define PPPIOCGCHAN _IOR('t', 55, int)
#define SIOCGPPPSTATS (SIOCDEVPRIVATE + 0)
#define SIOCGPPPVER (SIOCDEVPRIVATE + 1)
#define SIOCGPPPCSTATS (SIOCDEVPRIVATE + 2)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#ifndef ifr_mtu
#define ifr_mtu ifr_ifru.ifru_metric
#endif
#endif
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
