LINUX.ORG.RU

pcap output


0

0

Можно ли в pcap получить выходняе данные в виде структуры? Ну и дальше юзать эту структуру...
anonymous

Посните что имеете в виду. Получить пакет сразу в виде какой-то структуры типа packet {ethernet header, ip header, tcp header, data[]}? Или что?

Deleted
()
Ответ на: комментарий от Deleted

->Посните что имеете в виду. Получить пакет сразу в виде какой-то структуры типа packet {ethernet header, ip header, tcp header, data[]}? Или что?
Да, к примеру как в raw. Или возможно не pcap, а драйвер устройства.

anonymous
()
Ответ на: комментарий от anonymous

>> Да, к примеру как в raw. Или возможно не pcap, а драйвер устройства.

Я что понял в виду не вы имели!

ИМХО единственный правильный вариант - получать пакет как массив байт (именно так пакеты выдаёт libpcap - указателем на массив "const unsigned char *", насколько я помню) и затем разбирать "вручную". Не пытайтесь преобразовать этот указатель в указатель на какую-либо структуру - это скорее всего будет работать не так как нужно из-за выравнивания полей в структуре. Так же помните что на некоторых архитектурах невозможен доступ к данным по невыровненным адресам =).

Deleted
()
Ответ на: комментарий от Deleted

->невозможен доступ к данным по невыровненным адресам
например?
что значит "невыровняным"?
или на примере, если можно... или на каких структурах, может оно мне и не нужно...

anonymous
()
Ответ на: комментарий от Deleted

>Не пытайтесь преобразовать этот указатель в указатель на какую-либо структуру - это скорее всего будет работать не так как нужно из-за выравнивания полей в структуре.

Намана все будет работать, нужно пробовать. )

anonymous
()
Ответ на: комментарий от anonymous

>> Намана все будет работать, нужно пробовать. )

Оно может и будет "намана" работать. Но в один прекрасный момент, после обновления компилятора или смены опций компиляции или попытке собрать под amd64 вместо x86 оно *внезапно* и без всякого предупреждения начнёт работать неправильно.

Deleted
()
Ответ на: комментарий от Deleted

>попытке собрать под amd64 вместо x86 оно *внезапно* и без всякого предупреждения начнёт работать неправильно.

Исходя из многочисленных постов автора я предположил, что он пишет погремушку для себя и в переносимости нет необходимости. %) Тем более, что это вполне производительное решение для "стандартной" )) архитектуры.

А за ссылку спасибо.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.