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