Поле типа Ethernet всегда имеет байтовый порядок байтов («сеть») в пакете, поэтому для его чтения необходимо преобразовать байтовый порядок байтов в порядок байтов вашего компьютера, используя, например,, ntohs()
.
Это не зависит от порядка байтов хоста, который написал файл;использование ntohs()
будет работать на всех машинах со всеми файлами pcap.
(Имейте в виду, однако, что есть машины, на которые вам нужно будет выбрать поле типа Ethernet - или любой другой многобайтовый интегралполе - байт за раз и собирает эти байты в значение, потому что эти машины перехватывают не выровненные обращения к памяти. См., например, EXTRACT_
макросы / функции в extract.h
в источнике tcpdump.)