LINUX.ORG.RU

Стэк модулей ядра


0

0

Когда-то давно, когда еще не интересовался kernel modules, видел статю, где написано было про то, что сетевые модули можно выстроить в стек, что бы пакеты шли именно сквозь цепочку. Например: eth0 -> my_module -> some_linux_module -> eth1 Каким образом это реализуется?

Сетевые модули встраиваются в ядро через хуки netfilter'а (nf_register_hook в include/linux/netfilter.h). При регестрации хука устанавливается его приоритет, таким образом все хуки обрабатываются в порядке их приоритетов, то есть получаем нужную цепочуку.

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

хмхм, чего то не понял :( то есть, команда "insmod" занимается регистрацией такой, через хуки? Тогда как, в таком случае, определить приоритет? Я так смутно понимаю, что я определяю приоритет eth0 и linux_module (из моего примера), выбираю нечто среднее и устанавливаю своему модулю. Так ?

P.S. Сори за настойчивость :) Хочется досконально разобратся..

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

В инициализационной функции (которая завется при загрузке модуля) своего модуля регестрируешь хук. insmod завет load_module() из которой потом вызывается инициализационныя функция твоего модуля. Приоритет задаешь явно когда заполняешь структуру хука.

Можно посмотреть в ядре как завется nf_register_hook, еще в каком-то из пятидесятых номеров phrack'а (http://www.phrack.org) была статья, в которой писали свой модуль.

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