blob: 133c77b89edb04ff8dfb11f8d1420663bbc01980 [file] [log] [blame]
Ben Cheng655a7c02013-10-16 16:09:24 -07001/****************************************************************************
2 ****************************************************************************
3 ***
4 *** This header was automatically generated from a Linux kernel header
5 *** of the same name, to make information necessary for userspace to
6 *** call into the kernel available to libc. It contains only constants,
7 *** structures, and macros generated from the original header, and thus,
8 *** contains no copyrightable information.
9 ***
10 *** To edit the content of this header, modify the corresponding
11 *** source file (e.g. under external/kernel-headers/original/) then
12 *** run bionic/libc/kernel/tools/update_all.py
13 ***
14 *** Any manual change here will be lost the next time this script will
15 *** be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef __LINUX_IF_PACKET_H
20#define __LINUX_IF_PACKET_H
21#include <linux/types.h>
22struct sockaddr_pkt {
23/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
24 unsigned short spkt_family;
25 unsigned char spkt_device[14];
26 __be16 spkt_protocol;
27};
28/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
29struct sockaddr_ll {
30 unsigned short sll_family;
31 __be16 sll_protocol;
32 int sll_ifindex;
33/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
34 unsigned short sll_hatype;
35 unsigned char sll_pkttype;
36 unsigned char sll_halen;
37 unsigned char sll_addr[8];
38/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
39};
40#define PACKET_HOST 0
41#define PACKET_BROADCAST 1
42#define PACKET_MULTICAST 2
43/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
44#define PACKET_OTHERHOST 3
45#define PACKET_OUTGOING 4
46#define PACKET_LOOPBACK 5
Christopher Ferris38062f92014-07-09 15:33:25 -070047#define PACKET_USER 6
Ben Cheng655a7c02013-10-16 16:09:24 -070048/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferris38062f92014-07-09 15:33:25 -070049#define PACKET_KERNEL 7
50#define PACKET_FASTROUTE 6
Ben Cheng655a7c02013-10-16 16:09:24 -070051#define PACKET_ADD_MEMBERSHIP 1
52#define PACKET_DROP_MEMBERSHIP 2
Christopher Ferris38062f92014-07-09 15:33:25 -070053/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -070054#define PACKET_RECV_OUTPUT 3
55#define PACKET_RX_RING 5
Ben Cheng655a7c02013-10-16 16:09:24 -070056#define PACKET_STATISTICS 6
57#define PACKET_COPY_THRESH 7
Christopher Ferris38062f92014-07-09 15:33:25 -070058/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -070059#define PACKET_AUXDATA 8
60#define PACKET_ORIGDEV 9
Ben Cheng655a7c02013-10-16 16:09:24 -070061#define PACKET_VERSION 10
62#define PACKET_HDRLEN 11
Christopher Ferris38062f92014-07-09 15:33:25 -070063/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -070064#define PACKET_RESERVE 12
65#define PACKET_TX_RING 13
Ben Cheng655a7c02013-10-16 16:09:24 -070066#define PACKET_LOSS 14
67#define PACKET_VNET_HDR 15
Christopher Ferris38062f92014-07-09 15:33:25 -070068/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -070069#define PACKET_TX_TIMESTAMP 16
70#define PACKET_TIMESTAMP 17
Ben Cheng655a7c02013-10-16 16:09:24 -070071#define PACKET_FANOUT 18
72#define PACKET_TX_HAS_OFF 19
Christopher Ferris38062f92014-07-09 15:33:25 -070073/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
74#define PACKET_QDISC_BYPASS 20
Ben Cheng655a7c02013-10-16 16:09:24 -070075#define PACKET_FANOUT_HASH 0
76#define PACKET_FANOUT_LB 1
Ben Cheng655a7c02013-10-16 16:09:24 -070077#define PACKET_FANOUT_CPU 2
Ben Cheng655a7c02013-10-16 16:09:24 -070078/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferris38062f92014-07-09 15:33:25 -070079#define PACKET_FANOUT_ROLLOVER 3
80#define PACKET_FANOUT_RND 4
81#define PACKET_FANOUT_QM 5
82#define PACKET_FANOUT_FLAG_ROLLOVER 0x1000
83/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
84#define PACKET_FANOUT_FLAG_DEFRAG 0x8000
Ben Cheng655a7c02013-10-16 16:09:24 -070085struct tpacket_stats {
86 unsigned int tp_packets;
87 unsigned int tp_drops;
Ben Cheng655a7c02013-10-16 16:09:24 -070088/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferris38062f92014-07-09 15:33:25 -070089};
Ben Cheng655a7c02013-10-16 16:09:24 -070090struct tpacket_stats_v3 {
91 unsigned int tp_packets;
92 unsigned int tp_drops;
Ben Cheng655a7c02013-10-16 16:09:24 -070093/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferris38062f92014-07-09 15:33:25 -070094 unsigned int tp_freeze_q_cnt;
Ben Cheng655a7c02013-10-16 16:09:24 -070095};
96union tpacket_stats_u {
97 struct tpacket_stats stats1;
Ben Cheng655a7c02013-10-16 16:09:24 -070098/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferris38062f92014-07-09 15:33:25 -070099 struct tpacket_stats_v3 stats3;
Ben Cheng655a7c02013-10-16 16:09:24 -0700100};
101struct tpacket_auxdata {
102 __u32 tp_status;
Ben Cheng655a7c02013-10-16 16:09:24 -0700103/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferris38062f92014-07-09 15:33:25 -0700104 __u32 tp_len;
Ben Cheng655a7c02013-10-16 16:09:24 -0700105 __u32 tp_snaplen;
106 __u16 tp_mac;
107 __u16 tp_net;
Ben Cheng655a7c02013-10-16 16:09:24 -0700108/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferris38062f92014-07-09 15:33:25 -0700109 __u16 tp_vlan_tci;
110 __u16 tp_vlan_tpid;
Ben Cheng655a7c02013-10-16 16:09:24 -0700111};
112#define TP_STATUS_KERNEL 0
Ben Cheng655a7c02013-10-16 16:09:24 -0700113/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferris38062f92014-07-09 15:33:25 -0700114#define TP_STATUS_USER (1 << 0)
Ben Cheng655a7c02013-10-16 16:09:24 -0700115#define TP_STATUS_COPY (1 << 1)
116#define TP_STATUS_LOSING (1 << 2)
117#define TP_STATUS_CSUMNOTREADY (1 << 3)
Ben Cheng655a7c02013-10-16 16:09:24 -0700118/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferris38062f92014-07-09 15:33:25 -0700119#define TP_STATUS_VLAN_VALID (1 << 4)
Ben Cheng655a7c02013-10-16 16:09:24 -0700120#define TP_STATUS_BLK_TMO (1 << 5)
Christopher Ferris38062f92014-07-09 15:33:25 -0700121#define TP_STATUS_VLAN_TPID_VALID (1 << 6)
Ben Cheng655a7c02013-10-16 16:09:24 -0700122#define TP_STATUS_AVAILABLE 0
Christopher Ferris38062f92014-07-09 15:33:25 -0700123/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700124#define TP_STATUS_SEND_REQUEST (1 << 0)
125#define TP_STATUS_SENDING (1 << 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700126#define TP_STATUS_WRONG_FORMAT (1 << 2)
127#define TP_STATUS_TS_SOFTWARE (1 << 29)
Christopher Ferris38062f92014-07-09 15:33:25 -0700128/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700129#define TP_STATUS_TS_SYS_HARDWARE (1 << 30)
130#define TP_STATUS_TS_RAW_HARDWARE (1 << 31)
Ben Cheng655a7c02013-10-16 16:09:24 -0700131#define TP_FT_REQ_FILL_RXHASH 0x1
132struct tpacket_hdr {
Christopher Ferris38062f92014-07-09 15:33:25 -0700133/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700134 unsigned long tp_status;
135 unsigned int tp_len;
Ben Cheng655a7c02013-10-16 16:09:24 -0700136 unsigned int tp_snaplen;
137 unsigned short tp_mac;
Christopher Ferris38062f92014-07-09 15:33:25 -0700138/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700139 unsigned short tp_net;
140 unsigned int tp_sec;
Ben Cheng655a7c02013-10-16 16:09:24 -0700141 unsigned int tp_usec;
142};
Christopher Ferris38062f92014-07-09 15:33:25 -0700143/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700144#define TPACKET_ALIGNMENT 16
145#define TPACKET_ALIGN(x) (((x)+TPACKET_ALIGNMENT-1)&~(TPACKET_ALIGNMENT-1))
Ben Cheng655a7c02013-10-16 16:09:24 -0700146#define TPACKET_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))
147struct tpacket2_hdr {
Christopher Ferris38062f92014-07-09 15:33:25 -0700148/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700149 __u32 tp_status;
150 __u32 tp_len;
Ben Cheng655a7c02013-10-16 16:09:24 -0700151 __u32 tp_snaplen;
152 __u16 tp_mac;
Christopher Ferris38062f92014-07-09 15:33:25 -0700153/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700154 __u16 tp_net;
155 __u32 tp_sec;
Ben Cheng655a7c02013-10-16 16:09:24 -0700156 __u32 tp_nsec;
157 __u16 tp_vlan_tci;
Ben Cheng655a7c02013-10-16 16:09:24 -0700158/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferris38062f92014-07-09 15:33:25 -0700159 __u16 tp_vlan_tpid;
160 __u8 tp_padding[4];
161};
Ben Cheng655a7c02013-10-16 16:09:24 -0700162struct tpacket_hdr_variant1 {
Christopher Ferris38062f92014-07-09 15:33:25 -0700163/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700164 __u32 tp_rxhash;
165 __u32 tp_vlan_tci;
Christopher Ferris38062f92014-07-09 15:33:25 -0700166 __u16 tp_vlan_tpid;
167 __u16 tp_padding;
Ben Cheng655a7c02013-10-16 16:09:24 -0700168/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferris38062f92014-07-09 15:33:25 -0700169};
Ben Cheng655a7c02013-10-16 16:09:24 -0700170struct tpacket3_hdr {
171 __u32 tp_next_offset;
172 __u32 tp_sec;
Ben Cheng655a7c02013-10-16 16:09:24 -0700173/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferris38062f92014-07-09 15:33:25 -0700174 __u32 tp_nsec;
Ben Cheng655a7c02013-10-16 16:09:24 -0700175 __u32 tp_snaplen;
176 __u32 tp_len;
177 __u32 tp_status;
Ben Cheng655a7c02013-10-16 16:09:24 -0700178/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferris38062f92014-07-09 15:33:25 -0700179 __u16 tp_mac;
Ben Cheng655a7c02013-10-16 16:09:24 -0700180 __u16 tp_net;
181 union {
182 struct tpacket_hdr_variant1 hv1;
Ben Cheng655a7c02013-10-16 16:09:24 -0700183/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Christopher Ferris38062f92014-07-09 15:33:25 -0700184 };
185 __u8 tp_padding[8];
Ben Cheng655a7c02013-10-16 16:09:24 -0700186};
187struct tpacket_bd_ts {
Christopher Ferris38062f92014-07-09 15:33:25 -0700188/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700189 unsigned int ts_sec;
190 union {
Ben Cheng655a7c02013-10-16 16:09:24 -0700191 unsigned int ts_usec;
192 unsigned int ts_nsec;
Christopher Ferris38062f92014-07-09 15:33:25 -0700193/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700194 };
195};
Ben Cheng655a7c02013-10-16 16:09:24 -0700196struct tpacket_hdr_v1 {
197 __u32 block_status;
Christopher Ferris38062f92014-07-09 15:33:25 -0700198/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700199 __u32 num_pkts;
200 __u32 offset_to_first_pkt;
Ben Cheng655a7c02013-10-16 16:09:24 -0700201 __u32 blk_len;
202 __aligned_u64 seq_num;
Christopher Ferris38062f92014-07-09 15:33:25 -0700203/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700204 struct tpacket_bd_ts ts_first_pkt, ts_last_pkt;
205};
Ben Cheng655a7c02013-10-16 16:09:24 -0700206union tpacket_bd_header_u {
207 struct tpacket_hdr_v1 bh1;
Christopher Ferris38062f92014-07-09 15:33:25 -0700208/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700209};
210struct tpacket_block_desc {
Ben Cheng655a7c02013-10-16 16:09:24 -0700211 __u32 version;
212 __u32 offset_to_priv;
Christopher Ferris38062f92014-07-09 15:33:25 -0700213/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700214 union tpacket_bd_header_u hdr;
215};
Ben Cheng655a7c02013-10-16 16:09:24 -0700216#define TPACKET2_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket2_hdr)) + sizeof(struct sockaddr_ll))
217#define TPACKET3_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket3_hdr)) + sizeof(struct sockaddr_ll))
Christopher Ferris38062f92014-07-09 15:33:25 -0700218/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700219enum tpacket_versions {
220 TPACKET_V1,
Ben Cheng655a7c02013-10-16 16:09:24 -0700221 TPACKET_V2,
222 TPACKET_V3
Christopher Ferris38062f92014-07-09 15:33:25 -0700223/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700224};
225struct tpacket_req {
Ben Cheng655a7c02013-10-16 16:09:24 -0700226 unsigned int tp_block_size;
227 unsigned int tp_block_nr;
Christopher Ferris38062f92014-07-09 15:33:25 -0700228/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700229 unsigned int tp_frame_size;
230 unsigned int tp_frame_nr;
Ben Cheng655a7c02013-10-16 16:09:24 -0700231};
232struct tpacket_req3 {
Christopher Ferris38062f92014-07-09 15:33:25 -0700233/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700234 unsigned int tp_block_size;
235 unsigned int tp_block_nr;
Ben Cheng655a7c02013-10-16 16:09:24 -0700236 unsigned int tp_frame_size;
237 unsigned int tp_frame_nr;
Christopher Ferris38062f92014-07-09 15:33:25 -0700238/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700239 unsigned int tp_retire_blk_tov;
240 unsigned int tp_sizeof_priv;
Ben Cheng655a7c02013-10-16 16:09:24 -0700241 unsigned int tp_feature_req_word;
242};
Christopher Ferris38062f92014-07-09 15:33:25 -0700243/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700244union tpacket_req_u {
245 struct tpacket_req req;
Ben Cheng655a7c02013-10-16 16:09:24 -0700246 struct tpacket_req3 req3;
247};
Christopher Ferris38062f92014-07-09 15:33:25 -0700248/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700249struct packet_mreq {
250 int mr_ifindex;
Ben Cheng655a7c02013-10-16 16:09:24 -0700251 unsigned short mr_type;
252 unsigned short mr_alen;
Christopher Ferris38062f92014-07-09 15:33:25 -0700253/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700254 unsigned char mr_address[8];
255};
Ben Cheng655a7c02013-10-16 16:09:24 -0700256#define PACKET_MR_MULTICAST 0
257#define PACKET_MR_PROMISC 1
Christopher Ferris38062f92014-07-09 15:33:25 -0700258/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
Ben Cheng655a7c02013-10-16 16:09:24 -0700259#define PACKET_MR_ALLMULTI 2
260#define PACKET_MR_UNICAST 3
Ben Cheng655a7c02013-10-16 16:09:24 -0700261#endif