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_FILTER_H__
20655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define _UAPI__LINUX_FILTER_H__
21655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/compiler.h>
22655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/types.h>
2382d7504cd7d5c8d2175fb3b1a4ee3518cad6aa0fChristopher Ferris#include <linux/bpf_common.h>
24655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define BPF_MAJOR_VERSION 1
25655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define BPF_MINOR_VERSION 1
26655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct sock_filter {
27d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u16 code;
28d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 jt;
29d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 jf;
30d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 k;
3182d7504cd7d5c8d2175fb3b1a4ee3518cad6aa0fChristopher Ferris};
32655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct sock_fprog {
33d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned short len;
34d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct sock_filter __user * filter;
3582d7504cd7d5c8d2175fb3b1a4ee3518cad6aa0fChristopher Ferris};
36655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define BPF_RVAL(code) ((code) & 0x18)
37655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define BPF_A 0x10
38655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define BPF_MISCOP(code) ((code) & 0xf8)
3982d7504cd7d5c8d2175fb3b1a4ee3518cad6aa0fChristopher Ferris#define BPF_TAX 0x00
40655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define BPF_TXA 0x80
41655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifndef BPF_STMT
42d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define BPF_STMT(code,k) { (unsigned short) (code), 0, 0, k }
43655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif
44655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifndef BPF_JUMP
45d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define BPF_JUMP(code,k,jt,jf) { (unsigned short) (code), jt, jf, k }
46655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif
47655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define BPF_MEMWORDS 16
48d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define SKF_AD_OFF (- 0x1000)
49655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SKF_AD_PROTOCOL 0
50655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SKF_AD_PKTTYPE 4
51655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SKF_AD_IFINDEX 8
52655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SKF_AD_NLATTR 12
53655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SKF_AD_NLATTR_NEST 16
54655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SKF_AD_MARK 20
55655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SKF_AD_QUEUE 24
56655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SKF_AD_HATYPE 28
57655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SKF_AD_RXHASH 32
58655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SKF_AD_CPU 36
59655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SKF_AD_ALU_XOR_X 40
60655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SKF_AD_VLAN_TAG 44
61655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SKF_AD_VLAN_TAG_PRESENT 48
62655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SKF_AD_PAY_OFFSET 52
63ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris#define SKF_AD_RANDOM 56
6405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define SKF_AD_VLAN_TPID 60
6505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define SKF_AD_MAX 64
66d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define SKF_NET_OFF (- 0x100000)
6705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define SKF_LL_OFF (- 0x200000)
6805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define BPF_NET_OFF SKF_NET_OFF
6905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define BPF_LL_OFF SKF_LL_OFF
70655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif
71