代码参考内核测试代码,mmap申请的内存保存真实的数据,另外申请一个struct iovec指针数组方便操作,指向tp_req。 参考 https://man7.org/linux/man-pages/man7/packet.7.htmlhttps://www.kernel.org/doc/Documentation/networking/packet_mmap.txthttps://csulrong.github.io/blogs/2022/03/10/linux-afpacket/https...
1.介绍 在linux中提供了PF_PACKET接口可以操作链路层的数据。 2.使用方法 定义一个pf_packet = socket(PF_SOCKET, SOCK_RAW, htons(ETH_P_RARP)); 就可以利用函数sendto和recefrom来读取和发送链路层的数据包了(当然,发送ARP包,上面第三个参数要变为 htons(ETH_P_ARP),或者IP的包为ETH_P_IP,可查看文件...
(err<0){perror("setsockopt");exit(1);}memset(&ring->req,0,sizeof(ring->req));ring->req.tp_block_size=blocksiz;ring->req.tp_frame_size=framesiz;ring->req.tp_block_nr=blocknum;ring->req.tp_frame_nr=(blocksiz*blocknum)/framesiz;ring->req.tp_retire_blk_tov=60;ring->req.tp_f...