1。 从网上看到一些包过滤的代码,是通过tcpdump -dd 转换过来的,这个算一个方法。 2。 但是如果我想直接使用bpf的代码行不行呢? struct bpf_insn insns[] = { bpf_STMT(bpf_LD+bpf_H+bpf_ABS, 12), bpf_JUMP(bpf_JMP+bpf_JEQ+bpf_K, ETHERTYPE_IP, 0, 8), bpf_STMT(bpf_LD+bpf_W+bpf_ABS, 26), bpf_JUMP(bpf_JMP+bpf_JEQ+bpf_K, 0x8003700f, 0, 2), bpf_STMT(bpf_LD+bpf_W+bpf_A...
by rockcanon - Linux环境编程 - 2009-06-26 11:16:53 阅读(2680) 回复(3)
这个问题似乎问的有点奇怪~ 但是确实没搞明白 大多数介绍说的是PF_PACKET的套接字和bpf都是一种过滤器,但有的文献说的是可以把代码加进去,只是就那么一两句话,也不知道怎么用 希望知道的给解释下,尽量详细一点,或者给点资料什么的~ 不是很清楚的也可以来一起讨论下~ =============解决后,结果如下================ 答案是,可以在linux packet filter中应用bpf过滤规则~ 推荐一篇文章(英文):http://www.linuxjournal...
求教一些pfring的问题: 1、能否对一个网络接口多次使用pfring_open,即一个网卡对应多个ring_handle? 2、函数pfring_set_cluster,不知道这个函数具体用途是什么,cluster是什么意思? 我最终想实现的效果是这样,应用开若干个线程(个数任意),捕获任意个网络接口的数据包(比如服务器有三个网络接口eth0、eth1、eth2,我可以指定捕获eth0,或者捕获eth1+eth2的,或者eth0+eth1+eth2的),我还可以指定环数,且分到每个环的数据...
今天看libpcap代码,文章说bpf(bsd packet filter)不错,自己写了个sniff,不过pcap那一套毕竟要copy数据包,就算是mmap pcap也要copy一次,而netfilter不用copy数据包... 我想能不能把bpf搞到netfilter呢??如果是应用层的话可以实用setsockopt来做 if ( (sock=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP)))<0) { perror("socket"); exit(1); } /* Attach the filter to the socket */ i...
最近在使用零拷贝与应用层协议栈结合技术的研究,但是对pfring中的libzero API使用有一些疑惑。libzero中cluster组件对零拷贝及内存管理进行了优化。 在使用pfring_alloc_pkt_buf分配一个包缓存handle, pfring_recv_pkt_buff进行接收数据,pfring_send_pkt_buff进行发送数据。对于接收数据pfring 有自带的例程可以参考,但是对于发送例程中只是简单的接收后不做处理直接发送,不操作handle。 这里我需要发送自己的buf数据,但是不...
我现在正在研究libpcap1.2.1,但是有个问题比较困惑,是在所有的linux上都能使用bpf机制吗? 但是在编译源文件的时候,并没有编译pcap-bpf.c这个文件,有阅读过源代码的高手给点指点吗?
为了做到尽可能的灵活,这个过滤程序可以根据使用者的定义来运行!这个程序是由一种名为bpf的伪机器码写成的。bpf看上去很象带着一对寄存器和保存值的汇编语言,完成数学运算和条件分支程序!过滤程序检查每个包,BP进程操作的内存空间包含着报文数据!过滤的结果是一个整数,指出有多少字节的报文需要送到应用层。这是一个更进一步的优点,因为我们一般只对报文的前面几个字节感兴趣,这样可以避免复制过量的数据以节省进程时间...