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

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

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

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

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

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.