什么时候在BPF(伯克利包过滤器)或tcpdump中使用内存暂存空间15?

什么时候在BPF(伯克利包过滤器)或tcpdump中使用内存暂存空间15?

问题描述:

我的问题是关于tcpdump命令.. 命令“tcpdump -i eth1 -d”列出了过滤器中涉及的汇编指令.. 我很好奇,看到没有指令正在访问M [15](内存槽15)。什么时候在BPF(伯克利包过滤器)或tcpdump中使用内存暂存空间15?

有人可以告诉我,是否有任何使用此内存插槽的过滤器? 它是什么保留,它是如何使用?

内存插槽未分配给特定用途;他们根据需要动态分配pcap_compile()

对于大多数网络类型的大多数过滤器,pcap_compile()的优化器将删除所有内存插槽的使用,或者至少减少它们,以便代码不需要16个内存插槽。

对于802.11(在监视模式下看到的原生802.11,不是在监视模式下获得的“假以太网”),优化器目前不使用(它是围绕不适用于处理802.11所需的更复杂决策以及解决这个问题是一个大项目),所以你会看到更多的存储位置。但是,您可能需要复杂的过滤器才能使用M [15] - 或M [14]或M [13]或大部分较低地址的内存位置。

(您也可以使用-O选项运行tcpdump来禁用优化程序。)