【问题标题】:When is memory scratch space 15 used in BPF (Berkeley Packet Filter) or tcpdump?BPF(Berkeley Packet Filter)或tcpdump中什么时候使用内存暂存空间15?
【发布时间】:2016-03-03 12:40:51
【问题描述】:

我的问题是关于 tcpdump 命令的。 命令“tcpdump -i eth1 -d”列出了过滤器中涉及的汇编指令。 我很好奇没有指令正在访问 M[15](内存插槽 15)。

谁能告诉我,有没有使用这个内存插槽的过滤器? 它是为什么而保留的,它是如何使用的?

【问题讨论】:

    标签: tcpdump wifi bpf


    【解决方案1】:

    内存槽不分配给特定用途;它们由pcap_compile() 根据需要动态分配。

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

    对于 802.11(您在监控模式下看到的本机 802.11,而不是您在不处于监控模式时获得的“假以太网”),当前未使用优化器(它是围绕不适用于更多的假设而设计的处理 802.11 所需的复杂决策,修复它是一个大项目),因此您会看到更多使用内存位置。但是,您可能需要一个非常复杂的过滤器来使用 M[15] - 或 M[14] 或 M[13] 或大部分低地址内存位置。

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

    【讨论】:

      猜你喜欢
      • 2015-01-08
      • 1970-01-01
      • 2018-05-11
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      相关资源
      最近更新 更多