source: svn/trunk/newcon3bcm2_21bu/toolchain/mips-linux-uclibc/include/linux/if_packet.h

Last change on this file was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 2.5 KB
Line 
1#ifndef __LINUX_IF_PACKET_H
2#define __LINUX_IF_PACKET_H
3
4struct sockaddr_pkt
5{
6        unsigned short spkt_family;
7        unsigned char spkt_device[14];
8        unsigned short spkt_protocol;
9};
10
11struct sockaddr_ll
12{
13        unsigned short  sll_family;
14        unsigned short  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
43struct tpacket_stats
44{
45        unsigned int    tp_packets;
46        unsigned int    tp_drops;
47};
48
49struct tpacket_hdr
50{
51        unsigned long   tp_status;
52#define TP_STATUS_KERNEL        0
53#define TP_STATUS_USER          1
54#define TP_STATUS_COPY          2
55#define TP_STATUS_LOSING        4
56#define TP_STATUS_CSUMNOTREADY  8
57        unsigned int    tp_len;
58        unsigned int    tp_snaplen;
59        unsigned short  tp_mac;
60        unsigned short  tp_net;
61        unsigned int    tp_sec;
62        unsigned int    tp_usec;
63};
64
65#define TPACKET_ALIGNMENT       16
66#define TPACKET_ALIGN(x)        (((x)+TPACKET_ALIGNMENT-1)&~(TPACKET_ALIGNMENT-1))
67#define TPACKET_HDRLEN          (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))
68
69/*
70   Frame structure:
71
72   - Start. Frame must be aligned to TPACKET_ALIGNMENT=16
73   - struct tpacket_hdr
74   - pad to TPACKET_ALIGNMENT=16
75   - struct sockaddr_ll
76   - Gap, chosen so that packet data (Start+tp_net) alignes to TPACKET_ALIGNMENT=16
77   - Start+tp_mac: [ Optional MAC header ]
78   - Start+tp_net: Packet data, aligned to TPACKET_ALIGNMENT=16.
79   - Pad to align to TPACKET_ALIGNMENT=16
80 */
81
82struct tpacket_req
83{
84        unsigned int    tp_block_size;  /* Minimal size of contiguous block */
85        unsigned int    tp_block_nr;    /* Number of blocks */
86        unsigned int    tp_frame_size;  /* Size of frame */
87        unsigned int    tp_frame_nr;    /* Total number of frames */
88};
89
90struct packet_mreq
91{
92        int             mr_ifindex;
93        unsigned short  mr_type;
94        unsigned short  mr_alen;
95        unsigned char   mr_address[8];
96};
97
98#define PACKET_MR_MULTICAST     0
99#define PACKET_MR_PROMISC       1
100#define PACKET_MR_ALLMULTI      2
101
102#endif
Note: See TracBrowser for help on using the repository browser.