我该如何告诉libpcap的V1.6.2存储纳秒值struct pcap_pkthdr::ts.tv_usec
(而不是微秒值)捕捉现场数据包时?
(注:这个问题是类似于如何捕捉libpcap的活包时启用纳秒分辨率?但这个问题是含糊不清,以至于我决定提出新问题。)
对于离线和“死”捕获,以下功能可以用来告诉libpcap的填充struct pcap_pkthdr
的ts.tv_usec
纳秒值的成员:
-
pcap_open_dead_with_tstamp_precision()
-
pcap_open_offline_with_tstamp_precision()
-
pcap_fopen_offline_with_tstamp_precision()
遗憾的是,似乎没有要_with_tstamp_precision
的变种pcap_open_live()
或pcap_create()
我相信,捕捉具有纳秒分辨率实况数据包应该是可能的,因为更新日志为V1.5.0说(重点煤矿):
添加拍摄时获得纳秒分辨率时间戳和读取捕捉文件的支持
我没有看到pcap_set_tstamp_type()
函数和pcap-tstamp
手册页 ,其中说:
PCAP_TSTAMP_HOST
-host
:通过在其上完成捕获主机提供时间戳。 这个时间戳的精度为未指定的; 它可能会或可能不会与主机操作系统的时钟同步。PCAP_TSTAMP_HOST_LOWPREC
-host_lowprec
:通过在其上完成捕获主机提供时间戳。 这是一种低精度的时间戳,与主机操作系统的时钟同步。PCAP_TSTAMP_HOST_HIPREC
-host_hiprec
:通过在其上完成捕获主机提供时间戳。 这是一种高精度的时间戳; 它可能会或可能不会与主机操作系统的时钟同步。 这可能是比获取更昂贵PCAP_TSTAMP_HOST_LOWPREC
。PCAP_TSTAMP_ADAPTER
-adapter
:通过在其上完成捕获网络适配器提供时间戳。 这是一个高精度的时间戳,与主机操作系统的时钟同步。PCAP_TSTAMP_ADAPTER_UNSYNCED
-adapter_unsynced
:通过在其上完成捕获网络适配器提供时间戳。 这是一种高精度的时间戳; 它不与主机操作系统的时钟同步。
难道那句“高精度时间戳”在这里是指纳秒值存储在表头的ts.tv_usec
场? 如果是这样, PCAP_TSTAMP_HOST
说:“未指定”,让我怎么在运行时确定是否ts.tv_usec
领域拥有微秒或纳秒? 并且这些是如果默认pcap_set_tstamp_type()
不会被调用?