1655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/****************************************************************************
2655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
3655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
4655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   This header was automatically generated from a Linux kernel header
5655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   of the same name, to make information necessary for userspace to
6655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   call into the kernel available to libc.  It contains only constants,
7655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   structures, and macros generated from the original header, and thus,
8655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   contains no copyrightable information.
9655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
10655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   To edit the content of this header, modify the corresponding
11655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   source file (e.g. under external/kernel-headers/original/) then
12655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   run bionic/libc/kernel/tools/update_all.py
13655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
14655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   Any manual change here will be lost the next time this script will
15655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   be run. You've been warned!
16655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
17655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
18655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************/
19655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifndef _UAPI__LINUX_IF_PPPOX_H
20655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define _UAPI__LINUX_IF_PPPOX_H
21655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/types.h>
22655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <asm/byteorder.h>
23655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/socket.h>
2449f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris#include <linux/if.h>
25655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/if_ether.h>
26655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/if_pppol2tp.h>
2749f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris#include <linux/in.h>
2849f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris#include <linux/in6.h>
2949f525c47bd383cd6a87db8f067cddb3ab620d17Christopher Ferris#ifndef AF_PPPOX
30655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define AF_PPPOX 24
31655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PF_PPPOX AF_PPPOX
32655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif
33655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef __be16 sid_t;
34655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct pppoe_addr {
35d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  sid_t sid;
36d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned char remote[ETH_ALEN];
37d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  char dev[IFNAMSIZ];
38655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
39655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct pptp_addr {
40d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u16 call_id;
41d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct in_addr sin_addr;
42655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
43655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PX_PROTO_OE 0
44655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PX_PROTO_OL2TP 1
45655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PX_PROTO_PPTP 2
4638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define PX_MAX_PROTO 3
47655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct sockaddr_pppox {
48d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __kernel_sa_family_t sa_family;
49d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int sa_protocol;
50d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  union {
51d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao    struct pppoe_addr pppoe;
52d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao    struct pptp_addr pptp;
53d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  } sa_addr;
54655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} __packed;
55655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct sockaddr_pppol2tp {
56d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __kernel_sa_family_t sa_family;
57d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int sa_protocol;
58d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct pppol2tp_addr pppol2tp;
59655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} __packed;
60655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct sockaddr_pppol2tpin6 {
61d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __kernel_sa_family_t sa_family;
62d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int sa_protocol;
63d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct pppol2tpin6_addr pppol2tp;
64655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} __packed;
65655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct sockaddr_pppol2tpv3 {
66d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __kernel_sa_family_t sa_family;
67d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int sa_protocol;
68d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct pppol2tpv3_addr pppol2tp;
69655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} __packed;
70655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct sockaddr_pppol2tpv3in6 {
71d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __kernel_sa_family_t sa_family;
72d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int sa_protocol;
73d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct pppol2tpv3in6_addr pppol2tp;
74655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} __packed;
75d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define PPPOEIOCSFWD _IOW(0xB1, 0, size_t)
76d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define PPPOEIOCDFWD _IO(0xB1, 1)
77655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PADI_CODE 0x09
78655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PADO_CODE 0x07
79655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PADR_CODE 0x19
80655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PADS_CODE 0x65
81655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PADT_CODE 0xa7
82655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct pppoe_tag {
83d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __be16 tag_type;
84d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __be16 tag_len;
85d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  char tag_data[0];
86d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao} __attribute__((packed));
87655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PTT_EOL __cpu_to_be16(0x0000)
88655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PTT_SRV_NAME __cpu_to_be16(0x0101)
89655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PTT_AC_NAME __cpu_to_be16(0x0102)
90655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PTT_HOST_UNIQ __cpu_to_be16(0x0103)
91655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PTT_AC_COOKIE __cpu_to_be16(0x0104)
92655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PTT_VENDOR __cpu_to_be16(0x0105)
93655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PTT_RELAY_SID __cpu_to_be16(0x0110)
94655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PTT_SRV_ERR __cpu_to_be16(0x0201)
95655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PTT_SYS_ERR __cpu_to_be16(0x0202)
96655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PTT_GEN_ERR __cpu_to_be16(0x0203)
97655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct pppoe_hdr {
98655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifdef __LITTLE_ENDIAN_BITFIELD
99d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 type : 4;
100d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 ver : 4;
101655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#elif defined(__BIG_ENDIAN_BITFIELD)
102d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 ver : 4;
103d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 type : 4;
104655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#else
105655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#error "Please fix <asm/byteorder.h>"
106655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif
107d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 code;
108d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __be16 sid;
109d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __be16 length;
110d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct pppoe_tag tag[0];
111655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} __packed;
112655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define PPPOE_SES_HLEN 8
113655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif
114