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