Не копируя весь источник здесь, я нажимаю на pcap_callback
функцию из pcap_dispatch
.caplen
, кажется, показывает правильную длину (при том, что это всегда что-то), но len всегда равен 0. Разве это поле больше не заполнено?Может быть, это ошибка, которую я не фиксирую?
Вот фрагмент ...
void myCallback ( const struct pcap_pkthdr *header, const u_char *packet, void* buffer )
{
if ( (uint16_t)(header->len) != (uint16_t)(header->caplen) )
/* Some Error */
streamObj << "Caplen (" << (uint16_t)(header->caplen) << " != "
<< ") Packet Len (" << (uint16_t)(header->len) << ")";
...
}
Значение header->len
всегда возвращается как ноль.Если требуется дополнительная информация, просто дайте мне знать.
Это было найдено на сервере SUSE Linux 11SP1 под управлением libpcap.so.0.9.8 с ядром 2.6.32.Эта проблема возникает только после обновления SUSE Linux 10SP3 с помощью libpcap.so.0.9.3.
EDIT: Это, похоже, проблема только с libpcap.so.0.9.8.Я переназначил ссылку в / usr / lib / на использование libpcap.so.0.9.3 и проблема исчезла.