Root/
1 | #ifndef __LINUX_IF_PACKET_H |
2 | #define __LINUX_IF_PACKET_H |
3 | |
4 | #include <linux/types.h> |
5 | |
6 | struct sockaddr_pkt { |
7 | unsigned short spkt_family; |
8 | unsigned char spkt_device[14]; |
9 | __be16 spkt_protocol; |
10 | }; |
11 | |
12 | struct sockaddr_ll { |
13 | unsigned short sll_family; |
14 | __be16 sll_protocol; |
15 | int sll_ifindex; |
16 | unsigned short sll_hatype; |
17 | unsigned char sll_pkttype; |
18 | unsigned char sll_halen; |
19 | unsigned char sll_addr[8]; |
20 | }; |
21 | |
22 | /* Packet types */ |
23 | |
24 | #define PACKET_HOST 0 /* To us */ |
25 | #define PACKET_BROADCAST 1 /* To all */ |
26 | #define PACKET_MULTICAST 2 /* To group */ |
27 | #define PACKET_OTHERHOST 3 /* To someone else */ |
28 | #define PACKET_OUTGOING 4 /* Outgoing of any type */ |
29 | /* These ones are invisible by user level */ |
30 | #define PACKET_LOOPBACK 5 /* MC/BRD frame looped back */ |
31 | #define PACKET_FASTROUTE 6 /* Fastrouted frame */ |
32 | |
33 | /* Packet socket options */ |
34 | |
35 | #define PACKET_ADD_MEMBERSHIP 1 |
36 | #define PACKET_DROP_MEMBERSHIP 2 |
37 | #define PACKET_RECV_OUTPUT 3 |
38 | /* Value 4 is still used by obsolete turbo-packet. */ |
39 | #define PACKET_RX_RING 5 |
40 | #define PACKET_STATISTICS 6 |
41 | #define PACKET_COPY_THRESH 7 |
42 | #define PACKET_AUXDATA 8 |
43 | #define PACKET_ORIGDEV 9 |
44 | #define PACKET_VERSION 10 |
45 | #define PACKET_HDRLEN 11 |
46 | #define PACKET_RESERVE 12 |
47 | #define PACKET_TX_RING 13 |
48 | #define PACKET_LOSS 14 |
49 | #define PACKET_VNET_HDR 15 |
50 | #define PACKET_TX_TIMESTAMP 16 |
51 | #define PACKET_TIMESTAMP 17 |
52 | |
53 | struct tpacket_stats { |
54 | unsigned int tp_packets; |
55 | unsigned int tp_drops; |
56 | }; |
57 | |
58 | struct tpacket_auxdata { |
59 | __u32 tp_status; |
60 | __u32 tp_len; |
61 | __u32 tp_snaplen; |
62 | __u16 tp_mac; |
63 | __u16 tp_net; |
64 | __u16 tp_vlan_tci; |
65 | }; |
66 | |
67 | /* Rx ring - header status */ |
68 | #define TP_STATUS_KERNEL 0x0 |
69 | #define TP_STATUS_USER 0x1 |
70 | #define TP_STATUS_COPY 0x2 |
71 | #define TP_STATUS_LOSING 0x4 |
72 | #define TP_STATUS_CSUMNOTREADY 0x8 |
73 | |
74 | /* Tx ring - header status */ |
75 | #define TP_STATUS_AVAILABLE 0x0 |
76 | #define TP_STATUS_SEND_REQUEST 0x1 |
77 | #define TP_STATUS_SENDING 0x2 |
78 | #define TP_STATUS_WRONG_FORMAT 0x4 |
79 | |
80 | struct tpacket_hdr { |
81 | unsigned long tp_status; |
82 | unsigned int tp_len; |
83 | unsigned int tp_snaplen; |
84 | unsigned short tp_mac; |
85 | unsigned short tp_net; |
86 | unsigned int tp_sec; |
87 | unsigned int tp_usec; |
88 | }; |
89 | |
90 | #define TPACKET_ALIGNMENT 16 |
91 | #define TPACKET_ALIGN(x) (((x)+TPACKET_ALIGNMENT-1)&~(TPACKET_ALIGNMENT-1)) |
92 | #define TPACKET_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll)) |
93 | |
94 | struct tpacket2_hdr { |
95 | __u32 tp_status; |
96 | __u32 tp_len; |
97 | __u32 tp_snaplen; |
98 | __u16 tp_mac; |
99 | __u16 tp_net; |
100 | __u32 tp_sec; |
101 | __u32 tp_nsec; |
102 | __u16 tp_vlan_tci; |
103 | }; |
104 | |
105 | #define TPACKET2_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket2_hdr)) + sizeof(struct sockaddr_ll)) |
106 | |
107 | enum tpacket_versions { |
108 | TPACKET_V1, |
109 | TPACKET_V2, |
110 | }; |
111 | |
112 | /* |
113 | Frame structure: |
114 | |
115 | - Start. Frame must be aligned to TPACKET_ALIGNMENT=16 |
116 | - struct tpacket_hdr |
117 | - pad to TPACKET_ALIGNMENT=16 |
118 | - struct sockaddr_ll |
119 | - Gap, chosen so that packet data (Start+tp_net) alignes to TPACKET_ALIGNMENT=16 |
120 | - Start+tp_mac: [ Optional MAC header ] |
121 | - Start+tp_net: Packet data, aligned to TPACKET_ALIGNMENT=16. |
122 | - Pad to align to TPACKET_ALIGNMENT=16 |
123 | */ |
124 | |
125 | struct tpacket_req { |
126 | unsigned int tp_block_size; /* Minimal size of contiguous block */ |
127 | unsigned int tp_block_nr; /* Number of blocks */ |
128 | unsigned int tp_frame_size; /* Size of frame */ |
129 | unsigned int tp_frame_nr; /* Total number of frames */ |
130 | }; |
131 | |
132 | struct packet_mreq { |
133 | int mr_ifindex; |
134 | unsigned short mr_type; |
135 | unsigned short mr_alen; |
136 | unsigned char mr_address[8]; |
137 | }; |
138 | |
139 | #define PACKET_MR_MULTICAST 0 |
140 | #define PACKET_MR_PROMISC 1 |
141 | #define PACKET_MR_ALLMULTI 2 |
142 | #define PACKET_MR_UNICAST 3 |
143 | |
144 | #endif |
145 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9