if_packet.h revision 38062f954c637861348dd8078cefb73554e6f12c
1/****************************************************************************
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
47#define PACKET_USER 6
48/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
49#define PACKET_KERNEL 7
50#define PACKET_FASTROUTE 6
51#define PACKET_ADD_MEMBERSHIP 1
52#define PACKET_DROP_MEMBERSHIP 2
53/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
54#define PACKET_RECV_OUTPUT 3
55#define PACKET_RX_RING 5
56#define PACKET_STATISTICS 6
57#define PACKET_COPY_THRESH 7
58/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
59#define PACKET_AUXDATA 8
60#define PACKET_ORIGDEV 9
61#define PACKET_VERSION 10
62#define PACKET_HDRLEN 11
63/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
64#define PACKET_RESERVE 12
65#define PACKET_TX_RING 13
66#define PACKET_LOSS 14
67#define PACKET_VNET_HDR 15
68/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
69#define PACKET_TX_TIMESTAMP 16
70#define PACKET_TIMESTAMP 17
71#define PACKET_FANOUT 18
72#define PACKET_TX_HAS_OFF 19
73/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
74#define PACKET_QDISC_BYPASS 20
75#define PACKET_FANOUT_HASH 0
76#define PACKET_FANOUT_LB 1
77#define PACKET_FANOUT_CPU 2
78/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
79#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
85struct tpacket_stats {
86 unsigned int tp_packets;
87 unsigned int tp_drops;
88/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
89};
90struct tpacket_stats_v3 {
91 unsigned int tp_packets;
92 unsigned int tp_drops;
93/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
94 unsigned int tp_freeze_q_cnt;
95};
96union tpacket_stats_u {
97 struct tpacket_stats stats1;
98/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
99 struct tpacket_stats_v3 stats3;
100};
101struct tpacket_auxdata {
102 __u32 tp_status;
103/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
104 __u32 tp_len;
105 __u32 tp_snaplen;
106 __u16 tp_mac;
107 __u16 tp_net;
108/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
109 __u16 tp_vlan_tci;
110 __u16 tp_vlan_tpid;
111};
112#define TP_STATUS_KERNEL 0
113/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
114#define TP_STATUS_USER (1 << 0)
115#define TP_STATUS_COPY (1 << 1)
116#define TP_STATUS_LOSING (1 << 2)
117#define TP_STATUS_CSUMNOTREADY (1 << 3)
118/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
119#define TP_STATUS_VLAN_VALID (1 << 4)
120#define TP_STATUS_BLK_TMO (1 << 5)
121#define TP_STATUS_VLAN_TPID_VALID (1 << 6)
122#define TP_STATUS_AVAILABLE 0
123/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
124#define TP_STATUS_SEND_REQUEST (1 << 0)
125#define TP_STATUS_SENDING (1 << 1)
126#define TP_STATUS_WRONG_FORMAT (1 << 2)
127#define TP_STATUS_TS_SOFTWARE (1 << 29)
128/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
129#define TP_STATUS_TS_SYS_HARDWARE (1 << 30)
130#define TP_STATUS_TS_RAW_HARDWARE (1 << 31)
131#define TP_FT_REQ_FILL_RXHASH 0x1
132struct tpacket_hdr {
133/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
134 unsigned long tp_status;
135 unsigned int tp_len;
136 unsigned int tp_snaplen;
137 unsigned short tp_mac;
138/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
139 unsigned short tp_net;
140 unsigned int tp_sec;
141 unsigned int tp_usec;
142};
143/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
144#define TPACKET_ALIGNMENT 16
145#define TPACKET_ALIGN(x) (((x)+TPACKET_ALIGNMENT-1)&~(TPACKET_ALIGNMENT-1))
146#define TPACKET_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))
147struct tpacket2_hdr {
148/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
149 __u32 tp_status;
150 __u32 tp_len;
151 __u32 tp_snaplen;
152 __u16 tp_mac;
153/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
154 __u16 tp_net;
155 __u32 tp_sec;
156 __u32 tp_nsec;
157 __u16 tp_vlan_tci;
158/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
159 __u16 tp_vlan_tpid;
160 __u8 tp_padding[4];
161};
162struct tpacket_hdr_variant1 {
163/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
164 __u32 tp_rxhash;
165 __u32 tp_vlan_tci;
166 __u16 tp_vlan_tpid;
167 __u16 tp_padding;
168/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
169};
170struct tpacket3_hdr {
171 __u32 tp_next_offset;
172 __u32 tp_sec;
173/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
174 __u32 tp_nsec;
175 __u32 tp_snaplen;
176 __u32 tp_len;
177 __u32 tp_status;
178/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
179 __u16 tp_mac;
180 __u16 tp_net;
181 union {
182 struct tpacket_hdr_variant1 hv1;
183/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
184 };
185 __u8 tp_padding[8];
186};
187struct tpacket_bd_ts {
188/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
189 unsigned int ts_sec;
190 union {
191 unsigned int ts_usec;
192 unsigned int ts_nsec;
193/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
194 };
195};
196struct tpacket_hdr_v1 {
197 __u32 block_status;
198/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
199 __u32 num_pkts;
200 __u32 offset_to_first_pkt;
201 __u32 blk_len;
202 __aligned_u64 seq_num;
203/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
204 struct tpacket_bd_ts ts_first_pkt, ts_last_pkt;
205};
206union tpacket_bd_header_u {
207 struct tpacket_hdr_v1 bh1;
208/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
209};
210struct tpacket_block_desc {
211 __u32 version;
212 __u32 offset_to_priv;
213/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
214 union tpacket_bd_header_u hdr;
215};
216#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))
218/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
219enum tpacket_versions {
220 TPACKET_V1,
221 TPACKET_V2,
222 TPACKET_V3
223/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
224};
225struct tpacket_req {
226 unsigned int tp_block_size;
227 unsigned int tp_block_nr;
228/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
229 unsigned int tp_frame_size;
230 unsigned int tp_frame_nr;
231};
232struct tpacket_req3 {
233/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
234 unsigned int tp_block_size;
235 unsigned int tp_block_nr;
236 unsigned int tp_frame_size;
237 unsigned int tp_frame_nr;
238/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
239 unsigned int tp_retire_blk_tov;
240 unsigned int tp_sizeof_priv;
241 unsigned int tp_feature_req_word;
242};
243/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
244union tpacket_req_u {
245 struct tpacket_req req;
246 struct tpacket_req3 req3;
247};
248/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
249struct packet_mreq {
250 int mr_ifindex;
251 unsigned short mr_type;
252 unsigned short mr_alen;
253/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
254 unsigned char mr_address[8];
255};
256#define PACKET_MR_MULTICAST 0
257#define PACKET_MR_PROMISC 1
258/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
259#define PACKET_MR_ALLMULTI 2
260#define PACKET_MR_UNICAST 3
261#endif
262