Здравствуйте!
Пишу программу, которая должна заменять большой ip-пакет, исходящий с компьютера на несколько меньших определенного размера. В случае же, когда размер пакета слишком мал, дополнять его мусором.
1) Если писать модуль ядра и работать со структурами sk_buff, то получается не сильно переносимо на новые версии ядра и не очень удобно. К тому же глупо работать с sk_buff, чтобы собрать из них ip-пакет, когда он только что на них был разбит.
2) Если использовать библиотеку libipq для работы с iptables, то, как я понимаю, получаешь только первый ethernet фрейм, относящийся к ip-пакету. По нему надо решать, отбросить пакет или нет. Остальные фрагменты пакета в userspace не передаются. Этот вариант тем более не подходит, так как надо работать с ip-пакетом целиком.
Итак, вопрос, как получить доступ к ip-пакету в тот момент, когда он еще не фрагментирован на ethernet фреймы? Или подскажите, пожалуйста, библиотечку, которая умеет выдавать исходящие с компьютера (да подойдут и входящие) ip-пакеты целиком.
Спасибо!