• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  ****************************************************************************
11  ****************************************************************************/
12 #ifndef __LINUX_IF_PACKET_H
13 #define __LINUX_IF_PACKET_H
14 
15 struct sockaddr_pkt
16 {
17  unsigned short spkt_family;
18  unsigned char spkt_device[14];
19  unsigned short spkt_protocol;
20 };
21 
22 struct sockaddr_ll
23 {
24  unsigned short sll_family;
25  unsigned short sll_protocol;
26  int sll_ifindex;
27  unsigned short sll_hatype;
28  unsigned char sll_pkttype;
29  unsigned char sll_halen;
30  unsigned char sll_addr[8];
31 };
32 
33 #define PACKET_HOST 0
34 #define PACKET_BROADCAST 1
35 #define PACKET_MULTICAST 2
36 #define PACKET_OTHERHOST 3
37 #define PACKET_OUTGOING 4
38 
39 #define PACKET_LOOPBACK 5
40 #define PACKET_FASTROUTE 6
41 
42 #define PACKET_ADD_MEMBERSHIP 1
43 #define PACKET_DROP_MEMBERSHIP 2
44 #define PACKET_RECV_OUTPUT 3
45 
46 #define PACKET_RX_RING 5
47 #define PACKET_STATISTICS 6
48 #define PACKET_COPY_THRESH 7
49 
50 struct tpacket_stats
51 {
52  unsigned int tp_packets;
53  unsigned int tp_drops;
54 };
55 
56 struct tpacket_hdr
57 {
58  unsigned long tp_status;
59 #define TP_STATUS_KERNEL 0
60 #define TP_STATUS_USER 1
61 #define TP_STATUS_COPY 2
62 #define TP_STATUS_LOSING 4
63 #define TP_STATUS_CSUMNOTREADY 8
64  unsigned int tp_len;
65  unsigned int tp_snaplen;
66  unsigned short tp_mac;
67  unsigned short tp_net;
68  unsigned int tp_sec;
69  unsigned int tp_usec;
70 };
71 
72 #define TPACKET_ALIGNMENT 16
73 #define TPACKET_ALIGN(x) (((x)+TPACKET_ALIGNMENT-1)&~(TPACKET_ALIGNMENT-1))
74 #define TPACKET_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))
75 
76 struct tpacket_req
77 {
78  unsigned int tp_block_size;
79  unsigned int tp_block_nr;
80  unsigned int tp_frame_size;
81  unsigned int tp_frame_nr;
82 };
83 
84 struct packet_mreq
85 {
86  int mr_ifindex;
87  unsigned short mr_type;
88  unsigned short mr_alen;
89  unsigned char mr_address[8];
90 };
91 
92 #define PACKET_MR_MULTICAST 0
93 #define PACKET_MR_PROMISC 1
94 #define PACKET_MR_ALLMULTI 2
95 
96 #endif
97