📄 if_packet.h
字号:
#ifndef __LINUX_IF_PACKET_H#define __LINUX_IF_PACKET_Hstruct sockaddr_pkt{ unsigned short spkt_family; unsigned char spkt_device[14]; unsigned short spkt_protocol;};struct sockaddr_ll{ unsigned short sll_family; unsigned short sll_protocol; int sll_ifindex; unsigned short sll_hatype; unsigned char sll_pkttype; unsigned char sll_halen; unsigned char sll_addr[8];};/* Packet types */#define PACKET_HOST 0 /* To us */#define PACKET_BROADCAST 1 /* To all */#define PACKET_MULTICAST 2 /* To group */#define PACKET_OTHERHOST 3 /* To someone else */#define PACKET_OUTGOING 4 /* Outgoing of any type *//* These ones are invisible by user level */#define PACKET_LOOPBACK 5 /* MC/BRD frame looped back */#define PACKET_FASTROUTE 6 /* Fastrouted frame *//* Packet socket options */#define PACKET_ADD_MEMBERSHIP 1#define PACKET_DROP_MEMBERSHIP 2#define PACKET_RECV_OUTPUT 3/* Value 4 is still used by obsolete turbo-packet. */#define PACKET_RX_RING 5#define PACKET_STATISTICS 6#define PACKET_COPY_THRESH 7struct tpacket_stats{ unsigned int tp_packets; unsigned int tp_drops;};struct tpacket_hdr{ unsigned long tp_status;#define TP_STATUS_KERNEL 0#define TP_STATUS_USER 1#define TP_STATUS_COPY 2#define TP_STATUS_LOSING 4#define TP_STATUS_CSUMNOTREADY 8 unsigned int tp_len; unsigned int tp_snaplen; unsigned short tp_mac; unsigned short tp_net; unsigned int tp_sec; unsigned int tp_usec;};#define TPACKET_ALIGNMENT 16#define TPACKET_ALIGN(x) (((x)+TPACKET_ALIGNMENT-1)&~(TPACKET_ALIGNMENT-1))#define TPACKET_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))/* Frame structure: - Start. Frame must be aligned to TPACKET_ALIGNMENT=16 - struct tpacket_hdr - pad to TPACKET_ALIGNMENT=16 - struct sockaddr_ll - Gap, chosen so that packet data (Start+tp_net) alignes to TPACKET_ALIGNMENT=16 - Start+tp_mac: [ Optional MAC header ] - Start+tp_net: Packet data, aligned to TPACKET_ALIGNMENT=16. - Pad to align to TPACKET_ALIGNMENT=16 */struct tpacket_req{ unsigned int tp_block_size; /* Minimal size of contiguous block */ unsigned int tp_block_nr; /* Number of blocks */ unsigned int tp_frame_size; /* Size of frame */ unsigned int tp_frame_nr; /* Total number of frames */};struct packet_mreq{ int mr_ifindex; unsigned short mr_type; unsigned short mr_alen; unsigned char mr_address[8];};#define PACKET_MR_MULTICAST 0#define PACKET_MR_PROMISC 1#define PACKET_MR_ALLMULTI 2#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -