~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/uapi/linux/if_packet.h

Version: ~ [ linux-5.14-rc3 ] ~ [ linux-5.13.5 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.53 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.135 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.198 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.240 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.276 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.276 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.18.140 ] ~ [ linux-3.16.85 ] ~ [ linux-3.14.79 ] ~ [ linux-3.12.74 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/uapi/linux/if_packet.h (Version linux-4.7.10) and /include/uapi/linux/if_packet.h (Version ccs-tools-1.8.5)


  1 #ifndef __LINUX_IF_PACKET_H                         1 
  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                 
 25 #define PACKET_BROADCAST        1                 
 26 #define PACKET_MULTICAST        2                 
 27 #define PACKET_OTHERHOST        3                 
 28 #define PACKET_OUTGOING         4                 
 29 #define PACKET_LOOPBACK         5                 
 30 #define PACKET_USER             6                 
 31 #define PACKET_KERNEL           7                 
 32 /* Unused, PACKET_FASTROUTE and PACKET_LOOPBAC    
 33 #define PACKET_FASTROUTE        6                 
 34                                                   
 35 /* Packet socket options */                       
 36                                                   
 37 #define PACKET_ADD_MEMBERSHIP           1         
 38 #define PACKET_DROP_MEMBERSHIP          2         
 39 #define PACKET_RECV_OUTPUT              3         
 40 /* Value 4 is still used by obsolete turbo-pac    
 41 #define PACKET_RX_RING                  5         
 42 #define PACKET_STATISTICS               6         
 43 #define PACKET_COPY_THRESH              7         
 44 #define PACKET_AUXDATA                  8         
 45 #define PACKET_ORIGDEV                  9         
 46 #define PACKET_VERSION                  10        
 47 #define PACKET_HDRLEN                   11        
 48 #define PACKET_RESERVE                  12        
 49 #define PACKET_TX_RING                  13        
 50 #define PACKET_LOSS                     14        
 51 #define PACKET_VNET_HDR                 15        
 52 #define PACKET_TX_TIMESTAMP             16        
 53 #define PACKET_TIMESTAMP                17        
 54 #define PACKET_FANOUT                   18        
 55 #define PACKET_TX_HAS_OFF               19        
 56 #define PACKET_QDISC_BYPASS             20        
 57 #define PACKET_ROLLOVER_STATS           21        
 58 #define PACKET_FANOUT_DATA              22        
 59                                                   
 60 #define PACKET_FANOUT_HASH              0         
 61 #define PACKET_FANOUT_LB                1         
 62 #define PACKET_FANOUT_CPU               2         
 63 #define PACKET_FANOUT_ROLLOVER          3         
 64 #define PACKET_FANOUT_RND               4         
 65 #define PACKET_FANOUT_QM                5         
 66 #define PACKET_FANOUT_CBPF              6         
 67 #define PACKET_FANOUT_EBPF              7         
 68 #define PACKET_FANOUT_FLAG_ROLLOVER     0x1000    
 69 #define PACKET_FANOUT_FLAG_DEFRAG       0x8000    
 70                                                   
 71 struct tpacket_stats {                            
 72         unsigned int    tp_packets;               
 73         unsigned int    tp_drops;                 
 74 };                                                
 75                                                   
 76 struct tpacket_stats_v3 {                         
 77         unsigned int    tp_packets;               
 78         unsigned int    tp_drops;                 
 79         unsigned int    tp_freeze_q_cnt;          
 80 };                                                
 81                                                   
 82 struct tpacket_rollover_stats {                   
 83         __aligned_u64   tp_all;                   
 84         __aligned_u64   tp_huge;                  
 85         __aligned_u64   tp_failed;                
 86 };                                                
 87                                                   
 88 union tpacket_stats_u {                           
 89         struct tpacket_stats stats1;              
 90         struct tpacket_stats_v3 stats3;           
 91 };                                                
 92                                                   
 93 struct tpacket_auxdata {                          
 94         __u32           tp_status;                
 95         __u32           tp_len;                   
 96         __u32           tp_snaplen;               
 97         __u16           tp_mac;                   
 98         __u16           tp_net;                   
 99         __u16           tp_vlan_tci;              
100         __u16           tp_vlan_tpid;             
101 };                                                
102                                                   
103 /* Rx ring - header status */                     
104 #define TP_STATUS_KERNEL                          
105 #define TP_STATUS_USER                  (1 <<     
106 #define TP_STATUS_COPY                  (1 <<     
107 #define TP_STATUS_LOSING                (1 <<     
108 #define TP_STATUS_CSUMNOTREADY          (1 <<     
109 #define TP_STATUS_VLAN_VALID            (1 <<     
110 #define TP_STATUS_BLK_TMO               (1 <<     
111 #define TP_STATUS_VLAN_TPID_VALID       (1 <<     
112 #define TP_STATUS_CSUM_VALID            (1 <<     
113                                                   
114 /* Tx ring - header status */                     
115 #define TP_STATUS_AVAILABLE           0           
116 #define TP_STATUS_SEND_REQUEST  (1 << 0)          
117 #define TP_STATUS_SENDING       (1 << 1)          
118 #define TP_STATUS_WRONG_FORMAT  (1 << 2)          
119                                                   
120 /* Rx and Tx ring - header status */              
121 #define TP_STATUS_TS_SOFTWARE           (1 <<     
122 #define TP_STATUS_TS_SYS_HARDWARE       (1 <<     
123 #define TP_STATUS_TS_RAW_HARDWARE       (1 <<     
124                                                   
125 /* Rx ring - feature request bits */              
126 #define TP_FT_REQ_FILL_RXHASH   0x1               
127                                                   
128 struct tpacket_hdr {                              
129         unsigned long   tp_status;                
130         unsigned int    tp_len;                   
131         unsigned int    tp_snaplen;               
132         unsigned short  tp_mac;                   
133         unsigned short  tp_net;                   
134         unsigned int    tp_sec;                   
135         unsigned int    tp_usec;                  
136 };                                                
137                                                   
138 #define TPACKET_ALIGNMENT       16                
139 #define TPACKET_ALIGN(x)        (((x)+TPACKET_    
140 #define TPACKET_HDRLEN          (TPACKET_ALIGN    
141                                                   
142 struct tpacket2_hdr {                             
143         __u32           tp_status;                
144         __u32           tp_len;                   
145         __u32           tp_snaplen;               
146         __u16           tp_mac;                   
147         __u16           tp_net;                   
148         __u32           tp_sec;                   
149         __u32           tp_nsec;                  
150         __u16           tp_vlan_tci;              
151         __u16           tp_vlan_tpid;             
152         __u8            tp_padding[4];            
153 };                                                
154                                                   
155 struct tpacket_hdr_variant1 {                     
156         __u32   tp_rxhash;                        
157         __u32   tp_vlan_tci;                      
158         __u16   tp_vlan_tpid;                     
159         __u16   tp_padding;                       
160 };                                                
161                                                   
162 struct tpacket3_hdr {                             
163         __u32           tp_next_offset;           
164         __u32           tp_sec;                   
165         __u32           tp_nsec;                  
166         __u32           tp_snaplen;               
167         __u32           tp_len;                   
168         __u32           tp_status;                
169         __u16           tp_mac;                   
170         __u16           tp_net;                   
171         /* pkt_hdr variants */                    
172         union {                                   
173                 struct tpacket_hdr_variant1 hv    
174         };                                        
175         __u8            tp_padding[8];            
176 };                                                
177                                                   
178 struct tpacket_bd_ts {                            
179         unsigned int ts_sec;                      
180         union {                                   
181                 unsigned int ts_usec;             
182                 unsigned int ts_nsec;             
183         };                                        
184 };                                                
185                                                   
186 struct tpacket_hdr_v1 {                           
187         __u32   block_status;                     
188         __u32   num_pkts;                         
189         __u32   offset_to_first_pkt;              
190                                                   
191         /* Number of valid bytes (including pa    
192          * blk_len <= tp_block_size               
193          */                                       
194         __u32   blk_len;                          
195                                                   
196         /*                                        
197          * Quite a few uses of sequence number    
198          * 1. Make sure cache flush etc worked    
199          *    Well, one can argue - why not us    
200          *    But look at 2. below first.         
201          * 2. When you pass around blocks to o    
202          *    you can see which blk[s] is[are]    
203          * 3. Validate kernel code.               
204          */                                       
205         __aligned_u64   seq_num;                  
206                                                   
207         /*                                        
208          * ts_last_pkt:                           
209          *                                        
210          * Case 1.      Block has 'N'(N >=1) p    
211          *              ts_last_pkt == 'time-s    
212          *              time when the timer fi    
213          *              By providing the ts of    
214          *              guarantee that time-st    
215          *              next block will never     
216          *              previous block.           
217          * Case 2.      Block has zero packets    
218          *              ts_last_pkt = time whe    
219          *              was closed.               
220          * Case 3.      Block has 'N' packets     
221          *              ts_last_pkt = time-sta    
222          *                                        
223          * ts_first_pkt:                          
224          *              Is always the time-sta    
225          *              Case a) ZERO packets      
226          *                      No packets to     
227          *                      time-interval     
228          *              Case b) Non-zero packe    
229          *                      Use the ts of     
230          *                                        
231          */                                       
232         struct tpacket_bd_ts    ts_first_pkt,     
233 };                                                
234                                                   
235 union tpacket_bd_header_u {                       
236         struct tpacket_hdr_v1 bh1;                
237 };                                                
238                                                   
239 struct tpacket_block_desc {                       
240         __u32 version;                            
241         __u32 offset_to_priv;                     
242         union tpacket_bd_header_u hdr;            
243 };                                                
244                                                   
245 #define TPACKET2_HDRLEN         (TPACKET_ALIGN    
246 #define TPACKET3_HDRLEN         (TPACKET_ALIGN    
247                                                   
248 enum tpacket_versions {                           
249         TPACKET_V1,                               
250         TPACKET_V2,                               
251         TPACKET_V3                                
252 };                                                
253                                                   
254 /*                                                
255    Frame structure:                               
256                                                   
257    - Start. Frame must be aligned to TPACKET_A    
258    - struct tpacket_hdr                           
259    - pad to TPACKET_ALIGNMENT=16                  
260    - struct sockaddr_ll                           
261    - Gap, chosen so that packet data (Start+tp    
262    - Start+tp_mac: [ Optional MAC header ]        
263    - Start+tp_net: Packet data, aligned to TPA    
264    - Pad to align to TPACKET_ALIGNMENT=16         
265  */                                               
266                                                   
267 struct tpacket_req {                              
268         unsigned int    tp_block_size;  /* Min    
269         unsigned int    tp_block_nr;    /* Num    
270         unsigned int    tp_frame_size;  /* Siz    
271         unsigned int    tp_frame_nr;    /* Tot    
272 };                                                
273                                                   
274 struct tpacket_req3 {                             
275         unsigned int    tp_block_size;  /* Min    
276         unsigned int    tp_block_nr;    /* Num    
277         unsigned int    tp_frame_size;  /* Siz    
278         unsigned int    tp_frame_nr;    /* Tot    
279         unsigned int    tp_retire_blk_tov; /*     
280         unsigned int    tp_sizeof_priv; /* off    
281         unsigned int    tp_feature_req_word;      
282 };                                                
283                                                   
284 union tpacket_req_u {                             
285         struct tpacket_req      req;              
286         struct tpacket_req3     req3;             
287 };                                                
288                                                   
289 struct packet_mreq {                              
290         int             mr_ifindex;               
291         unsigned short  mr_type;                  
292         unsigned short  mr_alen;                  
293         unsigned char   mr_address[8];            
294 };                                                
295                                                   
296 #define PACKET_MR_MULTICAST     0                 
297 #define PACKET_MR_PROMISC       1                 
298 #define PACKET_MR_ALLMULTI      2                 
299 #define PACKET_MR_UNICAST       3                 
300                                                   
301 #endif                                            
302                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp