Я учусь с Libpcap из этого http://www.tcpdump.org/pcap.html и я столкнулся с проблемой с этим кодом:Программирование с примером PCAP
struct sniff_ethernet {
u_char ether_dhost[ETHER_ADDR_LEN]; /* Destination host address */
u_char ether_shost[ETHER_ADDR_LEN]; /* Source host address */
u_short ether_type; /* IP? ARP? RARP? etc */
};
...
const struct sniff_ethernet *ethernet; /* The ethernet header */
ethernet = (struct sniff_ethernet*)(packet);
Я получаю значения ether_type с измененными байтами. Я думаю, что причина в том, что я использую x86_64 малоконечную машину, где LSB находится на самом низком адресе, а в потоке байтового пакета ether_type MSB находится до LSB. Вопрос в том, что код примера работает только на машинке big-endian или я что-то упускаю?
Я не знал 'ntohs()', и он решил мою проблему, чтобы обнаружить фреймы 802.1Q, так что спасибо! –