Объявление типа функции хука изменяется в зависимости от того, с каким ядром вы компилируете.Этот шаблон выглядит как ядро 2.6 .
Текущая сигнатура функции выглядит следующим образом:
unsigned int nf_hookfn(void *priv, struct sk_buff *skb, const struct nf_hook_state *state);
Вероятно, вы ссылаетесь на старый пример кода для этого -вы должны попытаться найти более новый пример, более согласованный с ядром, с которым вы компилируете.
Однако, как упоминает Пол Р. в комментариях к вопросу, если вы хотите укрепить код, чтобы он мог компилироваться противВ нескольких выпусках ядра Linux вы можете использовать решение , предложенное в этом ответе , которое оборачивает его на основе среды ядра / RHEL, против которой вы строите.
Проблема в том, чтоПодпись функции ловушки netfilter изменялась как минимум три раза, начиная с версии 2.6 - во временном интервале ядра 3.13, во временном интервале ядра 4.1 и снова во временном интервале ядра 4.4, все изменяя сигнатуру.