->Посните что имеете в виду. Получить пакет сразу в виде какой-то структуры типа packet {ethernet header, ip header, tcp header, data[]}? Или что?
Да, к примеру как в raw. Или возможно не pcap, а драйвер устройства.
>> Да, к примеру как в raw. Или возможно не pcap, а драйвер устройства.
Я что понял в виду не вы имели!
ИМХО единственный правильный вариант - получать пакет как массив байт (именно так пакеты выдаёт libpcap - указателем на массив "const unsigned char *", насколько я помню) и затем разбирать "вручную". Не пытайтесь преобразовать этот указатель в указатель на какую-либо структуру - это скорее всего будет работать не так как нужно из-за выравнивания полей в структуре. Так же помните что на некоторых архитектурах невозможен доступ к данным по невыровненным адресам =).
->невозможен доступ к данным по невыровненным адресам
например?
что значит "невыровняным"?
или на примере, если можно... или на каких структурах, может оно мне и не нужно...
>Не пытайтесь преобразовать этот указатель в указатель на какую-либо структуру - это скорее всего будет работать не так как нужно из-за выравнивания полей в структуре.
Оно может и будет "намана" работать. Но в один прекрасный момент, после обновления компилятора или смены опций компиляции или попытке собрать под amd64 вместо x86 оно *внезапно* и без всякого предупреждения начнёт работать неправильно.
>попытке собрать под amd64 вместо x86 оно *внезапно* и без всякого предупреждения начнёт работать неправильно.
Исходя из многочисленных постов автора я предположил, что он пишет погремушку для себя и в переносимости нет необходимости. %) Тем более, что это вполне производительное решение для "стандартной" )) архитектуры.